MIDI messages in MIDI files. They are not a superset of the messages, that are used for real-time communication between MIDI devices. For these refer to Sound.MIDI.Message. Namely System Common and System Real Time messages are missing. If you need both real-time and file messages (say for ALSA sequencer), you need a custom datatype.
- data T
- get :: C parser => Fallible (T parser) T
- put :: C writer => T -> T writer
- type TrackEvent = (ElapsedTime, T)
- getTrackEvent :: C parser => Fallible (T parser) TrackEvent
- type ElapsedTime = Integer
- fromElapsedTime :: ElapsedTime -> Integer
- toElapsedTime :: Integer -> ElapsedTime
- mapBody :: (T -> T) -> TrackEvent -> TrackEvent
- maybeMIDIEvent :: T -> Maybe T
- maybeMetaEvent :: T -> Maybe T
- maybeVoice :: T -> Maybe (Channel, T)
- mapVoice :: (T -> T) -> T -> T
The following functions encode various
into the raw data of a standard MIDI file.
Each event is preceded by the delta time: the time in ticks between the last event and the current event. Parse a time and an event, ignoring System Exclusive messages.