[LAU] MIDI to systemcommand, exute script etc.

Dominic Sacré dominic.sacre at gmx.de
Tue Nov 11 20:55:01 EST 2008


On Tuesday 11 November 2008 23:59:04 Ken Restivo wrote:
> On Mon, Nov 10, 2008 at 06:08:41PM +0100, Dominic Sacré wrote:
> > On Saturday 08 November 2008 22:31:51 Nils Gey wrote:
> > > Do you know any ways to receive midi events to start programms,
> > > execute shell-scripts or using other things you normaly do with your
> > > computer-keyboard and shortcuts?
> >
> > This is one of the things mididings (http://das.nasophon.de/mididings/)
> > was made for.
> > For example, the following Python script would listen on an ALSA MIDI
> > port, and run different shell commands in response to note-on events:
> >
> > from mididings import *
> >
> > run(
> >     Filter(NOTEON) >> KeySplit({
> >         60: System('foo'),
> >         61: System('bar'),
> >         ...
> >     })
> > )
>
> I haven't used Python in a while, but what does that ">>" syntax do? A
> binary shift right?

Well, yes and no... For integers it would do a binary shift, but in Python 
operators can be overloaded for user-defined types. With mididings, A >> B 
means "connect B to A".
In the example above, all incoming MIDI events first go through a filter 
that removes anything except note-on events. The remaining events are then 
split by note number, so that each key runs a different command.

The idea behind mididings is that you use Python to define how MIDI events 
are processed by connecting different "units". But all Python code is 
(usually) run at startup. Once event processing is started, this is done 
completely in C++, mainly because of latency and realtime safety.


Dominic



More information about the Linux-audio-user mailing list