Skip to main content

Choreo Counts

Find a likely beat grid, choose the count cycle that teaches the song clearly, then correct count one, phrase starts, subdivisions, and pulse before export.

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.

    Status
    Working local-first beta
    My role
    Audio analysis, editor workflow, persistence, exports, and rehearsal UX
    Current release
    Editable 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 four-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.