Skip to main content

Choreo Counts

Correct the counts by ear, then keep them visible while you drill phrases, change speed, loop sections, and restart the music for class.

SourceDemo count map
Map duration2:06
PrivacyLocal only

Local workspace

Project library

Named projects stay in this browser. Timing maps are saved; raw audio is never copied into the library.

Checking local autosave…

    Audio source

    Analysis runs locally. Automatic counts are a starting point; confirm the cycle, downbeat, and phrase starts before teaching.

    No raw audio is exported

    Streaming-service audio is supported only through user-permitted microphone, tab, or system capture where the browser and source allow it. This app does not download, rip, or bypass DRM.

    Case study

    How Choreo Counts became a bounded, testable product.

    Open case study
    StatusWorking local-first betaMy roleAudio analysis, editor workflow, persistence, exports, and rehearsal UXCurrent releaseEditable teaching-count workspace

    The problem

    Automatic beat detection can estimate timing, but choreography counts are teaching decisions. A useful tool must let a choreographer correct count one, pulse, meter, subdivisions, phrase starts, and notes instead of treating an imperfect analysis as the final answer.

    Product response

    Choreo Counts combines a locally analyzed audio draft with optional MusicXML structure and instructor-confirmed timing anchors. Waveform regions, keyboard-first anchoring, rehearsal templates, a named project library, bounded undo/redo, and synchronized playback turn that hybrid map into a reusable rehearsal workspace without storing raw audio or original score files.

    Architecture at a glance

    • Accept a bounded local file or a user-approved transient capture stream, then decode audio in the browser.
    • Downmix and reduce the analysis signal to at most 11.025 kHz mono before transferring it to a bounded worker.
    • Compute frequency-aware spectral flux, detect attacks with adaptive thresholds, rank half/normal/double-time pulse candidates, and use dynamic programming to place onset-responsive beat markers.
    • Apply tap-tempo, manual count, phrase, grid-offset, subdivision, pulse, and individual-beat corrections in persistent editor state.
    • Store up to 50 named, schema-validated projects locally with legacy autosave migration, serialized writes, archive/restore controls, and project-scoped edit history.
    • Parse bounded MusicXML/MXL locally for meter, measures, pickups, and relative tempo changes, then align score beats to the recording through a monotonic piecewise timing map.
    • Keep waveform zoom and selection transient, then translate a selected region or playhead context into pure section and note template plans that use existing history and persistence paths.
    • Export versioned project JSON, CSV count maps, or a printable teaching sheet without raw audio.

    Proof, not claims

    • Upload guardrails reject empty, unrecognized, over-50 MB, and over-10-minute audio before expensive work continues.
    • Deterministic benchmarks recover clean 72, 96, 128, and 150 BPM tracks within ±1.5 BPM, track an accelerating performance, and retain the pulse through sustained harmony, offbeats, and room noise.
    • Production browser tests decode a generated PCM WAV, run worker analysis, verify the detected tempo and evidence report, and autosave on desktop and mobile Chrome.
    • Project tests cover count grids, schema migration, metadata-checked audio reattachment, exports, persistence, guardrails, and editor controls.
    • Desktop and mobile browser acceptance covers project creation, rename, duplication, undo/redo, and advancing synchronized playback.
    • Desktop and mobile browser acceptance covers waveform region controls, zoom, built-in section/phrase/note templates, and keyboard anchor placement and removal.
    • The timing-first three-stage interface and generated screenshot guide were visually verified at desktop and 390px mobile widths.
    • Score fixtures cover tempo changes, pickups, repeat warnings, MXL containers, unsafe XML rejection, anchor interpolation/inversion, and v1/v2-to-v3 migration.

    Honest boundaries

    • Analysis stays local and does not download, rip, or bypass policy for streaming services.
    • Confidence and warnings stay visible; the app does not claim to understand choreography or detect every meter perfectly.
    • Raw audio is never included in project backups or exports.

    Next release

    • Evaluate onset-snapped region edges and user-defined template libraries after real rehearsal sessions establish the right customization model.
    • Evaluate opt-in licensed score-provider integrations only where authentication, catalog rights, and symbolic-download terms are explicit.
    • Complete real-device permission acceptance for microphone, tab-audio, and system-audio capture across supported browsers.
    • Port the framework-agnostic count-grid and schema core into a native Android workflow.