magnetophon / DigiDrie

A monster monophonic synth, written in faust.
GNU Affero General Public License v3.0
21 stars 0 forks source link

feature request: copy and link #25

Open magnetophon opened 4 years ago

magnetophon commented 4 years ago

I know you are not at this stage yet, but maybe we can already brainstorm.

copy functions

We talked about adding functions to copy parameters from one macro to another.

In an ideal world, we would have:

Maybe that is too much work, and not so useful. We can decide later, after we made a bunch of sounds using only the simple copy function (the first).

link switches

It would also be nice if you could tweak parameters of multiple macros in one go.

I imagine 3 switches: "link changes in X" "link changes in Y" "link changes in Z"

If a switch is on, any parameter you tweak changes the same amount in the other 3 macros of that dimension. So if all 3 switches are on, and you tweak the "Q" of the filter in one macro, all the "Q" macros move the same amount.

We could add another switch in the same section: "relative / fixed". "relative" is what I explained above. If it is on "fixed" and you tweak a parameter, that param snaps to the same value in the other 3 macros of the linked dimension(s), if any. So if all 4 switches are on, and you move the Q, all the Q's are now the same value.

One of the things I love about your plugins, is the keyboard shortcuts, so I hope we'll have many of them here as well!

It would be great if we could use ctrl, alt and shift for the 3 switches. So when you hold ctrl, and "link X" is off, "link X" will turn on. When you release it, it flips back. When it was already on, holding the modifier turns if off. Alt for "link Y", and shift for "link Z"

Another key combo could permanently put the switch in the other position. Let's take l, for link. So you'd hold ctrl to change the position of the "link X" switch. When you now press l and then let go of ctrl, it doesn't flip back. Alt-l for "link Y", and shift-l for "link Z"

It doesn't have to be l, we could also choose for example t for toggle.

I hope I explained everything clearly!

What do you think?

ryukau commented 4 years ago

Just in case, I'll work on to integrate Faust DSP code into plugin. So I'll look close on this later.

One consideration is that my UI code can't use context menu.

I'm planning to add keyboard shortcuts to tab view. Randomization is top priority to me.

Link and swap functions requires some mechanism to select tab, which isn't implemented for now. I'll think about possibility of them.

  • copy from current settings (the sound you hear at the moment you use this function), to "macro foo"

This requires re-implementation of macro system to the UI code. We can't access intermediate value that DSP is holding, unless they are exposed as parameter.

  • The above 4 functions, but only for one parameter, or only for one group of params (filter, or osc A, or vectorMixer).

For one parameter case, I consider it as a functionality DAW should provide, not by plugin. VST 3 has a functionality that request DAW to open context menu for a parameter. At least on FL, I can copy a parameter with this context menu. Probably Cubase provides similar functionality.

It would be great if we could use ctrl, alt and shift for the 3 switches.

Implementing hold ctrl, shift etc. to toggle knob behavior requires dedicated tab view just for macro. I probably won't do that. Instead, I'm thinking about switching state by pressing key. For example, key x toggles between link x and unlink x state, and UI shows a inditcator of link/unlink state.

Another idea is to provides concatenation of command. Suppose we have following key bindings:

Then user inputs cm1m2. This will be interpreted as "copy macro 1 to macro 2". Downside is that I have to learn basic parser implementation :p

magnetophon commented 4 years ago

Another idea is to provides concatenation of command

YES, a vim synth! :heart: