All research / Control benchmarksRESEARCH / AUGUST 2026
6 MIN READ · FULL TEXT
Original
Timing-controllable music generation

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.

Why timing

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.

80.1%
of taan's instructions delivered on time, benchmark-wide
73.2%
of taan's timed events land within ±500 ms of the cue
0%
of instructed events taan omits; it renders every requested one
51
points ahead of the next-best system
The test

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.

Type 1 · single timed eventType 2 · timed sequenceType 3 · global tempoTolerance ladder · ±250 / 500 / 1000 / 2000 ms

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"
    }
  ]
}
Results · taan vs the field

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.

SystemInstruction success95% CIEvent ±500 msTempo (type 3)
taan.ai80.1%76.3 to 84.073.2%92.0%
ElevenLabs v228.9%25.3 to 32.512.8%87.0%
Google Lyria23.9%20.3 to 27.58.6%89.7%
ElevenLabs v125.4%21.9 to 29.28.0%93.0%
Suno22.0%18.7 to 25.66.8%86.7%

Instruction success = per-clip fraction of instructions delivered (timed events within ±500 ms; tempo within tolerance).

Overall instruction success rate, taan.ai far ahead of four commercial systems
taan tops overall instruction success. The commercial field clusters low; taan's timing-first architecture clears it by a wide margin.
On-time, off-time and omitted share of timed events by system
taan delivers; the others omit. Commercial systems mostly leave the instructed event out entirely. taan places the large majority on time.
Music quality

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.

Fréchet Audio Distance by system, lower is better
Fréchet Audio Distance vs real music (lower is better). Lyria is closest to real music at 2.6; the commercial field spans 2.6 to 3.5. taan sits at 4.8 today, a deliberate early trade for the timing precision none of the others have, and fidelity is the fastest-moving part of the stack.
How it is measured

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.

Five-stage evaluation pipeline: prompts, generate, analyze, score, results, over a calibration and validation layer
Prompts to generation to analysis to scoring to results, all resting on human calibration and published per-family measurement error. Full methodology is reserved for the paper.

Video and text to music, on time.

Read the paper

Source: taan.ai/research/control-benchmarks/ · Captured 22 September 2026.
Original content, figures, tables, and examples belong to their respective publishers.

KEEP EXPLORINGRead the full paper

Search the library

Docs, papers, and benchmark notesESC to close