[PD] Getting Sysex output to work on Linux

PSPunch shima at pspunch.com
Fri Jun 6 22:59:17 CEST 2008


Martin,


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 
mentioned earlier?

Maybe I am just not fully aware of how CVS or SVN work.


--
David Shimamoto



> So I tried
> [240, 1, 247(
> |
> [midiout]
> 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.
> Martin
> 
> 
> 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:
>>>> Martin,
>>>>
>>>>
>>>>> 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?
>>>> hmmm...
>>> 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.
>>>
>>> Martin
>>>
>>
>>
>> _______________________________________________
>> PD-list at iem.at mailing list
>> UNSUBSCRIBE and account-management -> 
>> http://lists.puredata.info/listinfo/pd-list
>>
> 





More information about the Pd-list mailing list