zynaddsubfx / zyn-fusion-issues

Issue Only Repo
31 stars 0 forks source link

A modulation matrix to consolidate the modulation UX #360

Open dancesWithBugs opened 2 years ago

dancesWithBugs commented 2 years ago

If I understand correctly, each voice in ADDsynth has a modulation oscillator, but can also itself serve as a modulator for another voice. The current way to achieve the latter is to select a voice, click the modulation tab, click "NORMAL", which is a drop-down menu (for voices other than voice 1) and select e.g. "MOD 1" to use voice 1 as a modulator for the currently selected voice. Then maybe turn down the volume of the modulating voice. If that is indeed the correct workflow, I'd like to suggest a UI change.

Instead of the current per-voice "MOD-OSC" and "MODULATION" tabs, we could have a global modulation matrix like this somewhere (perhaps accessible via a global modulation tab):

    [v1][v2]...[v8]
[m1] ⮥
[m2]

.
.
.
[m8]
 v1
 v2  ⮥          ⮥
.
.
.
 v8

Arrows indicate modulation. [m1-8] are the voices' internal modulators. To the right of this matrix, there would be a panel containing the contents of the current "MOD-OSC" tab if a [m1-8] row-button is clicked, and the current "MODULATION" tab if a [v1-8] column-button is clicked, respectively.

I'm guessing that it is due to current technical limitations of zynaddsubfx that the mod-oscs are specific to a particular voice, that only voices of lower numbers can be used as modulators, and that a voice can only modulated by one other voice (unless indirectly by chaining modulators). If that assumption is correct, invalid options could be disabled in the matrix, though it would certainly be nice if anything could modulate anything else, including self-modulation (feedback).

In general, the above is just a super rough sketch to perhaps inspire someone with more intimate knowledge of zyn-fusion and zynaddsubfx.

fundamental commented 2 years ago

There's been a few discussions in the past about more explicitly showing the modulation matrix to users in the UI. So far nothing has been coded up to do so, but it sounds like you have the general idea.

friedolino78 commented 7 months ago

for control rate modulation I started something in https://github.com/zynaddsubfx/zynaddsubfx/pull/131