Atte, > If not, could anyone point me in the right direction of some > documentation on how to write such a program, esp how to register as an > alsa-client and exactly what should be send out how for it to be program > change. I'd like to write in python, if possible... I've created Python bindings for a good chunk of the ALSA sequencer. You can find the code at http://www.math.tu-berlin.de/~brinkman/software/midikinesis/ The module pyseq.py contains the sequencer bindings, and applications like midikinesis.py, midigen.py, and playtune.py should give you an idea as to how to work with pyseq.py. As for your specific question of how to send pgm change messages, here's how I would do this with pyseq.py. First version: Send event right away, without scheduling via queues. --------------------------------------------------------------------- from pyseq import * s=PySeq() p=s.createOutPort() raw_input("hook up ports, press return") e=snd_seq_event() e.setPgmChange(0, 8) # channel, value s.sendEvent(e, p) # send event directly --------------------------------------------------------------------- Second version: Schedule event for a specific time, via queues: --------------------------------------------------------------------- from pyseq import * import time s=PySeq() p=s.createOutPort() raw_input("hook up ports, press return") q=Queue(s) q.setTempo(120, 192) # 100 beats per minute, 192 ticks per beat q.start() e=snd_seq_event() e.setPgmChange(0, 8) # channel, value q.postEvent(e, p, 1920) # send via queue after 1920 ticks, i.e., 5 secs time.sleep(5.5) # wait for event to occur --------------------------------------------------------------------- Please let me know if you have any questions. Best, Peter