CST — Audio→CSV • A:10–16 & B:6–16 (Total 32, Non-overlap) • 60s • 32 Chairs

You can choose A and B counts; total is locked to 32.
Audio file
Detected Key
Detected BPM
CSV headers: t,m,b (time sec, dominant MIDI, bass MIDI). Export → then load into A/B.
Global timbre (still allows per-chair micro-variants below).
White square lights when a 60s score is ready to export.
Active cadenceEven
Active paceAndante
Open @ seconds (Strings, Winds, Brass, Perc) 0, 8, 16, 24
Counts auto-adjust to keep A + B = 32. Locks are respected.
A Selected0
B Selected0
Chair
Variant
Detune
Variant tweaks tone/attack; detune is ± cents. Defaults: A (brighter) / B (warmer).
Ready.
Independent A+B → Arrange & Export CSV (self-contained)
Status Load two ~1-minute songs.
SeatingEven spacing • Front strings, winds middle, brass back, perc rear • 32 chairs
How the 1-minute AI Symphony Orchestra works (HTML + Web Audio)
  1. Load Audio and (optionally) click Analyze 60s to auto-detect notes & tempo.
  2. Export CSV (t,m,b) then load CSV into A and/or B panels.
  3. Choose A (10–16) and B (6–16). Total stays 32, no overlap. Locks respected.
  4. Set Conductor/Key/Tempo/Quantize/Swing/Humanize/Reverb/Spread, plus Cadence & Pace.
  5. Use Per-Chair Variants (bright/warm etc.).
  6. Press Play for a 60s render; lights blink on sounding chairs. Export WAV to save audio.
  7. Need to start over? Use Clear buttons (Audio / A / B) or Reset for a full reset.
Trumpets A
Back L
Trumpets B
Back L
French Horns A
Back M
French Horns B
Back M
Percussion A
Back C
Percussion B
Back C
Trombones/Tuba A
Back R
Trombones/Tuba B
Back R
Flutes/Picc. A
Winds
Flutes/Picc. B
Winds
Oboes A
Winds
Oboes B
Winds
Clarinets A
Winds
Clarinets B
Winds
Bassoons A
Winds
Bassoons B
Winds
Piano A
Keys
Piano B
Keys
Double Basses A
Back Strings
Double Basses B
Back Strings
Drums A
Rhythm
Drums B
Rhythm
Harp/Keys A
Right
Harp/Keys B
Right
1st Violins A
Far L
1st Violins B
Far L
2nd Violins A
L-Center
2nd Violins B
L-Center
Violas A
Center
Violas B
Center
Cellos A
R-Center
Cellos B
R-Center
Conductor
Conductor / Musicalize: Cinematic — lush
How the 32-Chair Symphony Works — Methods & Math (v1)
  • Pitch & Bass Detection: autocorrelation + zero-crossing estimate → MIDI map.
  • Key Detection: Krumhansl-Schmuckler profile correlation → best major/minor root.
  • Tempo: onset deltas → median IBI → BPM normalized to 60–180.
  • Quantize & Swing: snap to grid q = round(t/grid)*grid, odd positions get swing offset.
  • Routing: pitch range + family opening bias (Strings→Winds→Brass→Perc) to seats.
  • Scheduling: look-ahead event buffer streams notes to WebAudio buses.
  • Timbre: SoundFont playback per seat → panned buses → hall reverb + compressor.
Key: argmax_r ⟨profile_r , histogram⟩ BPM: bpm = clamp( round( 60 / median(Δonset) ) × 2^k , 60..180 ) Quant: q(t) = round(t / grid) · grid; swing: if odd grid → q += s·grid/2 Assign: section = f(pitch, isBass, familyOpen_t)
This is an early HTML-only AI symphony. As the codebase grows, it will fuse analyzer, arranger, orchestration, and rendering into a single unified pass.