Day 5 · Friday 4 September 2026 · RTA 307

Timbre as Material

The third answer. Electronic music's move: stop asking which notes — ask what the sound itself is made of. Synthesis, sampling, and sequencing in Tone.js, then the week ends as it should: a jam.

10:00 A1 listening — six pairs 11:00 a lineage in five records 12:00 how synthesis works 14:00 Tone.js deep dive 16:00 the Friday jam (A2) 17:00 final brief + weekend
By the end of today you can

10:00 — A1 Listening

A1 forms are in by 10:00 — both sketch links submitted. Then six pairs: each Western-scale study, then its raga twin, back to back, timestamps declared. One question per pair for the room: what did the constraint change? Note the answers — they are your first instrument-design findings, and they come back in Week 2. Your A1 marksheet reaches you by email, personally.

11:00 — A Lineage in Five Records

The through-line: each generation turned some piece of studio machinery into an instrument. Tape, then oscillators, then sequencers, then software. You are the next step in that lineage: the browser is your studio, and next week, the phone is your stage.

12:00 — How Synthesis Works

Two recipes cover most synthesized sound you have ever heard:

RecipeIdeaCharacter
Subtractive start rich (saw/square, full of harmonics — Day 1's spectrum), then carve away with a filter; shape loudness with an envelope warm, vocal, "analog" — basses, pads, leads
FM wiggle one oscillator's frequency with another oscillator, at audio rate; sidebands bloom into complex spectra glassy, metallic, bells, electric pianos — timbres subtraction can't reach

Four envelope numbers — ADSR: attack, decay, sustain, release — decide whether the same oscillator reads as a pluck (instant attack, fast decay), a pad (slow attack, long release), or a stab. Timbre is spectrum plus its motion in time.

Live demo — two knobs of FM

One sine modulating another. Ratio sets which sidebands appear (integer ratios = harmonic, in-between = clangorous); depth sets how many. Two numbers, a whole timbre-space.

ratio 2.00
depth 150 Hz

14:00 — Tone.js Deep Dive

1 · The synth family

Same interface, different engines — swap one line, audition them all:

let synth = new Tone.Synth().toDestination();        // plain subtractive voice
// new Tone.FMSynth()       — the two-knob demo, as an instrument
// new Tone.AMSynth()       — tremulant cousin
// new Tone.DuoSynth()      — two detuned voices, thick
// new Tone.MembraneSynth() — drums/toms (yesterday's tabla stand-in)
// new Tone.NoiseSynth()    — hats, snares, wind

function mousePressed() {
  Tone.start();
  synth.triggerAttackRelease("C3", "4n");
}

Open any synth's envelope: new Tone.Synth({ envelope: { attack: 1.5, release: 3 } }) — the pluck becomes a pad. ADSR is now yours in code.

2 · Sampling — recorded sound as an instrument

This workshop's own sample library: an acoustic guitar, chromatic G3–B5, one file per note, recorded for a previous edition of this workshop. Tone.Sampler repitches the nearest sample for any note you ask for:

let ready = false;
const sampler = new Tone.Sampler({
  urls: {
    "G3": "g3_Pick1.mp3",  "C4": "c4_Pick1.mp3",
    "E4": "e4_Pick1.mp3",  "G4": "g4_Pick1.mp3",
    "C5": "c5_Pick1.mp3",  "E5": "e5_Pick1.mp3",
    "G5": "g5_Pick1.mp3"
  },
  baseUrl: "https://workshops.ujjwalagarwal.com/computational-approach-to-sound/assets/strings/",
  onload: () => { ready = true; }
}).toDestination();

function mousePressed() {
  Tone.start();
  if (ready) sampler.triggerAttackRelease(["C4", "E4", "G4"], "2n");  // a chord!
}

The full chromatic set (30 notes, a3_Pick1.mp3 … b5_Pick1.mp3, sharps as as4, cs5…) lives at assets/strings/. And Schaeffer's move is open to you: record anything on your phone, upload it to the p5 editor as a file, and give the sampler that instead. A door slam played chromatically is a legitimate instrument.

3 · Effects — the studio as signal chain

const dist   = new Tone.Distortion(0.4);
const delay  = new Tone.FeedbackDelay("8n.", 0.35);   // dotted-eighth echo
const reverb = new Tone.Reverb(4);

synth.chain(dist, delay, reverb, Tone.Destination);   // in that order

Order matters — distortion into reverb is a guitar amp in a hall; reverb into distortion is a broken radio. Try both. There is no wrong, only signature.

4 · The step sequencer — the chairs, electrified

const kick = new Tone.MembraneSynth().toDestination();
const hat  = new Tone.NoiseSynth({ volume: -12,
               envelope: { attack: 0.001, decay: 0.05, sustain: 0 }
             }).toDestination();

const kickRow = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,1];
const hatRow  = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,1];

let step = 0;
function mousePressed() {
  Tone.start();
  Tone.Transport.bpm.value = 118;
  new Tone.Loop((time) => {
    if (kickRow[step]) kick.triggerAttackRelease("C1", "8n", time);
    if (hatRow[step])  hat.triggerAttackRelease("16n", time);
    step = (step + 1) % 16;                       // the wheel, again
  }, "16n").start(0);
  Tone.Transport.start();
}

Add a third row driving yesterday's raga synth, or Monday's five keys, or the sampler. Layer until it grooves. This sketch — rows as arrays, a wheel of sixteen — is the floor plan of every drum machine since 1980.

16:00 — The Friday Jam (Assignment A2)

A2 · performed today

Sixty seconds, live, through the monitors. Any instrument or system built this week — the five keys grown up, a generative piece you conduct with the mouse, a beat you mute and unmute. Sixty seconds is long. Plan a shape: begin somewhere, go somewhere, end on purpose. Running order by lot at 15:45; performance timestamps logged, truly, in the record.

Before you leave: the A2 form — your sketch link, your sixty seconds' title, and your proposed name for next Friday's show. The show is called whatever the cohort's proposals decide; the name is announced Monday.

17:00 — The Final Project Brief

A3 · announced now, built next week

Build a musical instrument that lives on a phone. A URL that turns a phone — yours, or anyone's — into something playable: touch, tilt, shake, listening, or self-playing. Solo, pair, or one band of six; decided at Tuesday's concept lock.

It must: run on a real phone from a live URL · be playable by a stranger within 30 seconds · be performed at the show on Friday 11 September · ship with documentation (short video + one page, every fact timestamped, per the house rule).

Weekend homework: play with raga.fm on your own phone and one other browser instrument you find in the wild. For each, note one mapping you admire and one you'd change. Bring three instrument ideas on Monday — sketches on paper, not code.

Day 4← Pitch as Ornament, Time as Cycle