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.
- explain raga as more than scale: aroha/avaroha, pakad, gamaka
- hear the difference between a just and an equal-tempered interval
- constrain a generative melody to a raga over a coded tanpura drone
- sequence a 16-beat teentaal cycle as an array of bols
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:
- Physical: the bridge (javari) makes each string's harmonics bloom and decay in slow waves — the drone is a spectrum in motion, a fact you can now see on an analyser.
- Systemic: the drone is the tuning reference. With sa sounding continuously, every other note is heard as a ratio against it — living just intonation, not a tempered grid. Yesterday's codec compromise was never adopted here, because nothing needed to modulate away from sa.
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:
| Component | Meaning |
|---|---|
| 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.
- Hindustani · vocal Bhimsen Joshi — Raga Yaman (khyal) Follow one note bent into dozens of shapes. The ornament is the content.
- Carnatic · vocal M.S. Subbulakshmi — Bhaja Govindam The southern grammar: same relational system, its own ornament family and rhythmic science.
- Sitar Nikhil Banerjee — Raga Bhupali Meend on strings: pitch as a continuous path between frets. Today's afternoon raga, played properly.
- Tabla Zakir Hussain — teentaal solo Count the 16. Find sam. Lose it. Find it again — that's the game.
- Generative raga.fm A raga engine in the browser — the facilitator's own project, and proof that this grammar can be computed. Study object for Week 2.
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:
- Feel the drone's power: comment out
startDrone(). Same melody, strangely unmoored. The drone is half the music. - Raise the portamento to 0.15 — more meend. At 0 — Western crispness. One number is carrying an entire aesthetic.
- Try a raga with different up and down paths. Keep two
arrays and pick by direction of
move: aroha [1, 9/8, 5/4, 45/32, 5/3, 15/8] and avaroha adding pa 3/2 — an approximation of Yaman's asymmetry.
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();
}
- Accent sam: check the sequence's step inside the callback and hit beat 1
harder (Tone.Sequence hands you
time; keep your own counter). - Run the theka under this afternoon's raga sketch — same Transport, so they share one clock. You now have drone + melody + cycle: the full Hindustani stack, in ~60 lines.
- Design your own 7-beat or 10-beat cycle. The array doesn't care; your body will — that's rupak and jhaptal territory.
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.