[PD] Getting Sysex output to work on Linux
shima at pspunch.com
Sat May 31 15:49:56 CEST 2008
Does anyone have any opinion on the specs suggested by Martin?
Should [sysexout] behave in this manner, or would it be more suitable to
make this a new object rather than over write the conventional object
I have no idea if I will be skilled to fix this in the near future, but
I really would love to see some of my MIDI controllers in action.
> PSPunch wrote:
>>> I'm looking at the source code in svn, assuming you use [midiout] to
>>> send sysex.
>>> The midiout object has one method, for floats : midiout_float(), in
>>> x_midi.c, line 681.
>>> It just calls outmidi_byte() in s_midi.c, line 239. If Pd was
>>> compiled with USEAPI_ALSA defined, then outmidi_byte calls
>>> sys_alsa_putmidibyte() in s_midi_alsa.c line 234, otherwise it calls
>>> sys_putmidibyte() in s_midi_oss.c line 182.
>> Do you mean that theoretically, Pd + ALSA MIDI should be working?
> Well it looks like it should but I just tried with a scope on the cable
> and got messages using [noteout] but nothing using [midiout] with alsa
> midi and jack. I tried sending bytes singly and in comma-separated
> messages as well as just lists. Nothing comes out.
>> According to IOhannes,
>>> the problem is rather, that ALSA sequencer does not support MIDI in a
>>> way Pd would like it, mainly: no raw midi.
> Yes, it looks like the ALSA function being called expects a complete
> sysex message but instead it's getting one byte at a time. I guess Pd
> should buffer the message until it gets an F7 (End of Exclusive) and
> then send the whole thing as one packet. Not too difficult except for
> anticipating what the the maximum message size is going to be. Maybe a
> [sysexout] object that takes lists of bytes (and inserts the F0 and F7)
> is in order...
>> Also I think one of the recent posts which I cannot locate now,
>> mentioned that it was just a matter of Pd using a function in ALSA API
>> other than what is used at the moment.
> Well I think it's better to send a complete sysex packet, otherwise it
> could be trashed by a noteout or similar that occurs before the F7 goes
> out. Really Pd should buffer the packet and only then send it to ALSA.
More information about the Pd-list