A simple wrapper using ffi around the portmidi library. This is hopefully easier to build than the c extension I did earlier
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
lib
test
.gitignore
CHANGELOG
README.rdoc
Rakefile
license.txt

README.rdoc

Portmidi-Mapper

This is a small, incomplete wrapper around the portmidi c library.

It is the successor of my portmidi-ruby project which used ordinary ruby extensions which are a pain to write.

Requirements

  • portmidi (who woulda thought) built as a dynamic library. See below for special notes for Mac OS X Snow Leopard

  • ffi (which in turn needs a sane build env to be installed)

What's missing?

The most important: Tests. I'm still pondering on how to test a library that has hardware requirements and dependencies (= MIDI hardware). So I guess it means I will mock away the portmidi layer to test my abstractions and add some optional integration test that will require a MIDI loopback configuration.

Implementation wise, there's a few things missing:

  • Setting Channel- and Message filters

  • Porttime support(not sure I can support that, I guess it needs multithreading, plus: I did not need it until now)

examples/read_test.rb on how to decipher sysex atm.

  • More different exceptions, plus support for Host Errors

  • A lot of safety nets like testing for open devices before reading and writing and such.

Credits

The portmidi wrapper was thrown together by Jan Krutisch <jan@krutisch.de>

Installing Portmidi

  • On MacOSX, there's a homebrew recipe, so $ brew install portmidi should do the trick

  • On most Linuxes, portmidi should be simply a package to install by your packagemanager

  • On Windows? Frankly, I'm one of those arrogant anti Windows guys who could care less. If you're not annoyed by that, “here's a pointer”:sourceforge.net/apps/trac/portmedia/wiki/Installing%20portmidi%20on%20Windows