Fluidsynth not receiving sysex?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Fluidsynth not receiving sysex?

Forrest Cahoon
I'm working on a debian unstable machine, trying to construct valid MIDI tuning sysexes and test them by sending them to fluidsynth.

I've been using the program sysexxer-ng (https://github.com/linuxmao-org/sysexxer-ng) to send these.

Both sysexxer-ng and fluidsynth show up in my qjackctl connections, where I connect the sysexxer output to fluidsynth's input. When I send my sysex, though, fluidsynth doesn't seem to receive it. This is true for both the debian packaged version of fluidsynth and one I built recently from the latest github sources.

I inserted midisnoop (from the debian package https://packages.debian.org/sid/midisnoop) in between the sysexxer output and fluidsynth input and confirmed that the sysexxer is indeed sending my data, but fluidsynth doesn't seem to receive it (nothing dumped when invoked with -d, and no tunings set).

I built a debug version of fluidsynth and put a breakpoint just inside
fluid_midi_router_handle_midi_event, which looks to me like it is where all incoming MIDI events are first handled. My breakpoint was activated sending note on events from a controller keyboard, but sending my sysex did not activate it -- it's truly like what I'm sending is lost in the aether.

Am I doing something wrong? There's always the possibility that I'm not, in fact, successfully sending the data, but since I saw it in midisnoop I think that's unlikely.

Can anyone give me a hint as to how I can get this to work, or what my next step debugging the issue might be? Any help would be greatly appreciated.

Forrest


_______________________________________________
fluid-dev mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/fluid-dev
Reply | Threaded
Open this post in threaded view
|

Re: Fluidsynth not receiving sysex?

Marcus Weseloh
Hi Forrest,

Am So., 3. Feb. 2019 um 20:42 Uhr schrieb Forrest Cahoon <[hidden email]>:
I inserted midisnoop (from the debian package https://packages.debian.org/sid/midisnoop) in between the sysexxer output and fluidsynth input and confirmed that the sysexxer is indeed sending my data, but fluidsynth doesn't seem to receive it (nothing dumped when invoked with -d, and no tunings set).

Fluidsynth doesn't dump sysex messages when invoked with -d or --dump, only the "standard" messages like note on/off, pitch bend, prog change etc.

And I think Fluidsynth handles the MTS tuning in a slightly non-standard way... I think the MTS specs say that there is a default tuning for each channel, which you can simply change. But Fluidsynth basically has "no tuning" as default. So when you try to modify tuning bank 0 prog 0, you won't hear an immediate effect. You need to assign a tuning to a channel first, using RPN 03 and 04.

Cheers,

   Marcus

_______________________________________________
fluid-dev mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/fluid-dev
Reply | Threaded
Open this post in threaded view
|

Re: Fluidsynth not receiving sysex?

Tom M.
A few thoughts from my side:

fluid_midi_router_handle_midi_event() is the correct place to look for SysEx events. Specifically the "case MIDI_SYSEX:" line should trigger a breakpoint. Alternatively you can break in fluid_synth_sysex().

However, I am not sure if SysEx events are (correctly) implemented for all midi drivers. alsa_seq should work though. Which driver are you using?

Make sure your SysEx events use the correct device ID, otherwise fluidsynth will ignore it in fluid_synth_sysex(). Either use 0x7F for all devices or set the device ID with the "synth.device-id" setting.


Tom




_______________________________________________
fluid-dev mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/fluid-dev
Reply | Threaded
Open this post in threaded view
|

Re: Fluidsynth not receiving sysex?

Forrest Cahoon
> However, I am not sure if SysEx events are (correctly) implemented for all midi drivers. alsa_seq should work though. Which driver are you using?

This turned out to be the key. I had been using JACK MIDI (with a2jmidid for Fluidsynth, and native drivers for sysexxer-ng). When I changed my qjackctl settings to use the alsa seq MIDI drivers, my sysex was recognized.

Thanks for help!


On Mon, Feb 4, 2019 at 1:12 PM Tom M. <[hidden email]> wrote:
A few thoughts from my side:

fluid_midi_router_handle_midi_event() is the correct place to look for SysEx events. Specifically the "case MIDI_SYSEX:" line should trigger a breakpoint. Alternatively you can break in fluid_synth_sysex().

However, I am not sure if SysEx events are (correctly) implemented for all midi drivers. alsa_seq should work though. Which driver are you using?

Make sure your SysEx events use the correct device ID, otherwise fluidsynth will ignore it in fluid_synth_sysex(). Either use 0x7F for all devices or set the device ID with the "synth.device-id" setting.


Tom




_______________________________________________
fluid-dev mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/fluid-dev

_______________________________________________
fluid-dev mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/fluid-dev