Day 4 · Thursday 3 September 2026 · RTA 307

Pitch as Ornament, Time as Cycle

The Indian classical answer to the same question — and it is a different answer on almost every axis. The note is a curve, not a point. Tuning is relational, not gridded. Time is a wheel, not an arrow. This afternoon, yesterday's melody machine learns a raga.

10:00 the drone, again 10:30 swara, raga, gamaka 12:00 tala · listening 14:00 code: drone + raga 15:45 code: tala sequencer 17:00 end
By the end of today you can

10:00 — The Drone, Again

Day 1's tanpura recording, once more — but now you have three days of vocabulary. The tanpura plays two pitches (sa and pa) forever, yet the sound shimmers and moves. Two reasons, one physical, one systemic:

Hear the difference the grid makes

A major third, two ways, over a sounding root. The just third (ratio exactly 5:4) locks into the root — smooth, fused. The equal-tempered third (24/12, about 0.8% sharp of 5:4) beats against it — a slow wah-wah-wah. That beating is the gap Western tuning chose to live with, and Indian tuning did not.

10:30 — Swara, Raga, Gamaka

Swara. Seven syllables — sa re ga ma pa dha ni — name scale positions relative to a movable sa, the way solfège does. Five of them come in altered forms (komal re/ga/dha/ni, tivra ma), giving twelve positions per octave; the older theory hears 22 finer shruti between them. Because sa travels with the singer, notation here is relational by construction — there is no "middle C."

Raga is not a scale. A scale is a set of notes; a raga is a behavioural grammar for melody:

ComponentMeaning
aroha / avaroha the permitted way up and the permitted way down — often different paths, sometimes zigzag (vakra)
pakad the signature phrase — hear it, name the raga
vadi / samvadi the most- and second-most-important notes: where melody rests and leans
gamaka / meend the mandatory ornaments and slides — how a note is approached and left; in this tradition the curve is part of the note's identity
samay, rasa the time of day and the affect a raga carries — theory that binds pitch to life, not just to other pitch

Contrast with yesterday in one line: Western theory specifies which pitches and stacks them; raga specifies how pitch moves and forbids stacking — no chords, one voice, infinite interior detail. Two masteries, orthogonal.

12:00 — Tala, and Listening

Tala is cyclic time. A fixed number of beats (matra), grouped into sections (vibhag), turning forever. Beat 1 — sam — is not a starting line, it is a homecoming: soloist and drummer diverge, orbit, and land on sam together. The cycle most common in Hindustani music, teentaal, is 16 = 4+4+4+4, spoken as bols:

dha dhin dhin dha · dha dhin dhin dha · dha tin tin ta · ta dhin dhin dha

The third vibhag is khali — "empty," waved not clapped, its bols bass-less — so a listener can feel where the wheel is with eyes closed. Compare: Western common time restarts every bar (a short loop); tala is one long wheel with landmarks. Both are arrays. Different lengths, different meanings.

14:00 — Code: Drone + Raga

Same Tone.js setup as yesterday. First, a tanpura stand-in — filtered saws on sa and pa, quiet and endless:

let droneOn = false;

function startDrone() {
  const filt = new Tone.Filter(900, "lowpass").toDestination();
  ["C3", "G3", "C4"].forEach((n) => {          // sa, pa, sa
    const o = new Tone.Oscillator(n, "sawtooth").connect(filt);
    o.volume.value = -26;
    o.start();
  });
  droneOn = true;
}

Now the melody machine from Day 3, constrained to Raga Bhupali — the pentatonic sa re ga pa dha, same path up and down, the friendliest of ragas. Two changes only, and one of them is philosophical: the pitch arrays are now ratios against sa, not semitone steps.

let synth;
let sa = 261.63;                                  // sa sits on middle C today
// Bhupali as just ratios from sa:  sa   re   ga    pa   dha
let raga    = [1, 9/8, 5/4, 3/2, 5/3];
let degree  = 0;

function setup() {
  createCanvas(400, 400);
  synth = new Tone.Synth({
    portamento: 0.06,               // meend! the synth slides between notes
    oscillator: { type: "triangle" }
  }).toDestination();
}

function mousePressed() {
  if (!droneOn) { Tone.start(); startDrone(); }
  Tone.Transport.bpm.value = 72;

  new Tone.Loop((time) => {
    if (random() < 0.18) return;                 // breath
    let move = random([-1, -1, 1, 1, 1, 2, -2]);
    degree = constrain(degree + move, 0, 9);      // two octaves of raga
    let oct   = floor(degree / 5);                // 0 or 1
    let ratio = raga[degree % 5] * Math.pow(2, oct);
    synth.triggerAttackRelease(sa * ratio, "8n", time);
  }, "8n").start(0);

  Tone.Transport.start();
}

With the drone underneath, the just ratios lock — you heard why this morning. Three experiments, in order:

15:45 — Code: the Teentaal Sequencer

The cycle as an array — Day 1's chairs, now sixteen of them on a wheel:

const theka = ["dha","dhin","dhin","dha",
               "dha","dhin","dhin","dha",
               "dha","tin","tin","ta",        // khali — hear the bass vanish
               "ta","dhin","dhin","dha"];

const drum  = new Tone.MembraneSynth().toDestination();  // the bass side
const click = new Tone.MetalSynth({ volume: -18 }).toDestination();

function mousePressed() {
  Tone.start();
  Tone.Transport.bpm.value = 80;

  new Tone.Sequence((time, bol) => {
    if (bol === "dha")  {                       // bass + strike
      drum.triggerAttackRelease("G2", "8n", time);
      click.triggerAttackRelease("C5", "16n", time);
    }
    if (bol === "dhin") drum.triggerAttackRelease("A2", "8n", time);
    if (bol === "tin")  click.triggerAttackRelease("C5", "16n", time);
    if (bol === "ta")   click.triggerAttackRelease("E5", "16n", time);
  }, theka, "8n").start(0);

  Tone.Transport.start();
}
Assignment A1, part 2 — due tomorrow 10:00

The same generative sketch, twice. Finish the pair: your Day 3 Western-scale study and today's raga-constrained version — ideally the identical code with the pitch system swapped, so the comparison is honest. Two share-links, timestamps to the minute, submitted through the A1 form before 10:00 tomorrow. Then we listen to all six pairs back to back, and the differences will do the theorizing for us.

Day 3← Pitch as Architecture