Event.typ as enumeration Can we parse it away and avoid it in the Event structure? The problem is that the sub-structures are used for different purposes and there fields are not always completely used. The most clean, but hardly managable solution would be to give one constructor per event type, or bundle only the ones, that have the same sub-structure (NoteOn/NoteOff, Usr*) unify peeking and poking by a peek/poke function and two helper functions which separate the things again This is cumbersome since record accessors are read-only. incremental writing and reading of C structures Why is Write mode used for both receiving and sending messages? receiveMIDIEvents should call an action per received message and drop unsafeInterleaveIO Can we turn the type to 'MonadIO io' instead of fixed 'IO' ? This would allow users to track a state without IORef. abort music on CTRL-C integrate SuperCollider example better error message for non-existing port ALSA-Bugtracker?