Dexed (DX7 emulator) integration

Ok, the LV2 Version from kxStudio is a port from the original Dexed-VST with a LV2-wrapper. Maybe that using SYSEX with this wrapper is not possible. The problem of this code was (for me) that every DX-parameter was not an integer anymore but a float [0.0:1.0].

So I made my own LV2 port from the original Dexed and dropped all the UI/JUCE code (see branch “native-lv2”: https://github.com/dcoredump/dexed/tree/native-lv2). But I havn’t added any SYSEX handling until now - only scripts which can convert SYSEX files to LV2-TTL files. The code is working on MOD-UI (= Zynthian with MOD-UI engine or MOD-Duo/MOD-DuoX).

Another solution would be MicroDexed. This one runs on a Teensy-3.5/3.6/4.0. I am currently using it on stage as a light replacement for my original DX7II :smile:.

MicroDexed reads SYSEX files from SD card and can handle some more MIDI-CC (like program change, bank-change, aftertouch, breath controller, …) and has some builtin effects (delay and resonant LP filter). I am currently rewriting the UI and will add SYSEX and editing reading via MIDI soon. Also a reverb and a chorus may be added the next weeks/months.

Regards, Holger

2 Likes

Gotta jump into the car for a gig now… thanks for your reply. Actually I used Dexed LV2 from kxStudio recently on my Laptop, not surprisingly with Calf Multi Chorus and Calf Vintage Delay (in Carla as virtual rack). Looking forward to have a look at MicroDexed. Seems to be pretty much what everyone should want. :slight_smile:
Best
Schwob

OK, following up on my idea: I can connect Dexed LV2 from kxStudio internally (PARM button) to a hardware MIDI USB device. Then I can feed a SYX file into this device using amidi. I connect inputs and outputs of the device electrically… and voilà: I can load sysex with an external command. But the fact that I have to use a hardware loopback device drives ma mad.

OK, seriously: is there a way to feed SYX files into ALSA sequencer devices? (NOT rawmidi). I got this MIDI through device here and usually Jack sits on my rawmidi devices. Dexed can also use the virtual MIDI through device but I’ve been googeling my back off and didn’t find a way do dump SYX into a sequencer device. Also I didn’t find any converter from SYX to MID, which aplaymidi could perhaps send. I feel like I want to do something nobody has ever done before. I feel like a pro. :stuck_out_tongue:

Any hints? :slight_smile:

Best
Schwob

@Schwob make the syx file available and I will look at wrapping in a mid file. If successful I will share the converter (which I am yet to start writing but doesn’t look too tricky).

I tried some of those found in here: http://dxsysex.com/SYSEX_DX7/Guest/Atari.zip - as said, via my “hardware loopback” and amidi, I could upload them into Dexed.

I like the virtual cartridges that come with my installation of Dexed LV2, but I can’t find them anywhere on the file system. Dexed lists them as “SynprezFM_%%” where %%=01…32, they might originate from here: http://www.synprez.com/SynprezFM/SynprezFM-II-builtins.tgz

However, I simply saved a bank/catridge from the Dexed cartridge manager and “file” says it is Yamaha Sysex, as it says for those from Atari.zip. I put this output of Dexed here: https://drive.google.com/open?id=1HhnPN_tcQTIOg351yEoGguHdiW0zmDex

As I see it, there are two options: either feeding entire virtual cartridges into Dexed and then have it listen to program change (which it does in certain versions/constellations, not in others), or feed single program settings into Dexed (thus sort of having an external replacement of the preset/cartridge management).

I looked into the MID file specs but got confused a bit, so I’d be very happy of you’d give syx2mid a go (actually there is a tool by that name for Windows, but neither do I have Windows nor does it work, at least according to some forum posts out there).

Best
Schwob

I opened a feature request:

Regards,

I have written a quick and dirty converter which wraps raw sysex into a track within a format 0 standard MIDI file. It is here. I haven’t tested it and it really is a quick and dirty hack I threw together on the train this morning so don’t judge my coding!!! Give it a bash if you can. It should compile by simply typing:

make syx2mid

If it proves useful I could tidy the code up, make it more robust and add some functionality like specifying output file name but I don’t have much time at the moment so don’t want to spend time on polishing this if it is of little use.

The idea is that you can use the Zynthian MIDI player to send patches or other sysex stuff to engines. Please report issues for syx2mid at my github page, not Zynthian.

Cheers
Walt

1 Like

I have to say that your code works perfectly with Jalv LV2-host too, so you can run Dexed as a standalone engine on zynthian (no need for MOD-UI).

Cheers!

Nice!! Good work!

Currently this won’t work because Zynthian MIDI router is removing SysEx messages from MIDI input stream, as it was causing problems in the past. As things have changed quite a bit from then (ttymidi, zynmidirouter, etc), we could try to re-enable SysEx again and see what happens, but, i’m don’t know if any of the current engines could take profit from SysEx. @C0d3man’s Dexed, the version we use, doesn’t have SysEx support, and i don’t know if OBX or other synth have it …

Anywayy, having the possibility of sending SysEx from the internal MIDI player is an interesting feature that can be used with external hardware too.

Regards,

1 Like

I didn’t install the SYSEX code at that time, because I didn’t see much added value for it. LV2 uses configurations through the TTL files. So it made more sense to build a converter that translates SYSEX to TTL.

Ahhh, yes of course it works with JALV :slight_smile: Perhaps I will integrate SYSEX support when I am finished with it on MicroDexed. But this will take some time…

Regards, Holger

2 Likes

Thank you riban, for your program. I will try this. Unfortunately I can’t constantly work on this project, so there are delays in my answers. :wink:

I currently work on a setBfree hardware controller, but in the end I want some solution that runs setBfree, Dexed and PianoTeq in a box. Sounds like Zynthian to me. However, I’d need some means to switch cartridges/patches using a master keyboard resp. MIDI program change commands.

Haha - same for me! I need my old DX7, a good hammond clone and a Rhodes. I have all of those in real (ok, the hammond-clone is a Korg CX3) - but they are not really easy to carry around.

For MicroDexed I had code running which made bank and patch changes via a combination of pressed keys on the MIDI master keyboard :slight_smile:. I dropped this code because I added two encoders and a LCD display.

Regards, Holger

No problem! I don’t know if it works and am about to head off to Australia for a few weeks so unlikely to be able to do much in the way of real testing. (My Zynthian is currently a pile of bits sitting in a pool of dust looking rather forlorn. I am so eager to finish building my kitchen so that I can play again. All work and no play makes Walt a dull boy :frowning: .)

I’m trying to pick up the Dexed topic after a longer period of lots of other work… one question: Where do the presets in Zynthian’s Dexed version come from? I like them and I would like to use them in my PC production environment, too.

1 Like

That’s a good question. Most of them are “from the internet” [1] [2]. A small part is my personal set of sounds (some of them made by myself, others I have slightly adapted).

Regards, Holger

Hi,

Not sure if this is the right thread for this issue, but my searches didn’t yield a specific answer.

It seems like when I upload a 32 voice Dexed .syx file though Zynthian’s web config (Safari, if that matters), the algorithms are all off by 1 value and therefore sound completely different in some cases. For instance, a patch that should be algorithm 5 has a setting of algorithm 4 after I upload it through the web config page. I compared the patches from the factory Yamaha ROM1A .syx I uploaded against the ROM1A Bank in Zynthian’s Dexed plugin and the uploaded .syx patches’ algorithms were all 1 value below what they should be.

I am using the latest Zynthian image from the website on a Raspberry Pi 4. I also ran the Update Software option in the Admin panel on the Zynthian screen, so I should be up to date.

Thanks for any info.

Hi @lp1977,

the SYSEX code in Dexed.lv2 is a little bit buggy, sorry for that.

I hope I can fix this and add some more functions which I added for MicroDexed. But currently I am out-of-time for this… Perhaps in the next weeks.

Regards, Holger

But i think it’s not using the “sysex” code. When you upload a sysex with the webconf, it’s converted to LV2. It seems that the algorithm values have an offset of 1.

Please, @lp1977, could you verify if the rest of values are OK?
@C0d3man, perhaps the latest update you committed changed the base for the algorithm values?

Regards,

No, I don’t think so. But perhaps my brain has swapped out those events…

So, I compared a couple more patches and it looks like Algorithm is indeed off by -1 value and each of the six operator Detune values are off by +7 or pegged at max of +7.

Taking a peek at dexed.lv2/dexed.cpp on Github, I see now that these values are actually in the code. These are the only parameter lines that appear to have correctional values:

346 onParam(134,*p(p_algorithm_num)-1);

336 onParam(125,*p(p_op1_osc_detune)+7);

314 onParam(104,*p(p_op2_osc_detune)+7);

292 onParam(83,*p(p_op3_osc_detune)+7);

270 onParam(62,*p(p_op4_osc_detune)+7);

248 onParam(41,*p(p_op5_osc_detune)+7);

226 onParam(20,*p(p_op6_osc_detune)+7);

So maybe something changed at some point?

1 Like