feat(vm)!: implement cross-instrument modulation of all voices

The "auto" was misleading, as it meant self modulation when targetting a unit within instrument itself and just voice 0 when cross-instrument modulation. This feature changes the "auto" meaning "self" for instruments self-modulating, and "all" voices for cross-instrument modulations. "all" is implemented by compiling a single send into multiple repeated sends, with only the last popping the stack (if necessary).

Closes #107
This commit is contained in:
5684185+vsariola@users.noreply.github.com
2023-10-07 14:07:39 +03:00
parent 7ee43f199a
commit 8c8232f76e
3 changed files with 57 additions and 18 deletions

View File

@ -17,6 +17,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- The VSTI waits for the gioui actually have quit when closing the
plugin
### Changed
- BREAKING CHANGE: The meaning of default modulation mode ("auto") has
been changed for cross-instrument modulations: it now means "all"
voices, instead of first voice (which was redundant, as it was same as
defining voice = 0). This means that for cross-instrument modulations,
one "all vocies" send gets actually compiled into multiple sends, one
for each targeted voice. For intra-instrument modulations, the meaning
stays the same, but the label was changed to "self", to highlight that
this means the voice modulates only itself and not other voices.
## v0.2.0
### Added
- Saving and loading instruments