fadno-1.1.8: Minimal library for music generation and notation
Safe HaskellNone
LanguageHaskell2010

Fadno.Midi

Synopsis

Documentation

type MidiData = T Source #

Serializable midi data.

type IDur = Int Source #

class MidiNotes a where Source #

Convert some note value to midi-ready values.

Methods

toMidiNotes :: a -> [([IPitch], IDur)] Source #

Instances

Instances details
MidiNotes [([IPitch], IDur)] Source # 
Instance details

Defined in Fadno.Midi

Methods

toMidiNotes :: [([IPitch], IDur)] -> [([IPitch], IDur)] Source #

(Integral p, Integral d, Traversable t) => MidiNotes (t (Note p d)) Source # 
Instance details

Defined in Fadno.Midi

Methods

toMidiNotes :: t (Note p d) -> [([IPitch], IDur)] Source #

(Integral p, Traversable c, Integral d, Traversable t) => MidiNotes (t (Note (c p) d)) Source # 
Instance details

Defined in Fadno.Midi

Methods

toMidiNotes :: t (Note (c p) d) -> [([IPitch], IDur)] Source #

newtype MidiTempo Source #

Tempo in microseconds per quarter. See fromBPM.

Constructors

MidiTempo Int 

Instances

Instances details
Bounded MidiTempo Source # 
Instance details

Defined in Fadno.Midi

Enum MidiTempo Source # 
Instance details

Defined in Fadno.Midi

Eq MidiTempo Source # 
Instance details

Defined in Fadno.Midi

Integral MidiTempo Source # 
Instance details

Defined in Fadno.Midi

Num MidiTempo Source # 
Instance details

Defined in Fadno.Midi

Ord MidiTempo Source # 
Instance details

Defined in Fadno.Midi

Real MidiTempo Source # 
Instance details

Defined in Fadno.Midi

Show MidiTempo Source # 
Instance details

Defined in Fadno.Midi

newtype MidiChan Source #

Midi channel, 1-16 presumably.

Constructors

MidiChan Int 

Instances

Instances details
Bounded MidiChan Source # 
Instance details

Defined in Fadno.Midi

Enum MidiChan Source # 
Instance details

Defined in Fadno.Midi

Eq MidiChan Source # 
Instance details

Defined in Fadno.Midi

Integral MidiChan Source # 
Instance details

Defined in Fadno.Midi

Num MidiChan Source # 
Instance details

Defined in Fadno.Midi

Ord MidiChan Source # 
Instance details

Defined in Fadno.Midi

Real MidiChan Source # 
Instance details

Defined in Fadno.Midi

Show MidiChan Source # 
Instance details

Defined in Fadno.Midi

newtype MidiVelocity Source #

note velocity, 0-127

Constructors

MidiVelocity Int 

Instances

Instances details
Bounded MidiVelocity Source # 
Instance details

Defined in Fadno.Midi

Enum MidiVelocity Source # 
Instance details

Defined in Fadno.Midi

Eq MidiVelocity Source # 
Instance details

Defined in Fadno.Midi

Integral MidiVelocity Source # 
Instance details

Defined in Fadno.Midi

Num MidiVelocity Source # 
Instance details

Defined in Fadno.Midi

Ord MidiVelocity Source # 
Instance details

Defined in Fadno.Midi

Real MidiVelocity Source # 
Instance details

Defined in Fadno.Midi

Show MidiVelocity Source # 
Instance details

Defined in Fadno.Midi

newtype MidiProgram Source #

Midi program. See fromInstrument.

Constructors

MidiProgram Int 

Instances

Instances details
Bounded MidiProgram Source # 
Instance details

Defined in Fadno.Midi

Enum MidiProgram Source # 
Instance details

Defined in Fadno.Midi

Eq MidiProgram Source # 
Instance details

Defined in Fadno.Midi

Integral MidiProgram Source # 
Instance details

Defined in Fadno.Midi

Num MidiProgram Source # 
Instance details

Defined in Fadno.Midi

Ord MidiProgram Source # 
Instance details

Defined in Fadno.Midi

Real MidiProgram Source # 
Instance details

Defined in Fadno.Midi

Show MidiProgram Source # 
Instance details

Defined in Fadno.Midi

newtype MidiTicks Source #

Midi ticks per quarter.

Constructors

MidiTicks Int 

Instances

Instances details
Bounded MidiTicks Source # 
Instance details

Defined in Fadno.Midi

Enum MidiTicks Source # 
Instance details

Defined in Fadno.Midi

Eq MidiTicks Source # 
Instance details

Defined in Fadno.Midi

Integral MidiTicks Source # 
Instance details

Defined in Fadno.Midi

Num MidiTicks Source # 
Instance details

Defined in Fadno.Midi

Ord MidiTicks Source # 
Instance details

Defined in Fadno.Midi

Real MidiTicks Source # 
Instance details

Defined in Fadno.Midi

Show MidiTicks Source # 
Instance details

Defined in Fadno.Midi

toTicks :: MidiTicks -> Iso' Rational IDur Source #

Rational to ticks

data MidiEvent Source #

Internal type for midi event or pad.

Constructors

Pad IDur 
Event T 

type MidiTrack = Track Source #

cover our tracks

writeMidiFile :: FilePath -> MidiData -> IO () Source #

write to disk.

showMidiFile :: FilePath -> IO () Source #

debug midi file.

midi :: MidiTicks -> [MidiTrack] -> MidiData Source #

Make midi file data

makeTrackFull :: MidiNotes notes => MidiTempo -> MidiChan -> MidiProgram -> MidiVelocity -> notes -> MidiTrack Source #

make a standard track which specifies tempo and program. | see makeTrack for more control.

fromBPM :: (Real a, Show a) => a -> MidiTempo Source #

BPM to microseconds per quarter note.

makeTrack :: [MidiEvent] -> MidiTrack Source #

make a track from track events.

toNoteEvents :: MidiNotes notes => MidiChan -> MidiVelocity -> notes -> [MidiEvent] Source #

turn notes into track events.

voiceEvent :: MidiChan -> T -> MidiEvent Source #

create a Voice MIDI event

setTempo :: MidiTempo -> MidiEvent Source #

tempo meta event.

metaEvent :: T -> MidiEvent Source #

create a Meta MIDI event

midiEvent :: MidiChan -> Body -> MidiEvent Source #

create a Voice or Mode MIDI event.

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.

noteEvent :: (Pitch -> Velocity -> T) -> MidiChan -> MidiVelocity -> IPitch -> MidiEvent Source #

note on or note off event.

playMidi :: MidiNotes n => FilePath -> Int -> [(Instrument, n)] -> IO () Source #