8 — Odd Forward, Even Reversed
Process an octophonic (8‑channel) sound such that odd‑indexed channels play forward while even‑indexed channels are time‑reversed — with options for indexing scheme, crossfades, alignment policy, and channel remapping.
What this does
Takes an 8‑channel Sound and reverses either the even or odd subset while leaving the other subset forward. Useful for antiphonal textures, palindromic call‑and‑response, and spatial retrogrades. Options ensure consistent indexing (0‑based vs 1‑based), gapless crossfades at the boundaries, and preserved start/end alignment.
- I/O: 8 in / 8 out, original order.
- Indexing: Choose whether channels are labeled 0–7 or 1–8 for “odd/even”.
- Alignment: Keep start/end anchors so forward and reversed subsets end simultaneously.
Quick start
- Select an 8‑channel Sound in Praat.
- Run script… →
8 - Odd forward Even reversed.praat. - Set Index base (0 or 1) and choose Reverse subset = Even (default) or Odd.
- Adjust Crossfade at boundaries (ms) if you hear clicks.
- Pick an Alignment policy (End‑locked recommended). Press OK.
Channel policy
| Index base | Odd channels | Even channels | Example |
|---|---|---|---|
| 0‑based (0..7) | 1,3,5,7 | 0,2,4,6 | “Even” includes channel 0 |
| 1‑based (1..8) | 1,3,5,7 | 2,4,6,8 | Matches typical speaker labels |
If your audio interface/DAW labels start at 1, choose Index base = 1 to keep “odd/even” intuitive.
Parameters (Praat-style)
| Label | Type | Default | Description |
|---|---|---|---|
| Index base | option | 1 | 0 | 1 — how odd/even are computed |
| Reverse subset | option | Even | Even | Odd |
| Preserve alignment | option | End‑locked | Start‑locked | End‑locked — which anchor remains fixed after reversing |
| Crossfade at boundaries (ms) | real | 10 | Fade‑in/out at clip edges of reversed channels to avoid clicks |
| Trim leading/trailing silence | boolean | no | Remove silence before/after processing |
| Channel map (CSV) | text | "" | Optional remap (e.g., 0,1,2,3,4,5,6,7 or 1..8 for 1‑based UIs) |
| Normalize | boolean | yes | Peak normalize output to target |
| Target peak | real | 0.99 | Normalization target |
| Report | boolean | no | Print applied subset, index base, and alignment |
Per‑channel options
| Label | Type | Description |
|---|---|---|
| Exclude channels (CSV) | text | Channels that should bypass processing |
| Per‑channel offset (ms) | CSV | Delay/advance after reversal to create flams |
| Per‑channel gain (dB) | CSV | Level trims post‑process |
Presets
🎭 Antiphonal mirror
Index base=1; Reverse subset=Even; Crossfade=15 ms; End‑locked; Normalize=yes
🪞 Palindrome pairs
Reverse subset=Even; Channel map=0,1,3,2,4,5,7,6; Crossfade=12 ms
⏱️ Flam spread
Per‑channel offset=0,8,0,8,0,8,0,8 ms; Crossfade=8 ms
Workflow & Checks
- Confirm indexing: Compare with your DAW/driver. If channels are labeled 1–8, set Index base=1.
- Pick anchor: End‑locked keeps all channels ending together (good for synced cues). Start‑locked preserves the onset alignment.
- De‑click: Increase Crossfade if you hear clicks at the reversal boundaries.
- Gain staging: Enable Normalize, especially if per‑channel offsets create overlaps that increase peaks.
- Downmix sanity: If folding to stereo later, audition mono compatibility (reversals can change phase relations).
Edge cases
- Short clips: With very short material, use small (≤5 ms) crossfades to avoid smearing transients.
- Silence handling: Trimming silence can shift perceived entry times; prefer End‑locked when trimming.
- Non‑octo inputs: The script expects 8 channels; if your source differs, route or pad to 8 first.
Math
Time reversal
Given channel i with samples x_i[0..N−1], the reversed signal is x_i^R[n] = x_i[N−1−n].
With end‑lock, the reversed channel is time‑shifted so that its last sample aligns with the original end.
With end‑lock, the reversed channel is time‑shifted so that its last sample aligns with the original end.
Crossfade at boundaries
Apply fade‑in/out windows w(t) at the first/last T_f ms of each reversed channel: y = w_in·y + (1−w_in)·ε near start, and similarly at end; Hann windows avoid clicks.