hommage-0.0.5: doc/Sound.Hommage.Midi.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--Rendered using the Haskell Html Library v0.2-->
<HTML
><HEAD
><TITLE
>Sound.Hommage.Midi</TITLE
><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"
></HEAD
><BODY
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD CLASS = "topbar"
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD
><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "
></TD
><TD CLASS = "title"
></TD
><TD CLASS = "topbut"
><A HREF = "Sound.Hommage.html"
>Parent</A
></TD
><TD CLASS = "topbut"
><A HREF = "index.html"
>Contents</A
></TD
><TD CLASS = "topbut"
><A HREF = "doc-index.html"
>Index</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS = "modulebar"
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD
><FONT SIZE = "6"
>Sound.Hommage.Midi</FONT
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD CLASS = "section4"
><B
>Contents</B
></TD
></TR
><TR
><TD
><DL
><DT
><A HREF = "#1"
> MidiFile</A
></DT
><DT
><A HREF = "#2"
> MidiNote</A
></DT
><DT
><A HREF = "#3"
> MidiMusic </A
></DT
><DT
><A HREF = "#4"
> MidiTrack</A
></DT
><DT
><A HREF = "#5"
> MidiEvent</A
></DT
><DT
><A HREF = "#6"
> Encoding</A
></DT
></DL
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "section1"
>Synopsis</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "body"
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD CLASS = "decl"
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>data</SPAN
> <A HREF = "#t%3AMidiFile"
>MidiFile</A
> </TD
></TR
><TR
><TD CLASS = "body"
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD CLASS = "decl"
>= <A HREF = "#v%3AMidiSync"
>MidiSync</A
> <A HREF = "Sound.Hommage.Midi.html#t%3ATicks"
>Ticks</A
> [<A HREF = "Sound.Hommage.Midi.html#t%3AMidiTrack"
>MidiTrack</A
>]</TD
></TR
><TR
><TD CLASS = "decl"
>| <A HREF = "#v%3AMidiSingle"
>MidiSingle</A
> <A HREF = "Sound.Hommage.Midi.html#t%3ATicks"
>Ticks</A
> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiTrack"
>MidiTrack</A
></TD
></TR
><TR
><TD CLASS = "decl"
>| <A HREF = "#v%3AMidiAsync"
>MidiAsync</A
> <A HREF = "Sound.Hommage.Midi.html#t%3ATicks"
>Ticks</A
> [<A HREF = "Sound.Hommage.Midi.html#t%3AMidiTrack"
>MidiTrack</A
>]</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AwriteMidiFile"
>writeMidiFile</A
> :: FilePath -> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiFile"
>MidiFile</A
> -> IO ()</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>type</SPAN
> <A HREF = "#t%3ATicks"
>Ticks</A
> = Int</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>data</SPAN
> <A HREF = "#t%3AMidiNote"
>MidiNote</A
> </TD
></TR
><TR
><TD CLASS = "body"
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD CLASS = "decl"
>= <A HREF = "#v%3AMidiNote"
>MidiNote</A
> <A HREF = "Sound.Hommage.Midi.html#t%3AChan"
>Chan</A
> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
></TD
></TR
><TR
><TD CLASS = "decl"
>| <A HREF = "#v%3AMidiCtrl"
>MidiCtrl</A
> <A HREF = "Sound.Hommage.Midi.html#t%3AChan"
>Chan</A
> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>type</SPAN
> <A HREF = "#t%3AChan"
>Chan</A
> = Word8</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>type</SPAN
> <A HREF = "#t%3AMidiValue"
>MidiValue</A
> = Word8</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>type</SPAN
> <A HREF = "#t%3AMidiMusic"
>MidiMusic</A
> = [(<A HREF = "Sound.Hommage.Midi.html#t%3ADelta"
>Delta</A
>, Maybe <A HREF = "Sound.Hommage.Midi.html#t%3AMidiEvent"
>MidiEvent</A
>)]</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AnoteMidiMusic"
>noteMidiMusic</A
> :: Int -> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiNote"
>MidiNote</A
> -> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiMusic"
>MidiMusic</A
></TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3ArestMidiMusic"
>restMidiMusic</A
> :: Int -> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiMusic"
>MidiMusic</A
></TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AappendMidiMusic"
>appendMidiMusic</A
> :: <A HREF = "Sound.Hommage.Midi.html#t%3AMidiMusic"
>MidiMusic</A
> -> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiMusic"
>MidiMusic</A
> -> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiMusic"
>MidiMusic</A
></TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AmergeMidiMusic"
>mergeMidiMusic</A
> :: <A HREF = "Sound.Hommage.Midi.html#t%3AMidiMusic"
>MidiMusic</A
> -> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiMusic"
>MidiMusic</A
> -> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiMusic"
>MidiMusic</A
></TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3ArunMidiMusic"
>runMidiMusic</A
> :: <A HREF = "Sound.Hommage.Midi.html#t%3AMidiMusic"
>MidiMusic</A
> -> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiTrack"
>MidiTrack</A
></TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>type</SPAN
> <A HREF = "#t%3AMidiTrack"
>MidiTrack</A
> = [(<A HREF = "Sound.Hommage.Midi.html#t%3ADelta"
>Delta</A
>, <A HREF = "Sound.Hommage.Midi.html#t%3AMidiEvent"
>MidiEvent</A
>)]</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>type</SPAN
> <A HREF = "#t%3ADelta"
>Delta</A
> = Int</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>data</SPAN
> <A HREF = "#t%3AMidiEvent"
>MidiEvent</A
> </TD
></TR
><TR
><TD CLASS = "body"
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD CLASS = "decl"
>= <A HREF = "#v%3AMidiNoteOff"
>MidiNoteOff</A
> !<A HREF = "Sound.Hommage.Midi.html#t%3AChan"
>Chan</A
> !<A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
> !<A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
></TD
></TR
><TR
><TD CLASS = "decl"
>| <A HREF = "#v%3AMidiNoteOn"
>MidiNoteOn</A
> !<A HREF = "Sound.Hommage.Midi.html#t%3AChan"
>Chan</A
> !<A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
> !<A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
></TD
></TR
><TR
><TD CLASS = "decl"
>| <A HREF = "#v%3AMidiKeyAfter"
>MidiKeyAfter</A
> !<A HREF = "Sound.Hommage.Midi.html#t%3AChan"
>Chan</A
> !<A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
> !<A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
></TD
></TR
><TR
><TD CLASS = "decl"
>| <A HREF = "#v%3AMidiControl"
>MidiControl</A
> !<A HREF = "Sound.Hommage.Midi.html#t%3AChan"
>Chan</A
> !<A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
> !<A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
></TD
></TR
><TR
><TD CLASS = "decl"
>| <A HREF = "#v%3AMidiEndOfTrack"
>MidiEndOfTrack</A
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AencodeMidiFile"
>encodeMidiFile</A
> :: <A HREF = "Sound.Hommage.Midi.html#t%3AMidiFile"
>MidiFile</A
> -> [Word8]</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AmidiHeaderSync"
>midiHeaderSync</A
> :: [Word8]</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AmidiHeaderSingle"
>midiHeaderSingle</A
> :: [Word8]</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AmidiHeaderAsync"
>midiHeaderAsync</A
> :: [Word8]</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AencodeMidiTrack"
>encodeMidiTrack</A
> :: <A HREF = "Sound.Hommage.Midi.html#t%3AMidiTrack"
>MidiTrack</A
> -> [Word8]</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AencodeDelta"
>encodeDelta</A
> :: Int -> [Word8]</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AencodeMidiDeltaEvent"
>encodeMidiDeltaEvent</A
> :: (<A HREF = "Sound.Hommage.Midi.html#t%3ADelta"
>Delta</A
>, <A HREF = "Sound.Hommage.Midi.html#t%3AMidiEvent"
>MidiEvent</A
>) -> [Word8]</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AencodeEvent"
>encodeEvent</A
> :: <A HREF = "Sound.Hommage.Midi.html#t%3AMidiEvent"
>MidiEvent</A
> -> [Word8]</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AlastByte"
>lastByte</A
> :: Int -> Word8</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AnextByte"
>nextByte</A
> :: Int -> Int</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AtoBytes"
>toBytes</A
> :: Int -> Int -> [Word8]</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "section1"
>Documentation</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "doc"
> The action <TT
><A HREF = "Sound.Hommage.Midi.html#v%3AwriteMidiFile"
>writeMidiFile</A
></TT
> stores the datatype <TT
><A HREF = "Sound.Hommage.Midi.html#t%3AMidiFile"
>MidiFile</A
></TT
> in a MIDI-File.
It consists of a field for the <TT
><A HREF = "Sound.Hommage.Midi.html#t%3ATicks"
>Ticks</A
></TT
> per quarter and a <TT
><A HREF = "Sound.Hommage.Midi.html#t%3AMidiTrack"
>MidiTrack</A
></TT
> (or some).
The function <TT
><A HREF = "Sound.Hommage.Midi.html#v%3ArunMidiMusic"
>runMidiMusic</A
></TT
> produces such a track from a <TT
><A HREF = "Sound.Hommage.Midi.html#t%3AMidiMusic"
>MidiMusic</A
></TT
>, which can
be created using the functions <TT
><A HREF = "Sound.Hommage.Midi.html#v%3AnoteMidiMusic"
>noteMidiMusic</A
></TT
>, <TT
><A HREF = "Sound.Hommage.Midi.html#v%3ArestMidiMusic"
>restMidiMusic</A
></TT
>, <TT
><A HREF = "Sound.Hommage.Midi.html#v%3AappendMidiMusic"
>appendMidiMusic</A
></TT
> and
<TT
><A HREF = "Sound.Hommage.Midi.html#v%3AmergeMidiMusic"
>mergeMidiMusic</A
></TT
>.
<TT
><A HREF = "Sound.Hommage.Midi.html#t%3AMidiNote"
>MidiNote</A
></TT
> is used to create note or controller events; it consists of the Midi-Channel
(<TT
><A HREF = "Sound.Hommage.Midi.html#t%3AChan"
>Chan</A
></TT
>) and two fields with a <TT
><A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
></TT
>.</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "section1"
><A NAME = "1"
> MidiFile</A
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>data</SPAN
> <A NAME = "t%3AMidiFile"
></A
><B
>MidiFile</B
> </TD
></TR
><TR
><TD CLASS = "body"
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD CLASS = "section4"
>Constructors</TD
></TR
><TR
><TD CLASS = "body"
><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
><TR
><TD CLASS = "decl"
><A NAME = "v%3AMidiSync"
></A
><B
>MidiSync</B
> <A HREF = "Sound.Hommage.Midi.html#t%3ATicks"
>Ticks</A
> [<A HREF = "Sound.Hommage.Midi.html#t%3AMidiTrack"
>MidiTrack</A
>]</TD
><TD CLASS = "rdoc"
> Some parallel (synchronous) MidiTracks. </TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AMidiSingle"
></A
><B
>MidiSingle</B
> <A HREF = "Sound.Hommage.Midi.html#t%3ATicks"
>Ticks</A
> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiTrack"
>MidiTrack</A
></TD
><TD CLASS = "rdoc"
> A single MidiTrack. (Seems not to work yet)</TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AMidiAsync"
></A
><B
>MidiAsync</B
> <A HREF = "Sound.Hommage.Midi.html#t%3ATicks"
>Ticks</A
> [<A HREF = "Sound.Hommage.Midi.html#t%3AMidiTrack"
>MidiTrack</A
>]</TD
><TD CLASS = "rdoc"
> Some asynchronous MidiTracks. (Seems not to work yet)</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AwriteMidiFile"
></A
><B
>writeMidiFile</B
> :: FilePath -> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiFile"
>MidiFile</A
> -> IO ()</TD
></TR
><TR
><TD CLASS = "doc"
> Writes a <TT
><A HREF = "Sound.Hommage.Midi.html#t%3AMidiFile"
>MidiFile</A
></TT
> to a File.</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>type</SPAN
> <A NAME = "t%3ATicks"
></A
><B
>Ticks</B
> = Int</TD
></TR
><TR
><TD CLASS = "doc"
> Ticks per Quarter. For some unknown reasons it does not work with any value.
96 seems to be ok. </TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "section1"
><A NAME = "2"
> MidiNote</A
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>data</SPAN
> <A NAME = "t%3AMidiNote"
></A
><B
>MidiNote</B
> </TD
></TR
><TR
><TD CLASS = "body"
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD CLASS = "section4"
>Constructors</TD
></TR
><TR
><TD CLASS = "body"
><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
><TR
><TD CLASS = "decl"
><A NAME = "v%3AMidiNote"
></A
><B
>MidiNote</B
> <A HREF = "Sound.Hommage.Midi.html#t%3AChan"
>Chan</A
> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
></TD
><TD CLASS = "rdoc"
> A note with pitch and volume</TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AMidiCtrl"
></A
><B
>MidiCtrl</B
> <A HREF = "Sound.Hommage.Midi.html#t%3AChan"
>Chan</A
> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
></TD
><TD CLASS = "rdoc"
> Controllernumber and value</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>type</SPAN
> <A NAME = "t%3AChan"
></A
><B
>Chan</B
> = Word8</TD
></TR
><TR
><TD CLASS = "doc"
> A Midi-Channel (0-15)</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>type</SPAN
> <A NAME = "t%3AMidiValue"
></A
><B
>MidiValue</B
> = Word8</TD
></TR
><TR
><TD CLASS = "doc"
> A Midi-Value (0-127)</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "section1"
><A NAME = "3"
> MidiMusic </A
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>type</SPAN
> <A NAME = "t%3AMidiMusic"
></A
><B
>MidiMusic</B
> = [(<A HREF = "Sound.Hommage.Midi.html#t%3ADelta"
>Delta</A
>, Maybe <A HREF = "Sound.Hommage.Midi.html#t%3AMidiEvent"
>MidiEvent</A
>)]</TD
></TR
><TR
><TD CLASS = "doc"
> A kind of extended MidiTrack type, that allows delta-times without events
(will be summed up by converting to <TT
><A HREF = "Sound.Hommage.Midi.html#t%3AMidiTrack"
>MidiTrack</A
></TT
>).</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AnoteMidiMusic"
></A
><B
>noteMidiMusic</B
> :: Int -> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiNote"
>MidiNote</A
> -> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiMusic"
>MidiMusic</A
></TD
></TR
><TR
><TD CLASS = "doc"
> Creates a note or controller event with given length (relative to <TT
><A HREF = "Sound.Hommage.Midi.html#t%3ATicks"
>Ticks</A
></TT
>).
The length means the delta-time between note-on and note-off resp. the time after
the controller event.</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3ArestMidiMusic"
></A
><B
>restMidiMusic</B
> :: Int -> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiMusic"
>MidiMusic</A
></TD
></TR
><TR
><TD CLASS = "doc"
> A pause with given length.</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AappendMidiMusic"
></A
><B
>appendMidiMusic</B
> :: <A HREF = "Sound.Hommage.Midi.html#t%3AMidiMusic"
>MidiMusic</A
> -> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiMusic"
>MidiMusic</A
> -> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiMusic"
>MidiMusic</A
></TD
></TR
><TR
><TD CLASS = "doc"
> Sequencial composition of <TT
><A HREF = "Sound.Hommage.Midi.html#t%3AMidiMusic"
>MidiMusic</A
></TT
>.</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AmergeMidiMusic"
></A
><B
>mergeMidiMusic</B
> :: <A HREF = "Sound.Hommage.Midi.html#t%3AMidiMusic"
>MidiMusic</A
> -> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiMusic"
>MidiMusic</A
> -> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiMusic"
>MidiMusic</A
></TD
></TR
><TR
><TD CLASS = "doc"
> Parallel composition of <TT
><A HREF = "Sound.Hommage.Midi.html#t%3AMidiMusic"
>MidiMusic</A
></TT
>.</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3ArunMidiMusic"
></A
><B
>runMidiMusic</B
> :: <A HREF = "Sound.Hommage.Midi.html#t%3AMidiMusic"
>MidiMusic</A
> -> <A HREF = "Sound.Hommage.Midi.html#t%3AMidiTrack"
>MidiTrack</A
></TD
></TR
><TR
><TD CLASS = "doc"
> Converts a <TT
><A HREF = "Sound.Hommage.Midi.html#t%3AMidiMusic"
>MidiMusic</A
></TT
> to a <TT
><A HREF = "Sound.Hommage.Midi.html#t%3AMidiTrack"
>MidiTrack</A
></TT
>. </TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "section1"
><A NAME = "4"
> MidiTrack</A
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>type</SPAN
> <A NAME = "t%3AMidiTrack"
></A
><B
>MidiTrack</B
> = [(<A HREF = "Sound.Hommage.Midi.html#t%3ADelta"
>Delta</A
>, <A HREF = "Sound.Hommage.Midi.html#t%3AMidiEvent"
>MidiEvent</A
>)]</TD
></TR
><TR
><TD CLASS = "doc"
> A sequence of MidiEvents with a delta-time which means the number of ticks
before the event happens (relative to the last event). </TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>type</SPAN
> <A NAME = "t%3ADelta"
></A
><B
>Delta</B
> = Int</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "section1"
><A NAME = "5"
> MidiEvent</A
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>data</SPAN
> <A NAME = "t%3AMidiEvent"
></A
><B
>MidiEvent</B
> </TD
></TR
><TR
><TD CLASS = "body"
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD CLASS = "section4"
>Constructors</TD
></TR
><TR
><TD CLASS = "body"
><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
><TR
><TD CLASS = "decl"
><A NAME = "v%3AMidiNoteOff"
></A
><B
>MidiNoteOff</B
> !<A HREF = "Sound.Hommage.Midi.html#t%3AChan"
>Chan</A
> !<A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
> !<A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
></TD
><TD CLASS = "rdoc"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AMidiNoteOn"
></A
><B
>MidiNoteOn</B
> !<A HREF = "Sound.Hommage.Midi.html#t%3AChan"
>Chan</A
> !<A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
> !<A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
></TD
><TD CLASS = "rdoc"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AMidiKeyAfter"
></A
><B
>MidiKeyAfter</B
> !<A HREF = "Sound.Hommage.Midi.html#t%3AChan"
>Chan</A
> !<A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
> !<A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
></TD
><TD CLASS = "rdoc"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AMidiControl"
></A
><B
>MidiControl</B
> !<A HREF = "Sound.Hommage.Midi.html#t%3AChan"
>Chan</A
> !<A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
> !<A HREF = "Sound.Hommage.Midi.html#t%3AMidiValue"
>MidiValue</A
></TD
><TD CLASS = "rdoc"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AMidiEndOfTrack"
></A
><B
>MidiEndOfTrack</B
></TD
><TD CLASS = "rdoc"
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "section1"
><A NAME = "6"
> Encoding</A
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AencodeMidiFile"
></A
><B
>encodeMidiFile</B
> :: <A HREF = "Sound.Hommage.Midi.html#t%3AMidiFile"
>MidiFile</A
> -> [Word8]</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AmidiHeaderSync"
></A
><B
>midiHeaderSync</B
> :: [Word8]</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AmidiHeaderSingle"
></A
><B
>midiHeaderSingle</B
> :: [Word8]</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AmidiHeaderAsync"
></A
><B
>midiHeaderAsync</B
> :: [Word8]</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AencodeMidiTrack"
></A
><B
>encodeMidiTrack</B
> :: <A HREF = "Sound.Hommage.Midi.html#t%3AMidiTrack"
>MidiTrack</A
> -> [Word8]</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AencodeDelta"
></A
><B
>encodeDelta</B
> :: Int -> [Word8]</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AencodeMidiDeltaEvent"
></A
><B
>encodeMidiDeltaEvent</B
> :: (<A HREF = "Sound.Hommage.Midi.html#t%3ADelta"
>Delta</A
>, <A HREF = "Sound.Hommage.Midi.html#t%3AMidiEvent"
>MidiEvent</A
>) -> [Word8]</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AencodeEvent"
></A
><B
>encodeEvent</B
> :: <A HREF = "Sound.Hommage.Midi.html#t%3AMidiEvent"
>MidiEvent</A
> -> [Word8]</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AlastByte"
></A
><B
>lastByte</B
> :: Int -> Word8</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AnextByte"
></A
><B
>nextByte</B
> :: Int -> Int</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AtoBytes"
></A
><B
>toBytes</B
> :: Int -> Int -> [Word8]</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "botbar"
>Produced by <A HREF = "http://www.haskell.org/haddock/"
>Haddock</A
> version HADDOCK_VERSION</TD
></TR
></TABLE
></BODY
></HTML
>