|
|
|
|
|
|
Synopsis |
|
|
|
Documentation |
|
The action writeMidiFile stores the datatype MidiFile in a MIDI-File.
It consists of a field for the Ticks per quarter and a MidiTrack (or some).
The function runMidiMusic produces such a track from a MidiMusic, which can
be created using the functions noteMidiMusic, restMidiMusic, appendMidiMusic and
mergeMidiMusic.
MidiNote is used to create note or controller events; it consists of the Midi-Channel
(Chan) and two fields with a MidiValue. |
|
MidiFile |
|
data MidiFile |
Constructors | MidiSync Ticks [MidiTrack] | Some parallel (synchronous) MidiTracks. | MidiSingle Ticks MidiTrack | A single MidiTrack. (Seems not to work yet) | MidiAsync Ticks [MidiTrack] | Some asynchronous MidiTracks. (Seems not to work yet) |
|
|
|
writeMidiFile :: FilePath -> MidiFile -> IO () |
Writes a MidiFile to a File. |
|
type Ticks = Int |
Ticks per Quarter. For some unknown reasons it does not work with any value.
96 seems to be ok. |
|
MidiNote |
|
data MidiNote |
|
|
type Chan = Word8 |
A Midi-Channel (0-15) |
|
type MidiValue = Word8 |
A Midi-Value (0-127) |
|
MidiMusic |
|
type MidiMusic = [(Delta, Maybe MidiEvent)] |
A kind of extended MidiTrack type, that allows delta-times without events
(will be summed up by converting to MidiTrack). |
|
noteMidiMusic :: Int -> MidiNote -> MidiMusic |
Creates a note or controller event with given length (relative to Ticks).
The length means the delta-time between note-on and note-off resp. the time after
the controller event. |
|
restMidiMusic :: Int -> MidiMusic |
A pause with given length. |
|
appendMidiMusic :: MidiMusic -> MidiMusic -> MidiMusic |
Sequencial composition of MidiMusic. |
|
mergeMidiMusic :: MidiMusic -> MidiMusic -> MidiMusic |
Parallel composition of MidiMusic. |
|
runMidiMusic :: MidiMusic -> MidiTrack |
Converts a MidiMusic to a MidiTrack. |
|
MidiTrack |
|
type MidiTrack = [(Delta, MidiEvent)] |
A sequence of MidiEvents with a delta-time which means the number of ticks
before the event happens (relative to the last event). |
|
type Delta = Int |
|
MidiEvent |
|
data MidiEvent |
|
|
Encoding |
|
encodeMidiFile :: MidiFile -> [Word8] |
|
midiHeaderSync :: [Word8] |
|
midiHeaderSingle :: [Word8] |
|
midiHeaderAsync :: [Word8] |
|
encodeMidiTrack :: MidiTrack -> [Word8] |
|
encodeDelta :: Int -> [Word8] |
|
encodeMidiDeltaEvent :: (Delta, MidiEvent) -> [Word8] |
|
encodeEvent :: MidiEvent -> [Word8] |
|
lastByte :: Int -> Word8 |
|
nextByte :: Int -> Int |
|
toBytes :: Int -> Int -> [Word8] |
|
Produced by Haddock version HADDOCK_VERSION |