| project name: | duatone |
| project url: | https://github.com/roiyaru-bokujin/Duatone |
| author: | roiyaru |
| description: | two-voice tone generator for oscilloscope and Lissajous visualization |
| discussion url: | https://llllllll.co/t/duatone/74866 |
| documentation url: | https://github.com/roiyaru-bokujin/Duatone/blob/main/README.md |
| tags: | synth utility engine |

Duatone is a two-voice tone generator for Norns made for shaping Lissajous figures and oscilloscope motion. By default the voices are panned left and right, making it easy to view each waveform separately while dialing in phase and frequency relationships.
Requires: norns
Install via Maiden or clone/download this repo to:
/home/we/dust/code/duatone
Restart norns after install so SuperCollider picks up Engine_Duatone.sc.
sine, square, triangle, sawWRAP and PING-PONGE1: step through the preset shapesE2: fine-tune the selected side's frequencyE3: change the selected side's waveformK2: switch the selected side (L / R)K2 + E2: coarse-tune the selected side's frequencyK2 + E3: adjust the selected side's volumeK3: toggle phase modulation for the selected sideK3 + E2: disable modulation and set a manual phaseK2 + K3 for one second: restore the current preset to its default valuesL volume, R volume, global volumePreset, phase sweep, per-preset L mod state, L mod rate, R mod state, and R mod rateL mod span min, L mod span max, R mod span min, R mod span maxL pan, R panBy default the voices are hard-panned left and right for oscilloscope viewing and Lissajous shaping. Set both pan controls to 0 for dual-mono output.
The presets recall waveform, frequency, phase, and phase-modulation relationships for both sides as starting points for different Lissajous knots, loops, and geometric figures. Edits remain attached to each preset while the script is running, so moving between presets with E1 does not discard them.
Changing a preset's parameters marks it as edited with a short line above its preset dot. Changes are kept throughout the current session and reset when the script is reloaded.
Hold K2 + K3 for one second to restore the current preset to its default values.
Volume, pan, modulation spans, and sweep mode remain global performance settings and are not restored by preset resets.
OVAL | FIGURE8 | TREFOIL | TRIKNOT | ORBIT | DRIFT | ROSETTE
Duatone is available via the community catalog on norns.local, or it can be installed manually in maiden:
;install https://github.com/roiyaru-bokujin/Duatone
After installation, restart your norns to enable the new engine.