Tetr4 Switch - Plugin in development

The plugin contain four states. You can select choose between each effects pressing the footswitches. Note that only one is currently active.

For each state you can toggle on or off the config sliders. Each one represents an CV output. The idea here is that when the an footswitch is activated, the four CV states will be change their value based on Config related.

For example, in the following gif example, we will have this states

  • Footswitch 1 - Config 1:
    • 10v: 1, 3, 4
    • 0v: 2
  • Footswitch 2 - Config 2:
    • 10v: 3, 4
    • 0v: 1, 2
  • Footswitch 1 - Config 1:
    • 10v: 2, 4
    • 0v: 1, 3
  • Footswitch 1 - Config 1:
    • 10v: 1, 2, 3
    • 0v: 4


If you need that the active means 0v instead of 10v, you can change the upper sliders

And finally, you can assign a better label to explain what the state means for you

I will edit this text later to explain:

  • how you can use it on mod platform;
  • the current development state;
  • how you can use it within MIDI Chocolate :chocolate_bar:.

you are the best @SrMouraSilva. This is the thing I tried to build so many times with onboard plugins but couldn’t get to work. Please consider to add four more switches - or have another version with 8 config sliders each.

If you’d like I could help out with the mod-ui part.


Hello, @spunktsch. I’m sorry about the late response. Only now I discovered how to correctly build and install the plugin on my Dwarf.

I would like some help related to the mod-ui part. If you can help me, we can do a version with 8 sliders :slight_smile:.

This is the current state.

I’m having difficulties for connecting the pedal state with the ui state. I would like to emit an event for the plugin when I press on a knob or a switch (and also, vice-versa). Do you know any source code of a plugin that I can check it use as an example?

If you have some curiosity, there is the current state


sure I can. All Plugins live GitHub - moddevices/mod-lv2-data: MOD LV2 data (plugins, presets and pedalboards) you can check them out. You have to have at leaset the mod-role and the mod-port-symbol (which is the parameter name). I’m not really knowledgeable about the specifics but @falkTX might chime in and give a quick hint where to look. From mod-lv2-data/icon.html at master · moddevices/mod-lv2-data · GitHub

<div class="mod-pedal mod-pedal-dragonfly-roomreverb">
    <div mod-role="drag-handle" class="mod-drag-handle"></div>
    <div class="mod-footswitch" mod-role="bypass"></div>
    <div class="mod-control-group dragonfly-roomreverb-group-levels clearfix">
        <div class="mod-knob">
            <div class="mod-knob-image large" mod-role="input-control-port" mod-widget-rotation="270" mod-port-symbol="early_level"></div>
        <div class="mod-knob">
            <div class="mod-knob-image small" mod-role="input-control-port" mod-widget-rotation="270" mod-port-symbol="early_send"></div>
        <div class="mod-knob">
            <div class="mod-knob-image large" mod-role="input-control-port" mod-widget-rotation="270" mod-port-symbol="late_level"></div>
    <div class="mod-control-group dragonfly-roomreverb-group-highs clearfix">
        <div class="mod-knob">
            <div class="mod-knob-image large" mod-role="input-control-port" mod-widget-rotation="270" mod-port-symbol="in_high_cut"></div>
        <div class="mod-knob">
            <div class="mod-knob-image small" mod-role="input-control-port" mod-widget-rotation="270" mod-port-symbol="early_damp"></div>
        <div class="mod-knob">
            <div class="mod-knob-image small" mod-role="input-control-port" mod-widget-rotation="270" mod-port-symbol="late_damp"></div>
1 Like

Thanks, @spunktsch. It helped a lot.

Now the GUI is currently working.


(the gif was buggy).

Now I’m trying to discover how to debug or, at least, show some print messages. Is someone has any tip or trick?


use the lv2 log extension. those “prints” get logged from the DSP side all the way to the browser console.


Ok, lets have a look

Imagine that you have a pedalboard with the following pedals:

  • Octaver
  • Distorsion
  • Fuzz
  • Amplifier + Cabinet Simulator
  • Chorus
  • Delay
  • Reverb

You decide that you will use it in mainly four scenarios, that can be interchangeable at in any moment of your musics:

  • Clean: Just Amplifier + Cabinet Simulator on
  • Modulation: Amplifier + Cabinet Simulator, Chorus, Delay, Reverb on
  • Distortion: Distorsion, Amplifier + Cabinet Simulator on
  • Solo: Octaver, Fuzz, Amplifier + Cabinet Simulator, Delay, Reverb on

A way for you do it is creating four snapshots. But it could be an inconvenient if you want to change the values of pedals after create them.

An alternative is using tetr4 switch pedal. You can imagine it as a less powerful alternative to snapshots, that avoid this previous situation :slight_smile: .

With it, you have four CVs that you can assign with any of pedal parameters. So the idea is that you assign CVs with the pedalboards bypasses. For instance, I decided to assign as the following way:

  • CV 1: Distortion bypass
  • CV 2: Octaver, Fuzz bypasses
  • CV 3: Chorus bypass
  • CV 4: Delay, Reverb bypasses

