Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- type MidiData = T
- type IPitch = Int
- type IDur = Int
- class MidiNotes a where
- toMidiNotes :: a -> [([IPitch], IDur)]
- newtype MidiTempo = MidiTempo Int
- newtype MidiChan = MidiChan Int
- newtype MidiVelocity = MidiVelocity Int
- newtype MidiProgram = MidiProgram Int
- newtype MidiTicks = MidiTicks Int
- toTicks :: MidiTicks -> Iso' Rational IDur
- data MidiEvent
- type MidiTrack = Track
- writeMidiFile :: FilePath -> MidiData -> IO ()
- showMidiFile :: FilePath -> IO ()
- midi :: MidiTicks -> [MidiTrack] -> MidiData
- makeTrackFull :: MidiNotes notes => MidiTempo -> MidiChan -> MidiProgram -> MidiVelocity -> notes -> MidiTrack
- fromBPM :: (Real a, Show a) => a -> MidiTempo
- fromInstrument :: Instrument -> MidiProgram
- makeTrack :: [MidiEvent] -> MidiTrack
- toNoteEvents :: MidiNotes notes => MidiChan -> MidiVelocity -> notes -> [MidiEvent]
- voiceEvent :: MidiChan -> T -> MidiEvent
- setTempo :: MidiTempo -> MidiEvent
- metaEvent :: T -> MidiEvent
- midiEvent :: MidiChan -> Body -> MidiEvent
- programChange :: MidiChan -> MidiProgram -> MidiEvent
- noteEvents :: MidiChan -> MidiVelocity -> ([IPitch], IDur) -> [MidiEvent]
- noteEvent :: (Pitch -> Velocity -> T) -> MidiChan -> MidiVelocity -> IPitch -> MidiEvent
- noteOn :: MidiChan -> MidiVelocity -> IPitch -> MidiEvent
- noteOff :: MidiChan -> MidiVelocity -> IPitch -> MidiEvent
- test1 :: IO ()
- playMidi :: MidiNotes n => FilePath -> Int -> [(Instrument, n)] -> IO ()
Documentation
class MidiNotes a where Source #
Convert some note value to midi-ready values.
toMidiNotes :: a -> [([IPitch], IDur)] Source #
Instances
MidiNotes [([IPitch], IDur)] Source # | |
Defined in Fadno.Midi | |
(Integral p, Integral d, Traversable t) => MidiNotes (t (Note p d)) Source # | |
Defined in Fadno.Midi | |
(Integral p, Traversable c, Integral d, Traversable t) => MidiNotes (t (Note (c p) d)) Source # | |
Defined in Fadno.Midi |
Tempo in microseconds per quarter. See fromBPM
.
Instances
Bounded MidiTempo Source # | |
Enum MidiTempo Source # | |
Defined in Fadno.Midi succ :: MidiTempo -> MidiTempo # pred :: MidiTempo -> MidiTempo # fromEnum :: MidiTempo -> Int # enumFrom :: MidiTempo -> [MidiTempo] # enumFromThen :: MidiTempo -> MidiTempo -> [MidiTempo] # enumFromTo :: MidiTempo -> MidiTempo -> [MidiTempo] # enumFromThenTo :: MidiTempo -> MidiTempo -> MidiTempo -> [MidiTempo] # | |
Eq MidiTempo Source # | |
Integral MidiTempo Source # | |
Defined in Fadno.Midi | |
Num MidiTempo Source # | |
Ord MidiTempo Source # | |
Defined in Fadno.Midi | |
Real MidiTempo Source # | |
Defined in Fadno.Midi toRational :: MidiTempo -> Rational # | |
Show MidiTempo Source # | |
Midi channel, 1-16 presumably.
Instances
Bounded MidiChan Source # | |
Enum MidiChan Source # | |
Eq MidiChan Source # | |
Integral MidiChan Source # | |
Defined in Fadno.Midi | |
Num MidiChan Source # | |
Ord MidiChan Source # | |
Real MidiChan Source # | |
Defined in Fadno.Midi toRational :: MidiChan -> Rational # | |
Show MidiChan Source # | |
newtype MidiVelocity Source #
note velocity, 0-127
Instances
newtype MidiProgram Source #
Midi program. See fromInstrument
.
Instances
Midi ticks per quarter.
Instances
Bounded MidiTicks Source # | |
Enum MidiTicks Source # | |
Defined in Fadno.Midi succ :: MidiTicks -> MidiTicks # pred :: MidiTicks -> MidiTicks # fromEnum :: MidiTicks -> Int # enumFrom :: MidiTicks -> [MidiTicks] # enumFromThen :: MidiTicks -> MidiTicks -> [MidiTicks] # enumFromTo :: MidiTicks -> MidiTicks -> [MidiTicks] # enumFromThenTo :: MidiTicks -> MidiTicks -> MidiTicks -> [MidiTicks] # | |
Eq MidiTicks Source # | |
Integral MidiTicks Source # | |
Defined in Fadno.Midi | |
Num MidiTicks Source # | |
Ord MidiTicks Source # | |
Defined in Fadno.Midi | |
Real MidiTicks Source # | |
Defined in Fadno.Midi toRational :: MidiTicks -> Rational # | |
Show MidiTicks Source # | |
showMidiFile :: FilePath -> IO () Source #
debug midi file.
makeTrackFull :: MidiNotes notes => MidiTempo -> MidiChan -> MidiProgram -> MidiVelocity -> notes -> MidiTrack Source #
make a standard track which specifies tempo and program.
| see makeTrack
for more control.
fromInstrument :: Instrument -> MidiProgram Source #
convert a General MIDI Instrument
.
toNoteEvents :: MidiNotes notes => MidiChan -> MidiVelocity -> notes -> [MidiEvent] Source #
turn notes into track events.
programChange :: MidiChan -> MidiProgram -> MidiEvent Source #
program change MIDI Voice event.
noteEvents :: MidiChan -> MidiVelocity -> ([IPitch], IDur) -> [MidiEvent] Source #
note on + note off events, using Pad
to carve out space.