One controllable send. A persistent effects chain.
Component owner: Sannidhya Singh
Each voice contributes separately to the dry mix and effects send. The shared send runs through noise gate → ring modulation → chorus → compressor. A return gain controls how much processed audio reaches the final mix.
01 / DEMONSTRATION
Follow the same phrase through the chain
The 14.57-second demo repeats a drum phrase using one synthesis component. The first five sections use dry="0" send="1", allowing bypassed and processed versions to be compared. Each section is 2.4 seconds long; the last includes the final note and effects tail.
For each active voice, the system obtains its generated sample once. It adds sample × dry to the direct mix and sample × send to the effects input. Final output is the dry mix plus the processed send multiplied by returngain.
All four effects persist throughout a render and retain state between frames. XML Effects events update settings instead of creating a processor for each note. The project effects FAQ accepts one controllable send feeding a series chain.
After the last voice finishes, the synthesizer processes 50 ms of silent input so the chorus’s delayed audio can finish.
03 / PROCESSORS
What each effect does
01 · GATE
Noise gate
A linked stereo peak detector opens the gate above a configurable threshold. Its closing threshold is approximately 3 dB lower, with a 15 ms hold to prevent rapid switching. Gate gain has a 1 ms attack and 10 ms release; the detector decays over 10 ms. Wet changes are smoothed over 5 ms.
Demo: from 2.4 s, the quiet tom falls below the −24 dB threshold while louder hits open the gate. Tails shorten as signals decay.
02 · RING
Sinusoidal ring modulation
Each input sample is multiplied by a sine carrier. A shared phase keeps both channels synchronized. Processed and original input are mixed using ringwet. Frequency and wet changes use 5 ms smoothing.
Demo: from 4.8 s, a 90% wet mix produces a metallic tone. The carrier changes from 110 Hz to 280 Hz at 6 s.
03 · CHORUS
Stereo chorus
Two changing delay voices are read with linear interpolation. Base delays are 22 ms and 29 ms, each varied by ±5 ms. The second voice’s LFO runs at 0.83 times the first voice’s rate. A quarter-cycle channel offset creates stereo variation. A fixed 50 ms circular buffer per channel supplies the delayed samples.
Demo: at 7.2 s, the wet mix is 75%. LFO rate changes from 0.65 Hz to 1.8 Hz at 8.4 s. Rate and wet changes use 10 ms smoothing.
04 · COMPRESSOR
Compression
A linked stereo envelope detector follows the larger channel magnitude. Above threshold, the desired gain reduction in decibels is −aboveThreshold × (1 − 1 / ratio). Detector and gain use a 1 ms attack and 80 ms release. Wet changes are smoothed over 5 ms.
Demo: at 9.6 s, the threshold is −30 dB and the ratio is 8:1. At 10.8 s, settings change to −26 dB and 12:1. Strong hits become quieter; no automatic makeup gain is added.
04 / SUPPORTED ELEMENTS
Rubric coverage
Level
Supported feature
Evidence
10
Passes audio
All wet controls at zero pass input through the chain.
20
One effect
Sinusoidal ring modulation.
30
Three effects
Ring modulation, chorus, and compression.
40
Controllable effects send
Per-voice dry/send levels and XML-controlled return gain.
50
Four effects
Noise gate completes the four-effect chain.
The main score uses all four effects, per-note routing, and changing settings. Awarded grades are determined by the instructor and TA.
Relevant source files
CEffects, CNoiseGate, CRingModulation, CChorus, CCompressor, and routing in CInstrument and CSynthesizer.