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.
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.
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.
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.
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.
Three independent checks, none of which relies on the others:
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.
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.
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.
Three songs were finally read against the printed Swarabitan itself, matra by matra. All three matched exactly — and corrected two things we had wrong.
Five stages, each reproducible from the one before. Click through them.
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.
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.
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:
পুরানো সেই দিনের কথা 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.
ভালোবেসে সখী 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.
গ্রামছাড়া 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 →
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.
Sthayi, then a continuation.
Same sthayi, then a continuation.
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 →
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.
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.
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.
Plain JSON, CC BY 4.0. MIDI and MusicXML for existing tools. Research directions and open questions are in USE_CASES.md.
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.
An akarmatrik renderer, meend-aware synthesis, format bridges to LilyPond and ABC. Marked help wanted in ROADMAP.md.
Every reading records its source and its confidence, so disagreement is cheap and productive. A correction with a citation beats a certainty without one.