New Plugin: Dexed (DX7 simulation) for the MOD

Hi,

here is a small installation manual for a LV2 port of Dexed (a simulation of the famous Yamaha DX-7 ™ FM-Synth) for the MOD-Duo.

DISCLAIMER:
IF YOU INSTALL THIS PLUGIN, HAVE IN MIND THAT IT IS (CURRENTLY?) NOT SUPPORTED FROM MODDEVICES. IT RUNS FOR ME, BUT I GIVE NO GUARANTEE FOR NOTHING!

Currently only Linux installation manual:

  1. Start your MOD-Duo and connect it via USB to your PC.
  2. From a shell do the following: curl http://www.parasitstudio.de/dexed.lv2.tar.gz | base64 | curl -F 'package=@-' http://192.168.51.1/sdk/install
  3. On the MOD-Duo web page you should have Dexed inside the Generator section. Pull it to the pedalboard, connect it and play. You should hear the FM-Rhodes sound.

The Factory sounds are the ROM1A-Bank. You can install own SysEx data:

  1. Get and install dxsyx on your PC: git clone https://github.com/rogerallen/dxsyx.git
  2. Get SysEx-converter->lv2 script: wget https://raw.githubusercontent.com/dcoredump/dexed/native-lv2/bin/dx7sysex2lv2
  3. Change $LV2_INSTALL_PATH (line 34) and $DXSYX (line 30) to your paths.
  4. Convert your SysEx file(s) with: ./dx7sysex2lv2 SYSEX1 [SYSEX2 …]
  5. Copy converted files to the MOD-Duo: scp -r <directory_where_my_converted_sysex_files_are>/* root@192.168.51.1:/root/.lv2

After reloading the MOD-UI you should have your converted sounds available as user presets.

Have fun!

Regards, Holger

1 Like

Many thanks for your work so far on this!
I have to try it out soon.

Do you have any short-term plans for it?
Or do you think it’s good enough to go to the store as-is? (as non-stable for now)

There have been quite a few new plugins lately.
Perhaps it’s time to do some automated testing…

We have tested Dexed for about two weeks (on a Raspi, not directly on the MOD-Duo - but I think this doesn’t matter at all). I think it is stable enough for the store.

But I am currently not very lucky with the factory sound set - it is only one standard bank. I am currently working on a script which packs converted sounds from a bank (not the whole bank) into presets and would like to create nicer factory banks. But for this I need some days/weeks :slight_smile: and I think this can be updated on the store?

Regards, Holger

Installed and working.

Nice job, no problems so far :slight_smile:

Updating meta-data should be no problem at all.

Ok, a few comments…

  1. You use a local variable ‘CFLAGS’ in your makefile, you should name it something else as CFLAGS is reserved for C code build flags.
    At least you don’t override CXXFLAGS, so that’s good.

  2. You override LDFLAGS on your makefile, don’t do this. Use “LDFLAGS += …” instead.

  3. You have “CPU = -O3 -mtune=cortex-a7” when building for MOD.
    While this is correct today, we might change to a different CPU later on, causing this build to fail.
    Do not set cpu related build flags when building for MOD, the toolchain does that for us.

Another thing.
Consider adding “rdfs:label … ;” to your preset data inside manifest.ttl.
The host needs to know the preset names when loading the plugin, but only needs to load the presets file when loading a preset.
If you put the rdfs:label on the manifest file, it makes the initial load of the plugin faster. (it doesn’t have to parse the big presets file on init)

The plugin is now on the non-stable part of the store!

Note there were some meta-data warnings during build, which need to be fixed before putting it into stable.

“plugin license is missing”,
“port scalepoint ‘Sample & Hold’ has an out-of-bounds value: 0 < 6 < 5”,
“preset with uri ‘https://github.com/dcoredump/dexed.lv2/presets#BRASS____1’ has no label”,
“preset with uri ‘https://github.com/dcoredump/dexed.lv2/presets#BRASS____2’ has no label”,
“preset with uri ‘https://github.com/dcoredump/dexed.lv2/presets#REFS_WHISL’ has no label”,
“preset with uri ‘https://github.com/dcoredump/dexed.lv2/presets#STRINGS_1’ has no label”,
“preset with uri ‘https://github.com/dcoredump/dexed.lv2/presets#SYN_LEAD_1’ has no label”

The ‘preset has no label’ usually means a preset mentioned in the manifest is not available on the big presets file, or has a typo on the URI.

Many thanks!!!

I will fix everything at weekend!

Regards, Holger

Hi @falkTX,

many thanks for your comments and help!

Ok, I will disable the CPU variable. I think also the platform related stuff, like -mfpu=neon-vfpv4 -mfloat-abi=hard -mvectorize-with-neon-quad?

Regards, Holger

yes, those should be taken off too.
normal desktop cpus don’t know about neon :slight_smile:

Ok, done.

I hope I have fixed every problem you mentioned. As before the package is at http://www.parasitstudio.de/dexed.lv2.tar.gz .

BTW: When I want to install the package with the magic-curl-cast, does this remove every “old” file or does this only overwrite?

Regards, Holger

the curl magic command will replace any bundle with the same name, except if it’s being used live right now.

Hi @falkTX,

I have created a fixed version with more factory patches which can be downloaded at http://www.parasitstudio.de/dexed.lv2.tar.gz.

Regards, Holger

Please put those on the original source code in github, as part of the build.
The cloud build system takes the plugin from there, by just updating the used git commit id, so it’s all automatic.

Ok, they are there… commit id is b8ad1d6848f4f101f1059a00671d2c866d8cf952.

Regards, Holger

Thanks, updated it the store again.

There were no meta-data errors, but there are some ttl validation ones.
sord_validate says:

error: Type is not a rdfs:Class or owl:Class:
       https://github.com/dcoredump/dexed.lv2
       http://www.w3.org/1999/02/22-rdf-syntax-ns#type
       http://lv2plug.in/ns/lv2core#SynthPlugin
error: Object not in property range:
       https://github.com/dcoredump/dexed.lv2
       http://www.w3.org/1999/02/22-rdf-syntax-ns#type
       http://lv2plug.in/ns/lv2core#SynthPlugin
note: Range is <http://www.w3.org/2000/01/rdf-schema#Class>

Which is basically to say SynthPlugin is not an lv2 category.
Use InstrumentPlugin instead.

The full list of possible categories are here: http://lv2plug.in/ns/lv2core/#index (on the left side of the table)

Ahhh - ok - sorry… fixed in a1f53457f89d60c0f022e98b40e2ee85b3ee004e.

Updated once again :slight_smile:

1 Like

Hi @ll,

I noticed that bypassing Dexed seemed not really to work. I found that I had forgot to add the handling of the MIDI controllers 120 and 123 which seems to be send by mod-host when bypassing a plugin.

I added them and created a new binary for updating. I also fixed some smaller things in Dexed.ttl and added a LV2-control for changing the number of used voices (1…32). The DX7 has a maximum of 16 voices, so that is the default. You can add more voices but if the sounds have a higher decay, the CPU load will rise! If you can live with less voices you can turn it down to 8 or less and the CPU load will rise too much.

The binary is at the same place as usual (see some of the first messages).

@falkTX: If you have time, can you add 56adff66e1c8209d98a84e5715e157852925eb13 to unstable?

I am currently let two instances of Dexed (at 16 voices) playing since 4 hours triggered by a wild pattern of two instances of stepseq. Runs without problems. I changed sounds several times and turned some controllers… works stable. I also took al look at the memory consumption on the mod with top: stable - seems to have no memory leak.

Are there other users of Dexed who tried the plugin? It would be very nice if you can write something about your experiences.

Thanks, Holger