[alsa-devel] problems howto send simple 'noteon' event with pyalsa...

Jaroslav Kysela perex at perex.cz
Thu Mar 13 13:34:48 CET 2008


On Thu, 13 Mar 2008, ki.ber.kom.uni.st wrote:

> e,
> i was happy user of PySeq [1] and it was easy to send directly
> 'noteon' event.. more or less in python interactoin session:
> import pyseq
> 
> seq = pyseq.PySeq()
> seq.createOutPort()
> event = snd_seq_event()
> event.setSource(0)
> event.setSubscribers()
> event.setNoteOn(ch, note, velocity)
> event.sendAsIs(seq)
> 
> it seems that pyalsa will go along alsa development so i tried pyalsa.. but....
> 
> i tried this:
> 
> from pyalsa import alsaseq
> 
> seq = alsaseq.Sequencer()
> seq.create_simple_port("myPort", alsaseq.SEQ_PORT_TYPE_APPLICATION,
> alsaseq.SEQ_PORT_CAP_SUBS_READ | alsaseq.SEQ_PORT_CAP_READ |
> alsaseq.SEQ_PORT_CAP_WRITE | alsaseq.SEQ_PORT_CAP_SUBS_WRITE)
> 
> event = alsaseq.SeqEvent(alsaseq.SEQ_EVENT_NOTE)
> event.set_data({'note.note' : 0x40, 'note.velocity' : 127,
> 'note.duration' : 1, 'note.off_velocity' : 0})
> event.dest = (20, 0)
> seq.output_event(event)
> seq.drain_output()
> 
> after drain it says:
> "SequencerError: Failed to drain output: Invalid argument"
> i can connect and disconnect ports around and (20,0) is functional
> port where i send events with no problems from PySeq...
> 
> any ideas? do i have to use queues to be able to send 'noteon'.. for
> my purposes it seems to me that that's overkill....

I think that you need to create also queue. Look to pyalsa source code to 
test/seqtest3.py .

					Jaroslav

-----
Jaroslav Kysela <perex at perex.cz>
Linux Kernel Sound Maintainer
ALSA Project, Red Hat, Inc.



More information about the Alsa-devel mailing list