[PD] Getting Sysex output to work on Linux
Martin Peach
martin.peach at sympatico.ca
Tue Jun 3 06:14:07 CEST 2008
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