MiniDexed icon indicating copy to clipboard operation
MiniDexed copied to clipboard

Implement Unison Mode using multiple additional TGs

Open probonopd opened this issue 6 months ago • 15 comments

Closes #315

This needs intensive review and testing, since it heavily modifies the sound path.

MiniDexed
├── TGn
│   ├── Unison
│   │   ├── Voices
│   │   ├── Detune
│   │   └── Spread

In performances, there is for each TGn

UnisonVoicesn=3
UnisonDetunen=10
UnisonSpreadn=25

Note that the meaning of the numbers in UnisonDetunen and UnisonSpreadn is still subject to change.


Theory of operation

Each logical TG can play multiple, slightly detuned and panned copies of the same sound using auxiliary TGs. All parameter changes are kept in sync across the unison group, and detune/spread are applied per voice for a rich, wide sound.

Unison Voices: "Unison voices" refers to the number of simultaneous, slightly detuned and panned copies of a sound (voice) that are played together for a richer, thicker effect. In MiniDexed, you can set the number of unison voices per Tone Generator (TG).

Tone Generators (TGs) and Auxiliary TGs: A TG (Tone Generator) is an independent instance of the synthesizer engine. The main TG is the logical TG you interact with directly. "Auxiliary TGs" are additional physical TGs assigned to the same logical TG to realize unison. For example, if you set 3 unison voices for TG1, then TG1 uses itself plus 2 auxiliary TGs to play three slightly different versions of the same note.

Unison Group: The "unison group" is the set of all physical TGs (main + auxiliaries) that together implement unison for a given logical TG.

Parameter Propagation: When you change a parameter (such as voice/patch, mono mode, filter, etc.) on the main TG, the same change is immediately propagated to all auxiliary TGs in the unison group. This ensures all unison voices sound identical in terms of patch and settings.

Unison Detune and Spread: Detune: Each unison voice is given a slightly different tuning (pitch offset) based on its position in the group, controlled by the Unison Detune parameter. This creates a chorus-like effect. Spread: Each unison voice is also given a different stereo pan position, controlled by the Unison Spread parameter, for a wider stereo image.

How It Works on Note Events and Voice Changes: On every note-on (keydown) and note-off (keyup), the system calculates and applies the correct detune and pan for each TG in the unison group, so each voice is offset appropriately. When you change the voice/patch or other relevant parameters, the new settings are immediately copied to all auxiliary TGs, and their detune/pan offsets are also updated.

--

To be tested:

  • Reverb and other FX

probonopd avatar Apr 27 '25 14:04 probonopd