[Haskell] alsa-midi, midi, event-list, non-negative
Henning Thielemann
lemming at henning-thielemann.de
Thu Feb 21 08:59:39 EST 2008
Last autumn I found the 'alsa-midi' package by Soenke Hahn for controlling
digital music instruments over MIDI and I wanted to avoid duplicate MIDI
definitions. Thus I started extracting MIDI code from the Haskore project.
Months later I ended up with some more packages:
http://hackage.haskell.org/cgi-bin/hackage-scripts/package/alsa-midi
This is a simple interface to the sequencer part of ALSA
(Advanced Linux Sound Architecture)
It lets you control and communicate with external music synthesizers via MIDI.
However with its release it becomes deprecated
because I recently became aware of the more complete approach
http://code.haskell.org/alsa/
which we should merge with, I think.
The library is built on top of
http://hackage.haskell.org/cgi-bin/hackage-scripts/package/midi
which provides definitions of MIDI events and MIDI streams
and reading and writing MIDI files.
This in turn is built on top of
http://hackage.haskell.org/cgi-bin/hackage-scripts/package/event-list
which provides data structures for lists containing events and a time
stamp. Pauses before the first and after the last event are supported.
The data structures can be used to represent MIDI files,
OpenSoundControl message streams, music performances or other streams
of temporal events.
Internally it uses lists of elements of alternating types,
that is [b,a,b,...,a,b] or [a,b,a,...,a,b].
These data structures could be useful of its own,
but are not exposed so far.
This is eventually built on top of
http://hackage.haskell.org/cgi-bin/hackage-scripts/package/non-negative
which provides a class for non-negative numbers, a wrapper which can
turn any ordered numeric type into a member of that class, and a lazy
number type for non-negative numbers (a generalization of Peano numbers).
You may also want to check if the experimental version of
http://hackage.haskell.org/cgi-bin/hackage-scripts/package/jack
is useful for you.
Happy installation!
More information about the Haskell
mailing list