Hardware controller for Zynaddsubfx

Hello,
As I’ve been using Zynthian for year now with mainly Zynaddsubfx I’ve gotten a bit frustrated on the lack of control. Not only are a lot of parameters missing, it also takes a long time to go through them. It’s such an amazing sounding engine but things you can modify even on the most rudimentary synths you can’t here.

So I thought about getting a second hand Novation Remote SL to control it, or a Launchcontrol XL.
However:

  • It seems that a lot of controls are not only inaccessible from a Zynthian but also not via midi if I look at this webpage - https://zynaddsubfx.sourceforge.io/doc_3.html
  • Concluding from that is there a way to help integrating things like basic envelopes or waveforms? I had a look at the Zynthian github but couldn’t see where I might find related files.
1 Like

Welcome to a world that is getting a lot of attention.

As the size of the engines have grown the need for a way of dealing with large sheets of control devices is growing as an issue.
The flexibility of the system means that as long as we can get a MIDI signal out of something the odds are we can use it, but as you probably realise there’s lots of mapping and configuration to be done and that is inevitable.
Your idea of how to map 32 encoders to Zynaddsubfx is different from mine and I’d probably use helm at the moment anyway. :smiley:

If we can get this right then as the devices appears and the mappings are created we can allow easy copying of these so that,hopefully, it’s write it once and use it many times on other zynths. I’m quite preapred to put together mappings once but not so keen on doing it before every use!!!

It probably all starts with a table of mapping that would suit of all possible controls within Zynaddsubfx and saving that as some file that can be developed. It’s basically a subset and mapping that could produce a cut down GUI display.

It would also be nice if we could move around the GUI when it has lots of controls. There is no way ( that I know of) of going back if driving a zynth from encoders, so if you have an envelope spread across two 4 encoder pages you have to loop right round the page list via the select button to get back to the previous page … :smiley:

Read around on the forum and you will start to get the feel of how this is being approached and by whom, as you wander round the winding paths that lead from thread to thread of the dusty towers you will notice displayed the many,many audio demonstrations which have been willingly, sometimes less willingly under the thin guize of :face_with_monocle: which is by far the best way of starting your complete decay into zynthianism . . .

1 Like

For a long time I want to make a few separate templates for TouchOSC and use it with all our favorite synth engines. Will be happy to collaborate with someone and/or to share when I make something well working. Some extra controls for Pianoteq is something I am also working on right now.

1 Like

Bold-clicking the Select encoder allows you to scroll to any encoder page.

1 Like

It seems, that all parameters of Zynaddsubfx can be controlled via OSC.

Found some info here:

https://www.kvraudio.com/forum/viewtopic.php?t=440045

The zynaddsubfx is great! You can even control everything with the oscpromt (GitHub - fundamental/oscprompt: A prompt for working with osc packets in conjunction with the port hierachy defined by librtosc) from commandline :-)) It workes fine for me.

1 Like

But lot’s of controls are not there in Zynaddsubfx on zynthian main gui. Envelope and internal FX controls for instance. That would be great to be able to control, isn’t it ? For that an external gui on a tablet could work great

2 Likes

The OSC API is here in case someone wants to create an interface.

2 Likes

I’ve a task on my TODO list for implementing the full OSC interface, but the OSC list is really big because of the huge amount of voices/parts/engines you can combine on a preset. Implementing this on zynthian UI is a nice challenge and i haven’t found a good solution yet … although it’s true that zynthian UI has evolved quite a bit from the last time i think about it. It’s time to try again …

@emji-1, if you have a good understanding of ZynAddSubFX, you could help me with this. I’m open to your ideas and proposals … :wink:

Regards,

2 Likes

Current OSC implementation is within Python and may be too slow for some use cases, e.g. performance (note on / off) so maybe we develop a new low-level OSC interface / library in parallel, i.e. leave current one there for a while to allow backward compatibility whilst creating new one. Or maybe just implement existing API and add to it - probably easier :slightly_smiling_face:.

Each layer could be accessed via a /layer prefix and have some common parameters then add engine specific parameters / templates. Perhaps have the concept of ‘slots’ for each part of a layer’s chain, e.g. /layer0/slot1/ may be the first plugin attached to the first layer. (Slot 0 would be the layer’s engine).

It would be good to be able to get feedback, i.e. current value of each parameter sent to OSC client when it changes. Also info on what layers are populated with what plugins, etc.

I have done some work on this so am happy to assist with its design and development. (Take a look at the zynmixer branch and hear about it at Monday’s ZynthClub :grinning:.)

There will be some work involved in implenting templates for each engine, plugin, etc but I anticipate that most can be wrapped in common code so that it becomes a fairly simple task to bridge the Zynthian OSC server with each engine or plugin, exposing all parameters they themselves expose.

1 Like

Sure, I’d love to help, though I know I’m not gonna have much time up until November. I"m also still learning how that Zynth works exactly. Think there’s quite some stuff to it, very complex.

2 Likes