hmidi-0.2.3.1: README.md
hmidi: Haskell bindings to the OS level MIDI services
=====================================================
Partial implementation of the MIDI 1.0 standard to communicate with physical
or virtual MIDI devices, eg. MIDI keyboards and synthesizers.
Supported operating systems are MacOS and Windows.
See also the `alsa-midi` library for similar functionality under Linux.
Installation & Usage
--------------------
It should install with `cabal` without problems on Mac OS X and Windows.
Linux is not supported.
As usual, just run the command:
cabal install
When using the library, you *have* to link against the threaded runtime
(otherwise random crashes *will* occur); for example:
ghc --make -threaded -O monitor.hs
Example applications
--------------------
There are some example command line applications in the `examples` subdirectory:
* `monitor.hs` - very basic MIDI monitor
* `chords.hs` - convert NoteOn messages to simple chords
* `playmidi.hs` - play simple `.mid` files on General MIDI compatible synths
* `osx_host.hs` - create a MIDI host (as opposed to connecting to existing host). Only works on MacOs.
You can build them with `ghc --make -threaded` like above.
Differences between Windows and MacOS
-------------------------------------
We tried to create a unified Haskell API, but there are still differences between
the Windows and Mac implementations. In particular, you cannot create MIDI hosts
on Windows.