I’m struggling to get a 1-to-many MIDI mapping working in the current version of MODEP and could really use some advice.
My Goal: I want to use a single physical expression pedal (via MIDI CC) to control multiple parameters across different plugins at the same time, while also being able to set custom minimum/maximum ranges and inverted sweeps for each parameter.
The Problems I’m Hitting:
Standard MIDI is 1:1: Standard MIDI mapping limits me to assigning the CC to only one parameter.
Assigning Named CVs causes a crash: I tried using the “Control to CV” plugin to split the signal. I can successfully create a Named CV port without any issues. However, the exact moment I go into a target plugin (like a Wah pedal) and assign its control parameter to that Named CV, the system instantly crashes and the UI disconnects.
The old patch doesn’t fix it: I found the old thread about the fix-cv-segfault.patch for mod-host. I cloned the repo, applied the patch, and compiled it from source. The patched mod-host runs perfectly fine, but it doesn’t actually fix the error—the system still crashes at the exact same moment when I try to assign the CV to a parameter.
My Question: Is there a current, working workaround to achieve 1-to-many MIDI mapping in the current build of MODEP?
Has anyone found a way to stop the Named CV assignment from crashing the system, or is there an updated mod-host patch floating around that removes the hardcoded 1:1 MIDI limit?
I pulled the journalctl logs and caught the crash: Main process exited, code=killed, status=11/SEGV
I also attached gdb to the running mod-host process and caught the backtrace when triggering the crash via the web UI. It is failing directly inside the JACK library:
Plaintext
#0 0x00007fffb5357124 in ?? () from /lib/aarch64-linux-gnu/libjack.so.0
#1 0x0000555644df3248 in ?? ()
#2 0x0000555644df564c in ?? ()
#3 0x0000555644df6800 in ?? ()
It looks like mod-host is passing a bad pointer or invalid port ID to JACK when it attempts to route the Named CV assignment.
It looks like the crash happens in between getting the minimum and maximum values, as minimum does get initialized by jack_get_property.
Looks like Debian has some options to get a better backtrace. I haven’t tried this myself, but I think it could work, as Raspberry Pi is using Debian APT servers directly. Try setting this environment variable before gdb: