4-Channel Canon
Quadraphonic version of the canon generator: repeat a source as multiple time‑staggered voices, each optionally transposed and stretched, routed across four output channels (FL, FR, RL, RR).
What this does
Functionally identical to the 8‑Channel Canon but adapted to a quad layout. Generates up to four canon voices, places them on four channels, and supports the same entry timing, transposition, stretch (augmentation/diminution), reversing, normalization, and dry/wet mix.
- Voices: up to 4, each with entry time, gain, transpose, stretch, reverse.
- Timing: ms / samples / tempo sync.
- Routing: straight, pairs, ring, or custom map across 4 channels.
Quick start
- Select a mono or stereo Sound.
- Run script… →
4-Channel Canon.praat. - Set Voices (e.g., 4), Entry spacing (ms) (e.g., 400), and choose Routing pattern (Ring).
- Optional: Transpose (semitones) and Stretch factor per voice.
- Enable Normalize and set Mix (dry/wet). Press OK.
Praat dialog (labels mirrored)
The table mirrors typical Praat-style labels, aligned with the 8‑Channel Canon. If any label differs in your actual dialog, let me know to update 1:1.
| Label (as in Praat) | Type | Default | Description |
|---|---|---|---|
| Voices | integer | 4 | Number of canon voices (1–4) |
| Entry spacing (ms) | real | 400 | Delay between successive voices |
| Time mode | option | ms | ms | samples | sync |
| BPM | real | 120 | Used when Time mode=sync |
| Note value | option | 1/4 | 1/1, 1/2, 1/4, 1/8, 1/16, dotted, triplet |
| Transpose (semitones) | CSV | 0 | Per-voice semitone offsets (e.g., 0,5,7,12) |
| Stretch factor | CSV | 1.0 | Per-voice time scaling |
| Reverse voices | CSV (0/1) | 0 | Reverse playback per voice |
| Voice gain (dB) | CSV | 0 | Per-voice trims |
| Routing pattern | option | Ring | Straight | Pairs | Ring | Custom map |
| Custom map (voice→channel) | text | "" | CSV of channel indices (0–3 or 1–4) |
| Spread to neighbors | real | 0.0 | Leak each voice to adjacent channels |
| Mix (dry/wet) | real | 1.0 | 0=dry only, 1=only canon |
| Normalize | boolean | yes | Peak normalize output to target |
| Target peak | real | 0.99 | Normalization target |
| Report | boolean | no | Print entry times, routing, gains |
Voice→Channel routing
| Pattern | Description |
|---|---|
| Straight | Voice v → channel v mod 4. |
| Pairs | Voices alternate between FL↔FR and RL↔RR. |
| Ring | Voices occupy consecutive channels around the quad ring; later entries rotate onward. |
| Custom map | Explicit mapping via Custom map. |
Typical quad order: FL (0), FR (1), RL (2), RR (3) — confirm with your interface.
Additional parameters
| Parameter | Default | Description |
|---|---|---|
| Entry offset (ms) | 0 | Global offset before the first voice |
| Trim tail (ms) | 0 | Remove trailing silence after rendering |
| Anti-clip headroom (dB) | 0 | Pre-mix attenuation to prevent overload |
| Pitch mode | Varispeed | Varispeed (fast) | Phase-vocoder (pitch-preserving) |
| Crossfade at entries (ms) | 10 | Small fade in/out to avoid clicks |
Presets
🔁 Strict 4-voice canon
Voices=4; Entry spacing=400 ms; Transpose=0,0,0,0; Stretch=1; Routing=Ring; Mix=1.0; Normalize=yes
🎼 Spiral canon (quad)
Voices=4; Entry spacing=1/8 (sync); Transpose=0,3,7,10; Pitch mode=Phase-vocoder; Normalize=yes
⏱️ Augmentation/Diminution
Voices=4; Stretch=0.75,1.0,1.25,1.5; Entry spacing=360 ms; Routing=Pairs
🦀 Crab canon (quad)
Voices=2; Reverse voices=0,1; Entry spacing=0; Transpose=0,0; Custom map=0;3; Spread=0.1
Workflow & Tips
- Gain staging: More voices raise peak level; use Anti-clip headroom and Normalize.
- Tempo sync: Use Note value + BPM for rhythmic entries that lock to picture.
- Routing: For counterpoint clarity, keep Spread small; for ambient swarms, increase it.
- Quad order: Verify FL, FR, RL, RR mapping in your interface/DAW.