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! _______________________________________________ Haskell mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell
