Auto mapping midi controller sliders + encoders to first available parameters in active chain

Here’s the scenario: I startup Zynthian and roll the dice to select a synth chain. I would like to start modifying parameters immediately with something like a nanokontrol. I understand the parameters would be different with every synth, but I think there’s a fair chance I’ll hit a filter cutoff & resonance at the very least if it automapped to the 16 sliders/dials. Correct me if I’m wrong but I think it’s not possible right now. Is it something that could be possible now we have ‘ACTI’ midi in mode?

1 Like

You are right that there is currently not an auto-mapping of CC controllers. There are some engines that have default mapping for some controls. You could submit a feature request for this.

You may be wrong in assuming you will hit a useful parameter in the first 16 CC (at least 4 pages). It would be nice to think that all engines had been designed or configured to present their most useful controls up front but in reality this isn’t always the case. We can add configuration to arranged controls into pages and order them to improve workflow and have done so for some engines but certainly not all.

What might be a more useful feature is to have an option to auto-map based on profiles, e.g. you may prefer to have filter cutoff and resonance on two controls and amplitude envelope on four others. If there were a way to define such a profile so that a (currently non-existent) automatic mapping of controllers tried to map these as required it may provide a more consistent and useful result. You may then label your controls Cutoff, Resonance, A, D, S, R and they may map appropriately when different synths are loaded. Such a mechanism would need some rules and user configuration that may prove challenging, e.g. a synth may have many envelope generators. You may want to have something assigned to a controller if it exists and if not then to assign a second priority option, etc…

We also want to have profiles for different controllers. This has started with the ctrldev mechanism that can be improved with multiple profiles for each type of device. Maybe there should be some heuristic algorithm that kinda creates such profiles dynamically based on user preferences, selected engine and available control devices.

2 Likes

Ok, I like this idea and profiles makes it flexible. I do see the challenge with more complex synths, I’ve been playing around with Triceratops and as the name suggests…it has three oscillators and therefore many pages of controls. Along with auto-assign, I think making the assignment process easier would be great if possible.

Two more things come to mind:

  1. A ‘connect the dots’ style interface: an image or diagram of the controller with all the control labels floating in a word cloud (and maybe a keyboard for midi notes) above. Drag and drop to the controls as you please then save to a profile (see my very attractive diagram below!). I’m not sure if this would be better to use in the web interface or on the touchscreen UI

  2. Your dynamic profile creation could include a ‘lock’ and ‘move’ functionality. After the first auto assignment dice roll, you can lock the things it gets right or move the ones you want via touchscreen then lock them. Then hit refresh or something as it fills the rest of the controls until you’ve got what you’re after.

Both of these kind of rely on some kind of visual representation of the device you want to configure. Do you think something like this would be difficult to achieve? I can see how it might ‘break the rules’ of the interface if you tried to put it in the regular UI. But if it’s there, then it will be very convenient and immediate for users to plugin their device, see a diagram, drag controls, save and off you go.

P.S. Have you ever heard of the synth parameter Elementum? No? Me neither, but I think it would make a cool sound

image

I think this is already really easy. Find the parameter page, click the encoder, send the CC. After @jofemodo implemented this I was astounded at how easy and intutive it felt. I know it is logical and on paper sounds like a good idea but using it for real was more pleasing than I expected. (Well done @jofemodo - an excellent enhancement!)

I would be really worried that your “connect the dots” idea would be overly complex. Indeed the word cloud example you show just confuses me! I understand the concept but have never really found word clouds to be particularly useful (maybe it is the way my mind is wired) and I see substantial challenges in implementing such a feature.

I agree there should be a mechanism of saving configurations. The iterative lock and reload idea may be more complex than is actually required but maybe during implementation such an idea may work. I don’t think anything will get developed without a feature request though!

Sounds like a newly discovered element - maybe Thomas Dolby sang about it?

2 Likes

I’ll submit a feature request, right now I’m kind of just throwing stuff at the wall to see what sticks.

So how would it work? Do we need a ‘synth control’ mode for the plug & play device drivers then this mode allows configuration of your own profiles inside Zynthian?

I think the current midi learn method is fine up to a point. For example: if you’re trying to assign parameters to a nanokontrol, it’s 16 dials and sliders. Then (if you want to use them), another 24 track buttons for example, that’s 5-10 mins worth of config at least. Scrolling up and down pages and assigning etc. What if you decide you want to insert some new controls in front but you like the layout of everything else? That’s where I think drag and drop could be powerful.

The word cloud was an idea based on the heuristics thing you mentioned (e.g. the most used parameters are the big ones in the cloud). A simple list of the parameter labels for the active synth can be used to drag and drop onto the diagram of the midi controller. I think what I’m getting at is something like a simpler version of novation components for Launchpad controllers.

1 Like

I created a couple of feature requests, one for automap and one for a drag and drop midi assign function.

This vid shows how the novation components midi assign works. The feature request could be a simpler version of this: