Methodology · how this was built

সুর থেকে সংখ্যায়From a page of swaralipi
to something a machine can read

Rabindranath Tagore left about 2,200 songs, and — unusually for any song tradition of that size — nearly all of them were written down, in the Bengali akarmatrik notation system. Yet none of that notation was machine-readable. This page shows exactly how ten of them became data, what had to be decoded, how it was checked, and what happened when a frontier AI model was asked to continue one.

0songs encoded
0matras
0note units
0verified against print
0automated checks
00 · Why

A tradition computers could not see

Western art music has centuries of digitized scores. Every music search tool, analysis library and music-AI model is built on that foundation. Rabindrasangeet had essentially none — the notation existed only as printed pages and as websites that render it through a locked font.

A repertoire absent from the data is absent from the tools, then from the research, and eventually from what the next generation can find. The compositions have been in the Indian public domain since 2002. Nothing stood between this music and open scholarship except the format.

01 · Input

What we started with

The printed source

Swarabitan — Visva-Bharati's own edition, roughly 64 volumes, first published from the 1930s. Each song page carries a number, a রাগ । তাল line, the lyrics, and then the notation grid: swaras in Bengali letters, one column per matra, the lyric syllable set underneath, vibhag bars marking the taal.

Scans of these volumes are freely available. They are pictures of paper — a person can read them; a program cannot.

The online witness

A government digital edition serves the same notation as an HTML table, one cell per matra. The notation renders correctly in a browser only because a custom font turns Latin letter codes into Bengali swaralipi glyphs.

So the actual text behind the page is a token stream in an undocumented code. Decoding that code was the first real problem — and the reason this dataset did not already exist.

02 · The decode

Cracking the token language

Click any token to see what it means, how it is stored, and — the part that matters — how we know. Nothing here was assumed; every reading has a line of evidence behind it.

Why the decoding can be trusted

Three independent checks, none of which relies on the others:

A second archive

An unrelated site publishes by-ear romanized sargam for four of these songs. Aligning them against our decode left no freedom: one unknown, two witnesses, every degree forced.

Raga signatures

The pipeline never assumes a raga. Yet the decoded note-sets reproduce the ragas tradition assigns: Behag's kori Ma in তুমি রবে নীরবে, Desh's both-Ni in এসো শ্যামল সুন্দর. A wrong komal/kori reading would have destroyed this.

Your ears

Audio synthesized purely from the decoded data is recognisably the songs. Scroll down and judge that yourself — it is the check that needs no expertise.

And then the print

Three songs were finally read against the printed Swarabitan itself, matra by matra. All three matched exactly — and corrected two things we had wrong.

03 · Process

The pipeline, stage by stage

Five stages, each reproducible from the one before. Click through them.

04 · Output

Listen — and watch the notation follow

This is the corpus itself, sounding. Nothing here is a recording — every note was synthesized from the JSON. As it plays, the current matra lights up in the notation and the taal cycle turns beneath it, so you can see the rhythm being counted rather than take it on faith.

sam — beat one, the anchor taali — clap khali — the empty beat

Reading it: S R G M P D N are the seven swaras · lowercase is komal (flat) · M# is kori Ma · ' upper octave, , lower · the note continues · A/B two notes sharing one matra · (X)Y a grace note · the syllable is still sounding.

05 · Verification

Checking it against the printed book

An archive can be wrong and you would never know. So three songs were read against scans of the printed Swarabitan — Visva-Bharati's own edition, the source every other witness descends from. All three matched exactly. More usefully, the exercise changed things:

vol. 32exact match

পুরানো সেই দিনের কথা gained a raga. The printed header reads মিশ্র ভূপালী — the online witness gives only the taal. Bhupali is the pentatonic S R G P D; mishra means mixed. Count the data: 127 of its 135 notes (94.1%) are that pentatonic core, and the remaining eight are seven Ni and exactly one Ma. The name is numerically exact — and we had measured it before we ever saw the name.

vol. 56exact match

ভালোবেসে সখী settled a conflict. A secondary source lists it as dadra; our data said talamukta — free rhythm. The printed page has no taal header at all and no vibhag bars anywhere, which is precisely how Swarabitan sets a talamukta song. Our reading stands, and now records why.

vol. 9exact match

গ্রামছাড়া corrected a label, and proved the grace notes. The anga is বাংলা as printed, not the "Baul" we had from tradition. And the check worth doing: our parser infers a kan (grace note) from a capitalisation quirk in the font encoding — a guess that could have been wrong across the whole corpus. The printed page sets that swara as a smaller, raised glyph. The guess was right, and is now evidence.

Seven songs remain archive-derived and say so in their confidence block. Their volume numbers are published, so the work is well-defined and anyone who reads swaralipi can take one. The full record →

06 · The experiment

Can a model continue Tagore?

Once the songs are data, you can ask a question that was previously unaskable. A frontier model was given nine of the songs in full, plus only the sthayi — the opening section — of পুরানো সেই দিনের কথা, and asked to compose the antara for Tagore's actual words. It never saw what Tagore wrote.

Same synthesizer, same tonic, same tempo in both. The only difference is who composed the second half. Listen before you look.

Version A

Sthayi, then a continuation.

Tagore. He stays in the middle register, and saves the one climb to the upper octave for three words — প্রাণের মাঝে আয়, come into my heart — approached stepwise, not leapt.

Version B

Same sthayi, then a continuation.

The model. It broke no rules — exact 12-matra cycles, inside the song's pentatonic frame, a cadence properly prepared to fall back into the sthayi. Then it leapt to the upper octave on the first word, because that is what nearly every antara does.

What it means. The machine passed every mechanical test and still made a choice Tagore didn't. It applied the convention — antaras rise. Tagore broke the convention, and put the rise where the poem rises. Ten songs of data were enough to teach the grammar. Style, in the sense that matters, was not in the grammar.

That gap is also an opportunity: a benchmark that separates followed the rules from understood the idiom is hard to construct, and this repertoire supplies one — strict grammar, and a ground truth that already exists. Method, prompt and raw output →

07 · What the data shows

Questions you could not ask before

Which note lands on sam?

Sam is beat one — the anchor the whole cycle hangs from. Across the taal-bound songs, Pa sits there nearly twice as often as the tonic itself.

P
27.7%
S
14.8%
G
12.9%
M
12.1%
D
9.5%
S'
9.5%

How much of this music is melisma?

The share of matras where a syllable is still sounding rather than a new one starting — a three-and-a-half-fold spread across ten songs.

গ্রামছাড়া
53.0%
তুমি রবে
38.5%
আনন্দলোকে
31.0%
ফুলে ফুলে
30.2%
আগুনের
28.4%
মাঝে মাঝে
14.9%

These are hints on ten songs; on five hundred they would be findings. Both charts come from examples/explore.py, which runs in ten seconds with no dependencies. The gap between "hint" and "finding" is what the project is for.

08 · From here

Use it, check it, extend it

Use the data

Plain JSON, CC BY 4.0. MIDI and MusicXML for existing tools. Research directions and open questions are in USE_CASES.md.

Check our work

If you read swaralipi, take one of the seven unverified songs. No programming needed — the volume numbers and exact steps are in CONTRIBUTING.md. You are credited in the data itself.

Build the tooling

An akarmatrik renderer, meend-aware synthesis, format bridges to LilyPond and ABC. Marked help wanted in ROADMAP.md.

Disagree with us

Every reading records its source and its confidence, so disagreement is cheap and productive. A correction with a citation beats a certainty without one.