vsariola / sointu

Fork of 4klang that can target 386, amd64 and WebAssembly. Tools run on Windows, Mac & Linux
MIT License
254 stars 17 forks source link

Cross-Instrument Modulation Mechanism #107

Closed LeStahL closed 12 months ago

LeStahL commented 1 year ago

Same-instrument modulation behaves differently from cross-instrument modulation - this is a discussion ticket and also a point of reference for the workflow with parameter modulation from the global instrument.

Situation: When using a "send" unit that targets

A discussion with @vsariola reveiled that this is by design, and the intended workflow for cross-instrument modulation is to create a modulation unit followed by as many "send" units as the target instrument's voice count (the first "send" unit without sendpop, the last one with sendpop enabled).

vsariola commented 1 year ago

Slight correction: the situation currently is that every send always just modulates one voice. If you want to modulate an instrument with multiple voices, let's say three, you need three different SENDs.

The meaning of "auto":

Proposed fix:

I don't think there's no use case for self-modulating "all", as it likely would lead to weird behavior anyway. However, it is still possible to implement that manually, just by chaining N sends, where N is the number of voices.

vsariola commented 1 year ago

Ok, there's a catch though, which is minor: if we actually compile a send unit into multiple sends, then if an another send is modulating this send only targets the first. But send modulating send is such a rare occurrence that maybe this is not an issue.

vsariola commented 1 year ago

Can you try the quick test in feat/all-modulation branch if it would've worked for what you were trying to do?

LeStahL commented 1 year ago

Yes, this is exactly what I tried to do :) thanks!

LeStahL commented 1 year ago

Also: The old variant still works.

vsariola commented 12 months ago

Merged, enjoy!