← All work
Case study · Labs tool

Tala Clock

A riyaaz companion that keeps Carnatic time the way a teacher’s hands do.

Role
Concept, audio engine, design, and build
Built
Shipped 2026, updated August 2026
Stack
Tone.js transport · Sampled konnakol · React · localStorage · PWA

The problem

A metronome clicks; a tala has structure — claps, waves, finger counts, and a sam that must be felt. Students practising alone lose the cycle, and existing tala apps are single-purpose native apps that stop at counting.

Constraints

  • Timing must stay precise while a drone, konnakol, and the visual cycle all run together.
  • Practice modes matter as much as playback: graded tempo ramps and silent cycles are how laya is actually built.
  • Every configuration should be shareable — a teacher sets it, a student opens the link.
  • It had to install to the home screen and work with the phone in a pocket.

The approach, in order

  1. /01

    Built the clock on a shared, reference-counted audio transport so the tala and the tanpura drone can start and stop independently without fighting.

  2. /02

    Modelled each tala as aksharas with kriya types — clap, wave, finger — and gave each its own timbre, with the sam bell on a parallel send so it always cuts through.

  3. /03

    Added gati subdivisions (4, 3, 5, 7, 9), graha for phrases that start off sam, tap tempo, and tempo ramps for graded practice.

  4. /04

    Layered konnakol syllables from samples with a synthesised fallback, and a Sa–Pa drone tuned to the student’s saved Sa.

  5. /05

    Encoded every setting in the URL so a configuration is a link, and persisted the last session locally.

  6. /06

    Added alankaram practice sessions and a fullscreen mode for the practice room.

What it does now

A student picks a tala and a gati, sets a ramp, and practises against the structure of the cycle rather than a click — and a teacher can send exactly that setup as a link.