I rename it to make more clear with each one means:

Tetr4 Switch has four presets. At each preset you have four toggles/switches. If I want to make a clean sound when Preset 1 enable, they I will make all switches as off. If I want to make Preset 2 just a distortion, then I will make only the CV that is assigned to Distortion on.

You can see here (but not hear) a demonstration:

At bottom, you can see the CV outputs for debugging :nerd_face:

Now I need to implement the usage with the real footswitches. Currently, only by the GUI is properly switching the effect Presets.


Since it is CV you can’t switch ON/OFF the octaver plugin alone anymore ?
Wouldn’t it be more useful if it was midi ?

might be an extra step and plugin but why not trigger some midi with that cv?

1 Like

Yes, but it is 4 extra steps…

Thanks for your feedback, @Rom .

Yes, CV restricts the management of the octaver plugin by Web UI. Is it the problem that you thought?

I’m sorry, but it’s possible to assign notes generated by a plugin to another plugin parameter? I didn’t know that it is possible.

Anyway, I think that isn’t possible to assign more than one parameter for the same MIDI command, I remember that I tried last week, I think. So the assignment for multiple footswitches for the same tetr4 switch parameter probably requires a more complex strategy that send more than one midi message for each for four tetr4 switch possible parameters.

My current update, maybe the last one. I think that I finished the physical part, but I have not tested. I’m having troubles for connecting my device with a computer, apparently the dwarf USB B doesn’t work anymore.

The source code is on my Github if someone would to explore it.

Yep, since you program the 1st switch with Fuzz+Oct you can’t have the Octaver only. Another solution would have to “sacrifice” another switch from your plugin to make it engage the Octaver only… so having 4 switches would become rapidly not enough and it would make sense to have a switch for each plugin + the actual 4 switches for combinaisons.

Yep, you can send the midi to the “virtual loopback” so the ModDevice is listening to the message you generate inside the ModDevice !
I use this a lot so I can engage plugins with my midi controller, or with the dwarf (when I don’t need the MC8 midi-controller), or with the computer of a friend (with midi-bluetouth)

Nope, but you can send multiple midi message with one single footswitch !
And it could be really nice to set some parameters precisely :

  • switch 1 : delay ON + delay feedback 58 + octaver ON + octaver wet 127
  • switch 2 : crunch ON + Gain 102 + delay OFF + reverb wet 50
  • …
1 Like

Ok, I think that I understood the problem. For switches per preset just allows fine control of four plugins without aggregate them in a unique switch.

At a similar way, maybe the number of presets could not be sufficient for some musicians.


I think that a version that can assign any plugin individually with midi messages is a good idea, but at the moment MIDI is something that I don’t have programming skills. I could offer a extended version of tetra switch with more switches (8 switch with 8 presets?), but my Dwarf pre diagnosis is not good.

1 Like

Hello, all.

A new update:

I added a select list parameter for this plugin. It is useful if you want assign a device footswitch (B, C or B+C).

You can also use the four paratemeters `Preset [1…4] if you want to assign a specific preset for a footswitch. Actually, you couldn’t yet… the device leds values aren’t showing the current state I’m trying to fix a wrong behavior.

But you can use they as well for assign an external device, like M-VAVE Chocolate. Talking about this controller, as it doesn’t shows any information because it doesn’t has leds related for each parameter, I added a “dummie parameter” just for enable showing notification on device

You can see an example here:

Note: Maybe you have seen this following parameters. Actually they didn’t work. I’m trying to understand how can I use it for customize the message showed on notification.


Dev Diary #7

Now it works. So, if you assign the Preset 1-4 parameters for some of the device footswitches, the led is turned on if the respective patch is in use. The led colour is based on the preset number.

Maybe you prefer to assign the “current preset” parameter. I tried to change the led colour based on the preset, but I noticed that it doesn’t work appropriately when a parameter is a list like that. I opened a issue for mod team (Lv2-hmi.h issues on lv2:portProperty lv2:integer, lv2:enumeration).

I noticed something that makes me sad. Unfortunately the notifications will only appears If the assigned parameter is showing on device led. It is something that I wasn’t expecting.

I also refactored the source code to be easier to make the Hep7a Switch. And yes, the extended version will to be 7 instead of 8 because of the number of colours assignable for the Dwarf LEDs.


Hello!! I have no idea how to install it on mod dwarf. Is there any tutorial step by step?

Hello. This plugin there isn’t present on the dwarf store or beta store. Apparently the mode store doesn’t accepting new plugins by now.

1 Like

it does, we should get back to more developments very soon.
but going forward we only want to have stuff in beta that is 100% confirmed to be pushed into stable eventually, for the final stages of testing.
while a plugin is in development we should find some other way. I have some ideas on how to do it, should happen later in the month.