COMPONENT REPORT / SANNIDHYA SINGH

COMPONENT 02 · PROCESSOR

Four ways
to shape sound.

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.

02 / ROUTING

Dry, send, and return

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.

dryMix  = sum(voice.sample × voice.dry)
sendMix = sum(voice.sample × voice.send)
processed = Compressor(Chorus(Ring(Gate(sendMix))))
output = dryMix + returngain × processed

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

LevelSupported featureEvidence
10Passes audioAll wet controls at zero pass input through the chain.
20One effectSinusoidal ring modulation.
30Three effectsRing modulation, chorus, and compression.
40Controllable effects sendPer-voice dry/send levels and XML-controlled return gain.
50Four effectsNoise 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.