[linux-audio-user] sending program change to alsa

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




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



[Index of Archives]     [Linux Sound]     [ALSA Users]     [Pulse Audio]     [ALSA Devel]     [Sox Users]     [Linux Media]     [Kernel]     [Photo Sharing]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux