úÎEKA¨4      !"#$%&'()*+,-./0123"Low 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 System.MIDI.start.  (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)  !"  !"   !"   !455The opaque data type representing a MIDI connection. 66The opaque data type representing a MIDI destination. 71The opaque data type representing a MIDI source. 83Enumerates the MIDI sources present in the system. 98Enumerates the MIDI destinations present in the system. :IThese functions return the name, model and manufacturer of a MIDI source / destination. Note: On Win32, only :5 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 =) A0Sends a short message. The connection must be a 6. B-Sends a system exclusive message. You shouldn't include the starting / trailing bytes 0xF0 and 0xF7. )Note: On Win32, the connection must be a 6 CdStarts a connection. This is required for receiving MIDI messages, and also for starting the clock. DStops a connection. ECloses a MIDI Connection. F(Returns the time elapsed since the last C call, in milisecs. 5  !456789:;<=>?@ABCDEF456789:;<=>?@ABCDEF"5The 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. 'IThese functions return the name, model and manufacturer of a MIDI source / destination. Note: On Win32, only '5 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 #. /-Sends a system exclusive message. You shouldn't include the starting / trailing bytes 0xF0 and 0xF7. )Note: On Win32, the connection must be a # 0dStarts a connection. This is required for receiving MIDI messages, and also for starting the clock. 1Stops a connection. 2Closes a MIDI Connection. 3(Returns the time elapsed since the last 0 call, in milisecs. 4  !"#$%&'()*+,-./0123$#"%&'()*+2./01,-3"#$%&'()*+,-./0123G        !"#$%&'()*+,-./012345#$%&'()*+,-./012346 hmidi-0.1System.MIDI.Base System.MIDISystem.MIDI.Placeholder ShortMessage sm_channelsm_msgsm_byte1sm_byte2ClientCallback MidiEvent MidiMessage UndefinedReset ActiveSensingSRTStop SRTContinueSRTStartSRTClock TuneRequest SongSelect SongPositionSysEx MidiMessage' PitchWheel Aftertouch ProgramChangeCCPolyAftertouchNoteOnNoteOff TimeStamptranslateShortMessageuntranslateShortMessage shortMessage Connection DestinationSourceenumerateSourcesenumerateDestinationsgetNamegetModelgetManufacturer openSourceopenDestination getNextEvent getEventssend sendSysExstartstopclose currentTime MIDIHasName