[PD] Getting Sysex output to work on Linux
shima at pspunch.com
Fri Jun 6 22:59:17 CEST 2008
Thank you so much for the info.
I have confirmed this using kmidimon, and getting ready to send actual
messages to my hardware with one hand while I type with the other.
Now I am curious,
if this was fixed by a recently posted patch, how come it was not
Maybe I am just not fully aware of how CVS or SVN work.
> So I tried
> [240, 1, 247(
> on Pd 0-42-0test1 and the message shows up on the MIDI plug.
> It also works to send one byte at a time.
> But with Pd0.40.3-extended20080324 it doesn't work, although [noteout]
> and [ctlout] work fine.
> This is with ALSA-MIDI and Jack.
> PSPunch wrote:
>> 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 for compatibility?
>> 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.
>> David Shimamoto
>>> 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
>> PD-list at iem.at mailing list
>> UNSUBSCRIBE and account-management ->
More information about the Pd-list