COMPONENT REPORT / SHRIKHA ATCHUTUNI

COMPONENT 01 · INSTRUMENT

Drum
synthesizer.

A complete kit, with independent voices.

Component owner: Shrikha Atchutuni

Nineteen drum sounds use short waveform tables generated in code. The kick is synthesized directly during playback using a swept sinusoid and a decaying envelope. The sequencer can trigger all 20 sounds on demand.

01 / DEMONSTRATION

Hear the instrument alone

This 13.85-second demo uses only the drum component, with dry="1" send="0" on every note. The effects are bypassed.

The first 20 hits follow the sound order below, one hit every half second. The pitch comparison plays the same woodblock table at 0.75× and 1.5×. The envelope comparison plays the same snare with different note durations.

02 / IMPLEMENTATION

How it generates a frame

  1. Trigger a voice. A DrumInstrument note creates a CDrumInstrument. Its duration in beats is converted to seconds using the score BPM.
  2. Read or generate a sample. Table voices hold a fractional playback position and linearly interpolate neighboring source samples. The kick computes its oscillator sample directly.
  3. Shape the note. A 2 ms attack and a release over the final 15 ms of the note avoid abrupt boundaries. Amplitude scales the result. Source tables also have their own decay and edge fades.
  4. Mix active voices. Each voice returns one stereo frame. The system sums active voices into the dry path and effects send.

Pitch and playback rate

The source position advances by pitch × 44100 / outputSampleRate per output frame. Fractional positions use linear interpolation. A pitch of 2 plays twice as fast and an octave higher; 0.5 plays at half speed and an octave lower. The note ends when its duration or source table ends, whichever occurs first.

The live synthesized kick

The kick’s frequency starts high and quickly falls: f(t) = (45 + 105 exp(−t / 0.025)) × pitch. A phase accumulator integrates that frequency. The sine output is multiplied by exp(−6t / duration) and the note’s attack/release envelope. This sound is computed frame by frame rather than played from a stored recording.

Generated source tables

CDrumSamples builds a shared bank once. It combines sinusoids, deterministic noise, pitch sweeps, and decays to create 19 reusable tables. Bright noise is produced by subtracting the preceding noise sample. Each table is normalized to a peak of 0.9 before per-note amplitude is applied. Voices reference shared tables rather than copying them.

03 / SOUND BANK

All twenty sounds

# / XML nameSound constructionPlayback
01 · kickSwept sine + exponential decayLive synthesis
02 · snareNoise + inharmonic sine componentsTable
03 · snare_softShorter snare definitionTable
04 · rimshotHigh, rapidly decaying impactTable
05 · clapThree noise bursts + noise tailTable
06 · closed_hatShort bright noise + metallic partialsTable
07 · open_hatLonger bright noise decayTable
08 · pedal_hatShort metallic hat decayTable
09 · tom_lowLow pitch sweep + impact noiseTable
10 · tom_midMid pitch sweep + impact noiseTable
11 · tom_highHigh pitch sweep + impact noiseTable
12 · floor_tomDeep pitch sweep + longer decayTable
13 · crashNoise + inharmonic metallic partialsTable
14 · rideMetallic partials + noiseTable
15 · ride_bellHigher bell partialsTable
16 · cowbellInharmonic bell partialsTable
17 · woodblockDamped wooden impact partialsTable
18 · claveHigh, short impact partialsTable
19 · tambourineModulated noise + partialsTable
20 · shakerShort bright noiseTable
04 / SUPPORTED ELEMENTS

Rubric coverage

LevelSupported featureEvidence
10Waveform playback from tables19 tables triggered by XML notes.
20Envelope generationSource decay/fades and per-voice attack/release; demo at 11 s.
30PolyphonyIndependent active voices; overlapping demo hits from 12 s.
35Varying pitch playbackFractional resampling; same-table comparison at 10 s.
40At least 20 distinct soundsAll 20 appear in both demo and main score.
50Synthesized drum soundKick generated live with swept oscillator and envelope.

These are implemented features claimed for this component; the instructor and TA determine the awarded grade.

Relevant source files

CDrumInstrument.h/.cpp, CDrumSamples.h/.cpp, and shared CInstrument and CSynthesizer code.