Portability | non-portable (TF,GNTD) |
---|---|
Stability | experimental |
Maintainer | hans@hanshoglund.se |
Safe Haskell | None |
- class HasMidi a where
- type HasMidiPart a = (HasPart' a, HasMidiProgram (Part a))
- class HasMidiProgram a where
- getMidiChannel :: a -> Channel
- getMidiProgram :: a -> Preset
- toMidi :: forall a. (HasMidiPart a, HasMidi a) => Score a -> Midi
- toMidiTrack :: HasMidi a => Score a -> Track Message
- writeMidi :: (HasMidiPart a, HasMidi a) => FilePath -> Score a -> IO ()
- playMidiIO :: HasMidi a => String -> Score a -> IO ()
Documentation
Class of types that can be converted to MIDI.
Numeric types are interpreted as notes with a default velocity, pairs are
interpreted as (pitch, velocity)
pairs.
Minimal definition: getMidi
. Given getMidiScore
, getMidi
can be implemented
as getMidiScore . return
.
getMidi :: a -> Score MessageSource
Convert a value to a MIDI score.
Typically, generates an on event using note
followed by an optional off event.
getMidiScore :: Score a -> Score MessageSource
Convert a score to a MIDI score. The default definition can be overriden for efficiency.
HasMidi Double | |
HasMidi Float | |
HasMidi Int | |
HasMidi Integer | |
HasMidi Message | |
Integral a => HasMidi (Ratio a) | |
HasMidi a => HasMidi (Maybe a) | |
HasMidi a => HasMidi (Behavior a) | |
HasMidi a => HasMidi (TieT a) | |
HasMidi a => HasMidi (ChordT a) | |
HasMidi a => HasMidi (DynamicT a) | |
HasMidi a => HasMidi (ArticulationT a) | |
HasMidi a => HasMidi (SlideT a) | |
HasMidi a => HasMidi (HarmonicT a) | |
HasMidi a => HasMidi (TextT a) | |
HasMidi a => HasMidi (TremoloT a) | |
HasMidi (Integer, Integer) | |
HasMidi a => HasMidi (PartT n a) |
type HasMidiPart a = (HasPart' a, HasMidiProgram (Part a))Source
Class of types with MIDI-compatible parts.
class HasMidiProgram a whereSource
Class of part types with an associated MIDI program number.
getMidiChannel :: a -> ChannelSource
getMidiProgram :: a -> PresetSource
toMidi :: forall a. (HasMidiPart a, HasMidi a) => Score a -> MidiSource
Convert a score to a MIDI file representation.
toMidiTrack :: HasMidi a => Score a -> Track MessageSource
Convert a score to a track of MIDI messages.