Monique Mono Synth

I have compiled and installed the LV2 version of Monique Mono-Synth which is now supported by our friends over at Surge. Compilation was faily straight forward with a few gotchas like it does not compile the LV2 by default. It exceeds the 100MB available in /tmp. It compiles other versions (VST3, CLAP, standalone) that are not required which made the compile process long. But I have it working now.

It loads Zynthian’s JACK process by about 13% when idle and about 35% when active. (This is compared with Zynthian without anything else running taking approx. 4% which means we see peaks over 40%. I did hear a crack which was likely an exrun and see there were a few ver short (<0.1us) xruns but mostly it seems to work well. [EDIT] Interestingly running without VNC, i.e. no GUI does not seem to reduce CPU load much.

It shows similar errors in Zynthian log as seen in Surge XT when loading presets but the presets do seem to load okay.

None of the parameters are exposed in Zynthian. (We should find the time to change Zynthian to support these types of parameters as well as control ports.) This means sound design must be done using the native GUI.

It sounds really good. It looks like it has 3 oscillators, each with lots of modulation options as well as FM. There is a 16-step arpeggiator with various modulation. I am only speaking from looking at the native GUI. I haven’t found documentation for it. There is a overview here with some tutorials…

I anticipate this would be a synth that needs its native GUI for sound design and we could benefit from saved presets. Talking of which, there are several presets provided.



We adopted this synth and its sequencer companion b-step when Thomas decided to stop writing audio plugins but didn’t want them abandoned. We gave it some initial tlc but it could still definitely use some investment

Things like “have cmake switched for each plugin type” (and probably upgrade the juce submodule) are easy enough for us to do and happy to do so but since it’s more maintenance than active for us I would appreciate if that could come as sort of one request which we can code up a upstream on a slow afternoon

I think the params thing is because a preset swap in juce resets the params and probably sends a param change event and I think lv2 may not expect that from blob based presets? But as I’ve said a bunch I don’t really get lv2 that well so it’s just a hunch

1 Like

Oh and there’s the manual from just before it was open sourced


I’ve just pushed some upgrades to Juce 7.0.12 / CLAP 1.2.0 which will give you the latest Lv2 support.

To build just the LV2 the recipe is the following

git clone
cd monique-monosynth
git submodule update --init --recursive
cmake -Bignore/lv2only -DCMAKE_BUILD_TYPE=Release -DBUILD_LV2=TRUE
cmake --build ignore/lv2only --target MoniqueMonosynth_LV2

where ignore/lv2only is replaced with whatever directory you want of course.


Hi @all!

I have built Monique Monosynth and pushed the install of binaries into the testing branch of zynthian (aka. Oram). It works perfectly fine in Pi5. A rich and complex monosynth that is a pleasure to play. Really fun!

Thanks for your help, @baconpaul !

Regarding plugin parameters, could you consider to add grouping info and if possible, “range/scale points” when available? In Surge you added grouping info, but not “range/scale points” at all. All parameters are float between 0 and 1. It’s difficult to create a usable UI with just this info. This is the point with LV2, that the UI is described in the metadata and you can create custom UIs adapted to the device.

I guess that if JUCE developers implemented “parameter groups” for LV2, they probably implemented “range” and “scale points”. Only guessing, it should be confirmed.

The best,


Yeah juce normalizes to 0…1. Sorry

(Moreover surge parameters have dynamic ranges and meanings which works quite badly with some APIs and daws so we kinda have to normalize to 0…1. The meaning of “osc param 2” depends heavily on type)

That said the to from string functions for all surge params should be correct and we generate an event when display names and string conversions change (although I have no idea what juce does with that in the lv2 wrapper or if lv2 even allows that)

Oh and sure I can peek at what it would take to add clump names to params in Monique. I think it should be straight forward I just need to figure out good names!

OK I took a look and adding plugin-edge param groups to monique is a bit tedious. Not un-doable but the way the code is structured it is quite a bit harder than doing it was with surge. But (always be recruiting devs!) if someone here reading this takes it on I’m happy to share my notes. I don’t think it will make it to our stack in the near term, alas. (Although I may have another plugin very soon which could also be interesting to you all… I’ll do a post here if I get it working)