diff --git a/Sounds.md b/Sounds.md index 4ea70b1..0f0f0e1 100644 --- a/Sounds.md +++ b/Sounds.md @@ -98,12 +98,20 @@ Input and the Output once each; their pins carry sound and fit nothing but each | Node | What it does | | --- | --- | | **Gain** | Louder or quieter, in dB (`Gain (dB)`): 0 leaves it alone, -6 is about half as loud, +6 twice. Above 0 the sound can clip. | -| **Pitch** | Higher or lower, in semitones (12 is an octave). It is the speed the sound is played at, so a higher sound is also shorter, and it applies to the **whole** sound wherever the node sits. | -| **EQ** | Five bands in dB: 80 Hz and 12 kHz as shelves, 250 Hz, 1 kHz and 4 kHz as peaks. A band at 0 does nothing. | +| **Pitch** | Higher or lower, in semitones (12 is an octave, 0.5 a quarter tone). The sound **keeps its length**, and the pitch applies to the **whole** sound wherever the node sits. | +| **5-Band-EQ** | Five bands in dB: 80 Hz and 12 kHz as shelves, 250 Hz, 1 kHz and 4 kHz as peaks. A band at 0 does nothing. | Every number of these nodes is an **input**: typed in while nothing is connected, or fed from a -parameter of the Input. Each is held to its range (Gain -60 to +24 dB, Pitch and the EQ bands --24 to +24), whichever way the value arrives. +parameter of the Input. Each is held to its range (Gain -120 to +24 dB, Pitch -64 to +64, the EQ +bands -60 to +24 dB), whichever way the value arrives. + +**How Pitch keeps the length.** The sound is first read faster or slower, which sets the pitch, +and then stretched back to its length by WSOLA: short frames (40 ms) laid over each other, each +moved a little so a tone carries on without a jump. The pitched copy is worked out when a voice +starts — about 15 ms per second of a 48 kHz channel — and kept for the next voice at the same pitch +(the last 32 are kept). A looping sound is stretched across its seam, so the loop stays clean. +Far from 0 it gets rough: a pitch that lands above half the sample rate folds back down, and a +very low one smears, since a frame is shorter than one period of what is left. **It is a line, not a mixer.** An input takes one edge, so the way from Input to Output never forks; a node hanging off the line is simply not heard. A node on the way with nothing coming in, or a