|
|
|
| Description |
MIDI-File Datatype
Taken from Haskore.
|
|
| Synopsis |
|
|
|
| Documentation |
|
| data T |
| The datatypes for MIDI Files and MIDI Events
| | Constructors | | Instances | |
|
|
| data Division |
| Constructors | | Instances | |
|
|
| type Track = T ElapsedTime Event |
|
| data Type |
| Constructors | | Instances | |
|
|
| type SchedEvent = (ElapsedTime, Event) |
|
| data Event |
| Constructors | | Instances | |
|
|
| type ElapsedTime = Integer |
|
| type Tempo = Int |
|
| type SMPTEHours = Int |
|
| type SMPTEMins = Int |
|
| type SMPTESecs = Int |
|
| type SMPTEFrames = Int |
|
| type SMPTEBits = Int |
|
| data MetaEvent |
| Constructors | | Instances | |
|
|
| maybeMIDIEvent :: Event -> Maybe (Channel, T) |
|
| maybeMetaEvent :: Event -> Maybe MetaEvent |
|
| data Key |
| The following enumerated type lists all the keys in order of their key
signatures from flats to sharps.
(Cf = 7 flats, Gf = 6 flats ... F = 1 flat, C = 0 flats/sharps,
G = 1 sharp, ... Cs = 7 sharps.)
Useful for transposition.
| | Constructors | | KeyCf | | | KeyGf | | | KeyDf | | | KeyAf | | | KeyEf | | | KeyBf | | | KeyF | | | KeyC | | | KeyG | | | KeyD | | | KeyA | | | KeyE | | | KeyB | | | KeyFs | | | KeyCs | |
| Instances | |
|
|
| data Mode |
| The Key Signature specifies a mode, either major or minor.
| | Constructors | | Instances | |
|
|
| defltST :: Tempo |
|
| defltDurT :: ElapsedTime |
| Default duration of a whole note, in seconds; and the default SetTempo
value, in microseconds per quarter note. Both express the default of
120 beats per minute.
|
|
| empty :: T |
| An empty MIDI file.
|
|
| showLines :: T -> String |
| Show the T with one event per line,
suited for comparing MIDIFiles with diff.
Can this be replaced by Sound.MIDI.Load.showFile?
|
|
| changeVelocity :: Double -> T -> T |
| A hack that changes the velocities by a rational factor.
|
|
| getTracks :: T -> [Track] |
|
| resampleTime :: Double -> T -> T |
| Change the time base.
|
|
| showEvent :: Event -> ShowS |
|
| showTime :: ElapsedTime -> ShowS |
|
| sortEvents :: T -> T |
| Sort MIDI note events lexicographically.
This is to make MIDI files unique
and robust against changes in the computation.
In principle Performance.merge should handle this
but due to rounding errors in Float
the order of note events still depends on some internal issues.
The sample rate of MIDI events should be coarse enough
to assert unique results.
|
|
| progChangeBeforeSetTempo :: T -> T |
| Old versions of Haskore.Interface.MIDI.Write
wrote ProgramChange and SetTempo
once at the beginning of a file in that order.
The current version supports multiple ProgramChanges in a track and
thus a ProgramChange is set immediately before a note.
Because of this a ProgramChange is now always after a SetTempo.
For checking equivalence with old MIDI files we can switch this back.
|
|
| Produced by Haddock version 2.1.0 |