Getting input from MIDI devices live (Python)

Gabriele Cirulli picture Gabriele Cirulli · Oct 12, 2009 · Viewed 24.7k times · Source

I've got a trigger finger (MIDI tablet) and I want to be able to read its input live and make python execute actions depending on the pressed key.

I need it for Windows, and preferably working with python 2.5 +

Thanks

Answer

Andre Miller picture Andre Miller · Oct 12, 2009

PyGame includes a built-in midi module, available for Linux, Windows and MacOS and is very well supported.

For example, here is the documentation for pygame.midi.Input:

  Input is used to get midi input from midi devices.
  Input(device_id)
  Input(device_id, buffer_size)
        Input.close - closes a midi stream, flushing any pending buffers.   closes a midi stream, flushing any pending buffers.
        Input.poll - returns true if there's data, or false if not. returns true if there's data, or false if not.
        Input.read - reads num_events midi events from the buffer.  reads num_events midi events from the buffer.

If you're looking for an alternative, have a look at PythonInMusic in the Python wiki.

There are various different projects related to MIDI input and output there, some for Windows as well. (Click the little > sign after each project to follow the link to the project homepage)

I have not used any of them personally, but I'm sure it will help you get started.