AnuLaya Composition Authoring Guide
A practical guide to writing tabla compositions — from simple theka to a full kaida with paltas and chakradhar tihai.
Type in lowercase English; the app always renders the canonical Devanagari alongside. Every example below shows the raw input and the grid as it appears in the app.
Table of contents
Part 1 — Basics (start here)
- What is a composition?
- Designed for phone keyboards
- Quick start
- Composition metadata
- Bols and Devanagari
- Basic notation
- Phrases per beat (concatenation)
- Comments and subtitles
Part 2 — Advanced
- Dot subdivision (unequal beats)
- Parentheses (nested grouping)
- Composite shortcuts
- Repeats
- Speed markers (layi)
- Tihai with
^ - Variables
- Taal grid and vibhags
Part 3 — Recipes and reference
- Recipe: full kaida (Teentaal)
- Recipe: tukda and tihai (Rupak)
- Recipe: song accompaniment (Keherwa)
- Common pitfalls
- Quick reference
Part 1 — Basics
Everything in Part 1 uses Dadra (6 beats, vibhags 3+3) so you can focus on notation without worrying about taal structure.
1. What is a composition?
A composition has:
- Metadata — title, taal, tempo, category.
- Bols — the notation text (what this guide is mostly about).
The app parses your bols text and lays it out on a taal-aligned grid. Playback walks the grid at your chosen BPM. Everything else is just ways to pack more than one stroke into a beat, or to repeat/reuse phrases.
2. Designed for phone keyboards
Most compositions are typed on phones, one-thumb. The notation stays on the primary keyboard layer wherever possible — no shift, minimal symbol-layer trips:
- Lowercase — no shift key, autocorrect-safe. Case is ignored anyway.
- Space between beats,
-for rest — both on the main letter layer. - Dot for subdivision (
dha.ge) — reachable without switching layers. Concatenation (dhage) works too. x Nfor repeat — plain letter, not×or*.[ ],$,#,##,@Nx,^— all single-tap ASCII, familiar from Markdown.- Composites (
tirkit→ ti ra ki te) — four taps for a common 4-bol phrase. - Forgiving parser — autocorrect capitals, extra spaces, and double-tap-space-periods don't break anything.
Roman is offered because it's fast to type; the app always renders the canonical Devanagari alongside.
3. Quick start
Open the app, go to Compositions → New, and fill in:
| Field | Value |
|---|---|
| Title | Dadra Theka |
| Taal | Dadra |
| Tempo | 120 |
| Category | theka |
| Bols | dha dhin na dha tin na |
Input:
dha dhin na dha tin na
Grid (Dadra):
| 1 | 2 | 3 | 4 | 5 | 6 | |
|---|---|---|---|---|---|---|
| dha | dhin | na | dha | tin | na | |
| धा | धिं | ना | धा | तिं | ना |
Hit play — you hear the 6-beat Dadra cycle. Each space-separated token is one beat. The gap marks the vibhag boundary between beats 3 and 4.
4. Composition metadata
| Field | Required | Notes |
|---|---|---|
title |
yes | Display name. |
taal |
yes | Dadra, Rupak, Keherwa, Bhajani, Dhumali, Jhaptaal, Ektaal, Chautaal, Deepchandi, Dhamar, Teentaal, Tilwada. |
tempo |
yes | BPM (20–300). Base tempo; speed markers and global speed multiply on top. |
bols |
yes | The notation text. |
speed |
no | Global layi (1 = baraabar, 2 = dugun, 3 = tigun, 4 = chaugun). Default 1. |
category |
no | theka, kaida, rela, tukda, tihai, song, other. |
description |
no | Short prose — who taught it, style, what to watch for. |
author |
no | Composer / guru credit. |
tags |
no | e.g. ["kayda", "intermediate", "benares"]. |
visibility |
no | private or published. Default private. |
phrases |
no | Space-separated bol phrases for grid highlighting (see §4.1). |
4.1 Phrases — coloring patterns across beats
Tabla phrases often cut across beat boundaries. For example, in a Teentaal kaida the phrase dha ti dha ge starts mid-beat and runs through the next — the grid shows it split across cells, making it hard to see where one phrase ends and the next begins.
The phrases field solves this. Enter your recurring phrases as space-separated concatenated bols:
DhaTiDhaGe NaDhaTiRaKiTe TinNaKeNa
The app matches these patterns in the grid and color-codes each phrase with a distinct color (blue, green, purple, orange, etc.). Bols belonging to the same phrase get the same color, even when they span multiple beats.
Example — Teentaal kaida theme with phrases:
| Field | Value |
|---|---|
| Bols | dha ti dha ge na dha tira kite dha ti dha ge tin na ke na |
| Phrases | DhaTiDhaGe NaDhaTiRaKiTe TinNaKeNa |
Grid (Teentaal, beats 1–8):
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
|---|---|---|---|---|---|---|---|---|
| dha | ti | dha | ge | na | dha | ti ra | ki te | |
| धा | ति | धा | गे | ना | धा | ति र | कि ट |
Grid (Teentaal, beats 9–16):
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | |
|---|---|---|---|---|---|---|---|---|
| dha | ti | dha | ge | tin | na | ke | na | |
| धा | ति | धा | गे | तिं | ना | के | ना |
DhaTiDhaGe— appears twice (beats 1–4 and 8–11)NaDhaTiRaKiTe— beats 5–7TinNaKeNa— beats 12–15
Without phrase colors, beats look like four unrelated bols. With colors, you instantly see it's the same DhaTiDhaGe phrase.
Phrases are optional. The app can auto-detect common phrases, or you can enter them manually for precise control.
5. Bols and Devanagari
Tabla bols are traditionally written in Devanagari, but it is easier to type in Roman. The Roman spellings here are a canonical one-to-one mapping chosen so round-trip is lossless — some Roman forms are deliberate (e.g. te for ट, not ta) to avoid collisions.
5.1 Canonical mapping
| Devanagari | Roman | Input | Devanagari | Roman | Input | |
|---|---|---|---|---|---|---|
| धा | Dha | dha |
ता | Ta | ta |
|
| धे | Dhe | dhe |
तिं | Tin | tin |
|
| धें | Dhen | dhen |
तुं | Tun | tun |
|
| धि | Dhi | dhi |
त | T | t |
|
| धिं | Dhin | dhin |
ति | Ti | ti |
|
| धुं | Dhun | dhun |
ट | Te | te |
|
| दि | Di | di |
त्र | Tra | tra |
|
| दिं | Din | din |
ना | Na | na |
|
| द | Da | da |
ने | Ne | ne |
|
| ड़ | De | de |
ग | Ga | ga |
|
| घे | Ghe | ghe |
गे | Ge | ge |
|
| घें | Ghen | ghen |
घि | Ghi | ghi |
|
| क | Ka | k, ka |
के | Ke | ke |
|
| कि | Ki | ki |
कत् | Kt | kt |
|
| क्र | Kra | kra |
क्ड | Kda | kda |
|
| र | Ra | r, ra |
- | Rest | -, s |
Placeholder: ~ — layout-only (advanced; use - for ordinary silence).
5.2 Key disambiguations
Pairs that sound close in English but are distinct strokes in Devanagari:
Te(ट) vsTa(ता) — ट is retroflex; in casual romanization both get written "ta". Here ट isteso there's no collision. Example: तिरकिट →tirakite, nottirakita.T(त) vsTa(ता) — त is the bare consonant (short, dry); ता has the आ vowel (fuller). Phrases liketkta= त क ता.Ge(गे) vsGhe(घे) — same stroke, different Devanagari. Add thehfor घे. Example: घे ना गे ना →ghe na ge na.Di/Dhi/Ti— don't drop theh.Na(ना) vsNe(ने) — separate bols; mind the vowel.De(ड़) vsDhe(धे) vsDa(द) — unrelated strokes; use the exact letters.
5.3 Single-character shortcuts
| Input | Roman | Devanagari |
|---|---|---|
t |
T | त |
r |
Ra | र |
k |
Ka | क |
Example: tkta = T Ka Ta = त क ता.
6. Basic notation
6.1 One bol per beat
Input:
dha dhin na dha tin na
Grid (Dadra):
| 1 | 2 | 3 | 4 | 5 | 6 | |
|---|---|---|---|---|---|---|
| dha | dhin | na | dha | tin | na | |
| धा | धिं | ना | धा | तिं | ना |
Each space-separated token is one beat.
6.2 Rests
Use - (hyphen) to silence a beat.
Input:
dha dhin - dha - -
Grid (Dadra):
| 1 | 2 | 3 | 4 | 5 | 6 | |
|---|---|---|---|---|---|---|
| dha | dhin | - | dha | - | - | |
| धा | धिं | - | धा | - | - |
s and S also mean rest.
6.3 Multi-line rows
Newline = new row. Rows are visual only — playback is seamless. Use them to make long compositions readable.
Input:
dha dhin na
dha tin na
Grid (Dadra):
| 1 | 2 | 3 | 4 | 5 | 6 | |
|---|---|---|---|---|---|---|
| dha | dhin | na | dha | tin | na | |
| धा | धिं | ना | धा | तिं | ना |
Two input rows, same single-cycle grid. The line break is visual in the editor; the grid lays it out by taal.
6.4 Multiple cycles
A composition can span any number of taal cycles. Each row in the input doesn't have to be one cycle — the grid wraps by taal automatically.
Input:
dha ti dha dha tin na
ta ti dha dha dhin na
Grid (Dadra, cycle 1):
| 1 | 2 | 3 | 4 | 5 | 6 | |
|---|---|---|---|---|---|---|
| dha | ti | dha | dha | tin | na | |
| धा | ति | धा | धा | तिं | ना |
Grid (Dadra, cycle 2):
| 1 | 2 | 3 | 4 | 5 | 6 | |
|---|---|---|---|---|---|---|
| ta | ti | dha | dha | dhin | na | |
| ता | ति | धा | धा | धिं | ना |
Two lines of 6 bols each = two Dadra cycles. The second cycle starts on sam (beat 1) of the next round. Notice the bhari→khali shift: dha in cycle 1 becomes ta in cycle 2.
6.5 A simple tihai (spanning cycles)
A tihai repeats a phrase three times to land on sam. Even with basic notation (no […]x3 syntax yet), you can write one out longhand:
Input:
dha - k t
dha - k t
dha - k t
Grid (Dadra, cycle 1):
| 1 | 2 | 3 | 4 | 5 | 6 | |
|---|---|---|---|---|---|---|
| dha | - | k | t | dha | - | |
| धा | - | क | त | धा | - |
Grid (Dadra, cycle 2):
| 1 | 2 | 3 | 4 | 5 | 6 | |
|---|---|---|---|---|---|---|
| k | t | dha | - | k | t | |
| क | त | धा | - | क | त |
The phrase dha - k t repeats 3 times across 12 beats (2 Dadra cycles). The rests (-) between each dha create the damdaar tihai. (In §14 you'll learn [dha - k t]x3 as a shorthand for this.)
6.6 Partial cycles are padded with silence
If your bols don't fill a complete taal cycle, the remaining beats are filled with silence.
Input:
dha - - dha
Grid (Dadra):
| 1 | 2 | 3 | 4 | 5 | 6 | |
|---|---|---|---|---|---|---|
| dha | - | - | dha | - | - | |
| धा | - | - | धा | - | - |
Only 4 bols entered, but Dadra needs 6 beats per cycle — beats 5 and 6 are automatically silent.
6.7 Pipes as visual separators
| is ignored by the parser — use it for readability, typically at vibhag boundaries.
Input:
dha dhin na | dha tin na
Same grid as §6.1. The pipe helps you eyeball the vibhag split while editing.
6.8 Case is ignored
All three produce the same grid:
dha dhin na dha tin na ← recommended (no shift key)
Dha Dhin Na Dha Tin Na
DHA DHIN NA DHA TIN NA
Use lowercase — it's fastest. Mixed case like DhaGeTiTe can help readability for long concatenations (§7).
7. Phrases per beat (concatenation)
Multiple bols touching each other (no spaces) share a single beat. This is the simplest way to pack more than one stroke into one beat.
7.1 Two bols in a beat
Input:
dha dhin na dhadha tin na
Grid (Dadra):
| 1 | 2 | 3 | 4 | 5 | 6 | |
|---|---|---|---|---|---|---|
| dha | dhin | na | dha dha | tin | na | |
| धा | धिं | ना | धा धा | तिं | ना |
Beat 4 holds two bols, each taking half the beat.
7.2 Four bols in a beat
Input:
dha dhin na tirakite tin na
Grid (Dadra):
| 1 | 2 | 3 | 4 | 5 | 6 | |
|---|---|---|---|---|---|---|
| dha | dhin | na | ti ra ki te | tin | na | |
| धा | धिं | ना | ति र कि ट | तिं | ना |
Beat 4 has four bols (parser segments longest-match-first). TiRaKiTe parses identically — camelCase aids readability for long tokens.
7.3 Rests concatenate too
Input:
dha dhin na dhadha-- tin na
Grid (Dadra):
| 1 | 2 | 3 | 4 | 5 | 6 | |
|---|---|---|---|---|---|---|
| dha | dhin | na | dha dha - - | tin | na | |
| धा | धिं | ना | धा धा - - | तिं | ना |
Beat 4 has four slots — dha, dha, rest, rest — each 1/4 of the beat.
7.4 Mixed jati (misra) — different speeds per beat (Keherwa)
Concatenation naturally creates misra jati (mixed groupings) when adjacent beats have different numbers of bols. No special syntax needed — just write each beat with the bols you want.
Input:
dhagena dhitedhite dhagena tinakena
takena titetite dhagena dhinnagena
Grid (Keherwa, cycle 1):
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
|---|---|---|---|---|---|---|---|---|
| dha ge na | dhi te dhi te | dha ge na | ti na ke na | ta ke na | ti te dhi te | dha ge na | dhin na ge na | |
| धा गे ना | धि ट धि ट | धा गे ना | तिं ना के ना | ता के ना | ति ट ति ट | धा गे ना | धिं ना गे ना |
Beat 1 has 3 bols (each 1/3 of the beat), beat 2 has 4 bols (each 1/4 of the beat). Played back-to-back, this creates the 3+4 misra jati feel — the grouping shifts naturally without any special notation.
| Beat 1 (tisra — 3) | Beat 2 (chatusra — 4) |
|---|---|
| dha · ge · na | dhi · te · dhi · te |
| 1/3 · 1/3 · 1/3 | 1/4 · 1/4 · 1/4 · 1/4 |
8. Comments and subtitles
8.1 # comments — hidden
Lines starting with # are ignored at playback. Use them to organize your source: group variable definitions, mark sections, leave reminders.
Input:
# Basic Dadra theka
dha dhin na dha tin na
# Variation with doubled 4th beat
dha dhin na dhadha tin na
Comments don't appear on the grid. Think of them like headings in a notebook — they make a 100-line composition skimmable when you return to edit it. Grids are the same as §6.1 and §7.1.
8.2 ## subtitles — shown on the grid
Two hashes = a section header the viewer sees.
Input:
## Theka
dha dhin na dha tin na
## Variation
dha dhin na dhadha tin na
## Theka and ## Variation render as headers above their respective rows in the grid. Use # for editor-only notes; use ## for structure you want displayed.
Each subtitle section must end on a complete taal cycle. If the bols don't fill the cycle, the remaining beats are padded with silence — just like §6.6.
Input:
## Phrase
dha - k t
## Theka
dha dhin na dha tin na
Grid (Dadra):
Phrase
| 1 | 2 | 3 | 4 | 5 | 6 | |
|---|---|---|---|---|---|---|
| dha | - | k | t | - | - | |
| धा | - | क | त | - | - |
Theka
| 1 | 2 | 3 | 4 | 5 | 6 | |
|---|---|---|---|---|---|---|
| dha | dhin | na | dha | tin | na | |
| धा | धिं | ना | धा | तिं | ना |
The "Phrase" section has only 4 bols — beats 5 and 6 are silent. The "Theka" section starts fresh on its own sam.
AnuLaya