Taan nails timing and instruction success
In Scoring, the impact is effective only when the music is perfectly aligned with the video events, it also has to hit its mark on time. taan.ai is built timing-first, so an instructed event lands within a fraction of a second of where you asked. On the first benchmark of temporal controllability in text-to-music, taan places instructed events on time 2.8× as often as the best commercial system we tested.
Music-video alignment is paramount for scoring any video
For request such as “Bring in the drums at the sixth second” text-to-music systems produce polished audio in seconds, but they place events near the requested moment, not at it, which breaks the instant a composer cuts music to a scene. taan is engineered around that instant. We built the first benchmark that measures this event-temporal adherence, and taan is significantly performs better than other state-of-the-art models.
Did the instructed event happen, on time?
Each prompt asks for a specific musical event at a specific moment. The benchmark scores whether it lands within a tolerance of the requested timestamp, across three families of instruction, using the same detectors, gates, and tolerances for every system.
Example prompts
Type 1 · single timed event
Create an emotional orchestral piece for exactly 30 seconds. Introduce solo violin at exactly the 11th second.
{
"id": "type_1_009",
"label": "type_1",
"duration_s": 30,
"prompt": "Create an emotional orchestral piece for exactly 30 seconds. Introduce solo violin at exactly the 11th second.",
"expected": [
{
"id": "type_1_009_event_01",
"type": "instrument_entry",
"action": "entry",
"target": "solo violin",
"family": "harmonic",
"time_s": 11,
"bpm": null,
"tolerance_ms": 500,
"semantic_required": true,
"source_text": "Introduce solo violin at exactly the 11th second",
"detector": "harmonic_ensemble",
"gate": "absence_before",
"register_band_hz": [
190,
3500
]
}
]
}Create an acoustic folk instrumental for exactly 30 seconds. Bring in acoustic guitar at exactly the 7th second.
{
"id": "type_1_013",
"label": "type_1",
"duration_s": 30,
"prompt": "Create an acoustic folk instrumental for exactly 30 seconds. Bring in acoustic guitar at exactly the 7th second.",
"expected": [
{
"id": "type_1_013_event_01",
"type": "instrument_entry",
"action": "entry",
"target": "acoustic guitar",
"family": "harmonic",
"time_s": 7,
"bpm": null,
"tolerance_ms": 500,
"semantic_required": true,
"source_text": "Bring in acoustic guitar at exactly the 7th second",
"detector": "harmonic_ensemble",
"gate": "absence_before"
}
]
}Type 2 · timed sequence
Generate a cinematic action track for exactly 30 seconds. Introduce drums at exactly the 7th second, add brass at exactly the 13th second, and bring in percussion at exactly the 24th second.
{
"id": "type_2_028",
"label": "type_2",
"duration_s": 30,
"prompt": "Generate a cinematic action track for exactly 30 seconds. Introduce drums at exactly the 7th second, add brass at exactly the 13th second, and bring in percussion at exactly the 24th second.",
"expected": [
{
"id": "type_2_028_event_01",
"type": "instrument_entry",
"action": "entry",
"target": "drums",
"family": "percussion",
"time_s": 7,
"bpm": null,
"tolerance_ms": 500,
"semantic_required": true,
"source_text": "Introduce drums at exactly the 7th second",
"detector": "drums_stem",
"gate": "delta_up"
},
{
"id": "type_2_028_event_02",
"type": "instrument_entry",
"action": "entry",
"target": "brass",
"family": "harmonic",
"time_s": 13,
"bpm": null,
"tolerance_ms": 500,
"semantic_required": true,
"source_text": "Add brass at exactly the 13th second",
"detector": "harmonic_ensemble",
"gate": "delta_up",
"register_band_hz": [
150,
2500
]
},
{
"id": "type_2_028_event_03",
"type": "instrument_entry",
"action": "entry",
"target": "percussion",
"family": "percussion",
"time_s": 24,
"bpm": null,
"tolerance_ms": 500,
"semantic_required": false,
"source_text": "Bring in percussion at exactly the 24th second",
"detector": "percussion_hpss",
"gate": "delta_up"
}
]
}Create a dark industrial track for exactly 30 seconds. Introduce percussion at exactly the 6th second, bring in bass at exactly the 13th second, and cut all rhythm at exactly the 20th second.
{
"id": "type_2_063",
"label": "type_2",
"duration_s": 30,
"prompt": "Create a dark industrial track for exactly 30 seconds. Introduce percussion at exactly the 6th second, bring in bass at exactly the 13th second, and cut all rhythm at exactly the 20th second.",
"expected": [
{
"id": "type_2_063_event_01",
"type": "instrument_entry",
"action": "entry",
"target": "percussion",
"family": "percussion",
"time_s": 6,
"bpm": null,
"tolerance_ms": 500,
"semantic_required": true,
"source_text": "Introduce percussion at exactly the 6th second",
"detector": "percussion_hpss",
"gate": "delta_up"
},
{
"id": "type_2_063_event_02",
"type": "instrument_entry",
"action": "entry",
"target": "bass",
"family": "bass",
"time_s": 13,
"bpm": null,
"tolerance_ms": 500,
"semantic_required": true,
"source_text": "Bring in bass at exactly the 13th second",
"detector": "bass_stem",
"gate": "delta_up"
},
{
"id": "type_2_063_event_03",
"type": "instrument_exit",
"action": "exit",
"target": "all rhythm",
"family": "silence",
"time_s": 20,
"bpm": null,
"tolerance_ms": 500,
"semantic_required": true,
"source_text": "Cut all rhythm at exactly the 20th second",
"detector": "percussion_hpss",
"gate": "delta_down"
}
]
}Type 3 · global tempo
Generate a 30-second ambient electronic piece at exactly 100 BPM.
{
"id": "type_3_006",
"label": "type_3",
"duration_s": 30,
"prompt": "Generate a 30-second ambient electronic piece at exactly 100 BPM.",
"expected": [
{
"id": "type_3_006_bpm",
"type": "bpm",
"action": "bpm",
"target": "tempo",
"family": "harmonic",
"time_s": null,
"bpm": 100,
"tolerance_ms": 500,
"semantic_required": false,
"source_text": "Generate a 30-second ambient electronic piece at exactly 100 BPM",
"detector": "bpm",
"gate": "bpm"
}
]
}Generate a 30-second suspenseful cinematic cue at exactly 110 BPM.
{
"id": "type_3_010",
"label": "type_3",
"duration_s": 30,
"prompt": "Generate a 30-second suspenseful cinematic cue at exactly 110 BPM.",
"expected": [
{
"id": "type_3_010_bpm",
"type": "bpm",
"action": "bpm",
"target": "tempo",
"family": "harmonic",
"time_s": null,
"bpm": 110,
"tolerance_ms": 500,
"semantic_required": false,
"source_text": "Generate a 30-second suspenseful cinematic cue at exactly 110 BPM",
"detector": "bpm",
"gate": "bpm"
}
]
}taan leads on timing by a wide margin
Across four widely used systems, timed events land within ±500 ms only a fraction of the time, and tempo is the only instruction they follow reliably. taan delivers the large majority of instructed events on time, and tops every commercial system on overall instruction success by a wide margin.
| System | Instruction success | 95% CI | Event ±500 ms | Tempo (type 3) |
|---|---|---|---|---|
| taan.ai | 80.1% | 76.3 to 84.0 | 73.2% | 92.0% |
| ElevenLabs v2 | 28.9% | 25.3 to 32.5 | 12.8% | 87.0% |
| Google Lyria | 23.9% | 20.3 to 27.5 | 8.6% | 89.7% |
| ElevenLabs v1 | 25.4% | 21.9 to 29.2 | 8.0% | 93.0% |
| Suno | 22.0% | 18.7 to 25.6 | 6.8% | 86.7% |
Instruction success = per-clip fraction of instructions delivered (timed events within ±500 ms; tempo within tolerance).


Catching up with fidelity after timing
Control only counts if the music still sounds good. Audio fidelity is scored with Fréchet Audio Distance (FAD), a standard generative-audio metric where lower means closer to real music. Each clip is loudness-normalized to −14 LUFS, trimmed to 30 s, and turned into VGGish features, compared against the same fixed real-music reference (GTZAN) for every system including taan. taan is early on fidelity by design, a deliberate trade for the timing precision none of the others have, and fidelity is the fastest-moving part of the stack.

A reproducible, self-calibrated benchmark
Every score comes from a deterministic signal-processing pipeline: prompts are turned into machine-checkable events, audio is generated, each event is routed to a purpose-built detector, and a candidate is credited only if it clears a cascade of presence checks, so dense arrangements cannot score by luck. The pipeline's own localization error is measured against human labels and published, so model differences are never confused with measurement noise. The same detectors, gates, and tolerances score every system.

Video and text to music, on time.
Read the paper