MIDI SysEx manager

Hi @zynthianers!

I just pushed into Vangelis a PoC for a “SysEx Manager”. It’s a very simple processor that load SYX files and send the data to routed MIDI-out devices. Nothing more. You will find it in:

MIDI Tool / Others / SysEx Manager

You can manage the SYX files from the webconf presets tab or directly accessing the folder at:

/zynthian/zynthian-my-data/presets/sysex/

Please note that you MUST organize the syx files into bank subfolders and they MUST have “.syx” (or .SYX) extension.

Please, update and test!

Enjoy!

4 Likes

Could some one having, for instance, a real Yamaha DX7 test if it’s working with the DIN-5 (ttymidi) MIDI out? It should, but i couldn’t test.

Regards,

It would be advantageous to be able to receive sysex from a device and store it to a file that can then be sent back out.

2 Likes

This is the Next step

2 Likes

Not working for me. I see this in the log:

ZynMidiRouter: Error writing ring-buffer: FULL

It happens as soon as I load a syx file.

[Edit] Could this bug be impacting USB MIDI?

[Edit] Also, I can’t upload sysex files using webconf.

[Edit] Happens with DIN-5 output too.

[Edit] The MIDI output ring buffer is insufficiently sized to support large messages such as the 5000+ VZ-1 voice data. We need a mechanism for sending long data.

Yes. It doesn’t work with big syx files. Current implementation has a 16K limit:

#define ZYNMIDI_BUFFER_SIZE 16384

It’s a known limitation and it should be improved, but i’m not sure arbitrary long syx messages can be managed by jackd.

Regards

1 Like

Thanks for working on this.

It’s going to be a while before I can do anything Zynthian related. I just recently moved apartments and the new apartment hasn’t got the dedicated music space like the old one did yet. Eventually it will have something but some other things are higher priority first.

Dears, I am not sure if you would still like a test? I have an old kawai k5000s for which I have sounddiver OEM on a nearly as old Thinkpad T60 / Win XP. Interfaces Yamaha U 16 or Behringer UMC 1820 work perfectly.
For Zynrhian-Sysex Manager in Oram staging I seem to be able to load an according syx-file, but don’t seem to receive it in the Kawai linked via DIN Midi cable. (I would expect to receive this typical single Sound with two PCM and one ADDitive source in this case.)

Sorry the following doesn’t belong here but if it is of interest to anyone… I then tried out sounddiver on wine/box86 and can do many things, but not send lengthy sysex files. Receiving works, and sending short sysex e.g. requesting a dump and receive it, tuning parameters if not too long etc. Sending long messages e.g. a sound will be acknowledged with error 40h or memory full 41h. So I will continue with my old laptop. Just to understand what was going on I captured what was actually sent using amidi -r on another Raspi and noticed that the file was not exactly reflecting the content sent, but it contained several additional f0f7h inside, i.e. the massage was broken in pieces and individuals surrounded by f0h and f7h. Amidi sending and receiving works, so there is something on wine/box86 that changes the message…
Kind regards

Hi @ernst !
Could you explain, step by step, the procedure you followed to send the sysex file?
Have you connected the chain’s output to the DIN5?

Regards

Dear Jofemodo,

many thanks for your fast reaction, I will try to answer best and reproduce on the go. If screenshots will be needed, it will need to double check and it might take just a bit more time…

  • setup a directory to put the syx files like this:
    /zynthian/zynthian-my-data/presets/sysex/bankk5ks/ , and scp’d the files there.
  • Midi tool/Other - select SysEx Manager
  • (right now I left Midi ch.1 from my previous test, and select ch.2 . On Kawai I also now switch to Ch.2)
  • screen shows 2#SysEx and I select my only bank bankk5ks
  • screen shows 2#SysEx > bankk5ks and I select wurli1, one of the six syx files that should transmit a single sound
  • back to mixer screen, long press 4
  • Chain Options: 2#SysEx, select Midi Out
  • enable internal devices, DIN-5 MIDI
  • Doesn’t show up on the Kawai (supposed to go to Bank A Pos. 11 OOH OAH)
  • screen shows 2#SysEx > bankk5ks/wurli1 in banner. Below > SysEx, rest is empty. I can swith to <<Prev, Preset, Pages, Next>> .
  • Prev and Next switch to 1#SysEx or 2#SysEx, Pages empty, Preset shows me other presets. Going to 2#SysEx/bankk5ks I now select orcstr1. should go to same position but doesn’t show up.

Maybe I am missing the transmit button?

sorry screen to small to go back but I connected zynthian Din out with Kawai Din in

Kind regards, Ernst

Fyi I mixed up the bytes
wurli1 would go to Pos. 14 (0dh), and orcstr1 to Pos. 12 (0bh)

(Amidi complains about device hw:1,0 = f_midi being in use, would it be useful to stop a service to test if the connection works in principle?)

The sysex file is sent when loading the preset. Try to (re)select the preset after checking the DIN5 in the chain"a MIDI output. Also, select “all MIDI channels” for the chain. Sysex messages are not channel messages .
Finaliy, use the webconf’s MIDI log to see the DIN5 output.

Regards

Thank you for the hint with the “all channels”, I didn’t have it selected but did so now.
In Kawai I don’t have this so I checked with ch.1 and 2.
When selecting the sysex preset, the data are visible in webconf in dev#1, starting with sys sysex and stripped by the f0 f7 wrap.
at least the first bytes incl. the destination looked ok, but I didn’t compare the whole message.
No signal in the Kawai however, so far.
(Putting the midi cable into another Raspi and listening with amidi -d, I couldn’t see anything coming. taking the cable off zynthian and into EWI 4000s out I see immediately portamento signals in the raspi amidi so I would say Zynthian stays silent.)
Kind regards, Ernst

EDIT PS I wasn’t sure about webconfig MIDI log, I can see the message in Dev#1 but not in DIN MIDI.

It’s really too bad ctrlr is VST only. It wouldn’t exactly be a replacement for full sysex support but it would open up so many possibilities for (semi)easily controlling other hardware with the Zynthian.

I don’t think ctrlr is vst only? But an lv2 version would be easier to integrate than the stand alone mode.

I tried to compile LV2 but it didn’t work so I stopped.

Dears,
I have good news - when using my trusted Yamaha UX16 (selected it in "send Midi to … USB Devices) it works, i.e. Kawai receives sounds at the correct place.
So I guess there is something I may do wrong in the DIN-5 (?).
Kind regards,
Ernst

Edit: using a MIDI chain with a simple MIDI Thru processor works, sending sound from the EWI 4000S into ZYNTHIAN DIN IN , and DIN OUT to Kawai works (but of course this is irrelevant for SysEx, just to ensure that I don’t have some kind of hardware issue)
Also see signals in the config Midi log on Din5 this time.

Yeah, I meant the plugins you can export from it. being able to build a panel for a piece of hardware, export it as an LV2 and manually it onto the Zynthian like any other LV2 wouldn’t need any integration at all, but ctrlr only supports VST and AU as far as I know (I don’t use it that much).

Here’s a Github issue you can follow for ctrlr on LV2: Does ctrlr support compiling panels to Linux VST and LV2 yet? · Issue #333 · RomanKubiak/ctrlr · GitHub

2 Likes

Thanks! Being able to make some minimal, performance-oriented panels for other hardware and load them on the Zunthian as LV2 plugins (with zs3 parameter recall just like any other lv2) would be really handy. I guess it could be done with PD already, but CTRLR would be a lot more convenient.

Live MIDI control of the hidden parameters that exist in a lot of cheap 90s effects units without having to use a laptop would be a blast.