MIDI message sending and receiving, MID file manipulation

Rhodri James rhodri at wildebst.demon.co.uk
Mon Apr 25 20:04:22 EDT 2011

On Mon, 25 Apr 2011 14:17:50 +0100, Passiday <passiday at gmail.com> wrote:

> Hello,
> I'd like to experiment with Python, connecting my Linux PC with MIDI
> device (standard synthesiser keyboard).
> I am pretty new to the Python world, so the questions that crop up, I
> assume, could be pretty basic to someone who had spent some time with
> it.
> So, here comes:
> 1) Is everything what could be done with Python in some IDE (Eclipse
> for me), can be accomplished in the interactive console? I mean,
> perhaps Python could be used just as programming language and compiled
> in binary code, thus allowing access to some binary libraries what
> might not be accessible from within the interpreter.

This is two, or possibly three, distinct unrelated questions as best
I can tell.

1a) Yes, anything you can do in an IDE you can do at the Python
interactive command line prompt.  Or by running your script directly
in a terminal window.  Personally I find it less hassle to do it that
way, since IDEs usually don't work the way I want them to.

1b) Python can be compiled down to binary if you try hard, with
utilities like Py2exe.  You don't usually want to do that, though.

1c) ...because there are plenty of ways of wrapping up libraries
so that Python scripts can use them.  ctypes (in the standard
library) is a good place to start.

> 2) Is there a way how to run Python script in event-driven mode, ie,
> run the script, it registers some function as keyboard event handler,
> and then calls that function whenever I press any key. Is such
> behaviour possible in the interactive mode? Since I want to test the
> MIDI message exchange, having a function sitting on the timer event is
> what I'll need for playback, and an event that is triggered by
> incoming MIDI message for recording.

Probably.  It sounds like what you really want is a framework of
some sort that knows about things like "the timer event", and using
it from the interactive prompt won't be for the faint of heart!
Someone must have walked this path before, though.

> 3) Of course, I need some Python module to actually get this MIDI
> communication happen. Sending and receiving MIDI messages to and from
> my MIDI device.
> 4) As for manipulating the MIDI files in Python, I have searched up
> this: http://www.mxm.dk/products/public/pythonmidi  However, this lib
> doesn't try to provide actual communication with MIDI device.

The Python In Music wiki page (http://wiki.python.org/moin/PythonInMusic)
has an entire section on MIDI packages.  I've never used any of them,
so I can't comment.

Rhodri James *-* Wildebeest Herder to the Masses

More information about the Python-list mailing list