úÎ/)*h      Safe-InferredLow level stuff. &Type of the user callback function. 3The type representing a timestamped MIDI message. = Time is measured in milisecs elapsed since the last call to . (The type representing a MIDI message. #not including the bytes 0xf0, 0xf7 +first argument is the MIDI channel (1..16) A "regular" MIDI message. Remark: \ not having a velocity field is a design decision, and a questionable one. According to the o MIDI standard, NoteOff also has a velocity. However, most keyboards do not use this feature (send the default m value 64), and there are keyboards which do not send NoteOff messages at all, but send NoteOn messages with A zero velocity instead (for example the EMU Xboard series). I don''t know what would be a good solution. i At the moment, the code auto-translates NoteOn messages with zero velocity to NoteOff messages, and the \ NoteOff velocity is ignored. This behaviour can be inverted with the Cabal flag NoNoteOff. 'Pitch wheel (value, from -8192..+8191) Global aftertouch (pressure) Program Change (program) #Control Change (controller, value) (Polyphonic key pressure (key, pressure) Note On (key, velocity) Note Off (key) $!"#$%&'()*+,-./0 123456"!"#$%&'()*+,-./0 1256 !"#$%& 0/.-,+*)(' 123456 Safe-Inferred789:;<=>?@ABCDEFGHIJKLM5!"#$%&'()*+,-./0 125678:<>?@ABCDEFGHIJKL789:;<=>?@ABCDEFGHIJKLMNone5The opaque data type representing a MIDI connection. 6The opaque data type representing a MIDI destination. 1The opaque data type representing a MIDI source. 3Enumerates the MIDI sources present in the system. 8Enumerates the MIDI destinations present in the system. NIThese functions return the name, model and manufacturer of a MIDI source / destination. Note: On Win32, only N5 returns a somewhat meaningful string at the moment. Opens a MIDI Source. g There are two possibilites to receive MIDI messages. The user can either support a callback function, e or get the messages from an asynchronous buffer. However, mixing the two approaches is not allowed. Opens a MIDI Destination. 9Gets the next event from a buffered connection (see also  ) .Gets all the events from the buffer (see also  ) 0Sends a short message. The connection must be a . dStarts a connection. This is required for receiving MIDI messages, and also for starting the clock. Stops a connection. Closes a MIDI Stream. (Returns the time elapsed since the last  call, in milisecs. "OPQRST NUV WXYZ[\   OPQRST NUV WXYZ[\]         !"#$% &'()*+,-./01234567789:;<=>:?@A<;BCDEFGH hamid-0.8 System.MIDISystem.MIDI.BasestartSystem.MIDI.PlaceholderStream DestinationSource MidiHasNamename MidiEvent MidiMessageMidiTimesources destinations openSourceopenDestination getNextEvent getEventssendstopclose currentTime ShortMessageClientCallbackSysEx MidiMessage'NoteOff PitchWheel Aftertouch ProgramChangeCCPolyAftertouchNoteOn sm_channelsm_msgsm_byte1sm_byte2 UndefinedReset ActiveSensingSRTStop SRTContinueSRTStartSRTClock TuneRequest SongSelect SongPosition TimeStamptranslateShortMessage translate' translate''untranslateShortMessage shortMessage MIDIHasName ConnectionenumerateSourcesenumerateDestinationsgetNamegetManufacturergetModel sendSysExnoImpl getStreamgetDestination getSourceimpMsgexpMsg$fShowDestination $fShowSource$fMidiHasNameDestination$fMidiHasNameSource