You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
BandScope currently concentrates on importing and explaining analysis. The buyer still needs a product surface that turns that analysis into repeatable rehearsal action. Static cue cards, timelines and exports do not by themselves let a player practise a difficult section, count in, loop it, adjust speed, mute/solo a reference part, and verify the next entrance.
This issue completes the core product loop without turning BandScope into a DAW.
Product outcome
A musician selects any detected or user-defined section and rehearses it immediately with a deterministic local transport:
select section or cue
→ hear count-in
→ loop exact passage
→ slow down or restore tempo
→ solo/mute available reference stems
→ navigate cue-to-cue by keyboard
→ preserve progress and return to the same rehearsal state
The analysis remains advisory. The player must expose confidence and allow users to correct loop boundaries when detection is wrong.
Required scope
Transport
Play, pause, stop, seek and restart from the current rehearsal cue.
Sample-accurate or explicitly bounded loop start/end semantics across supported formats and sample rates.
Count-in with configurable beats and meter-aware defaults where meter is available.
Playback-rate control with a declared quality boundary; preserve pitch when the chosen backend supports it and label fallback behavior honestly.
Keyboard-accessible transport and focus-safe shortcuts that do not trigger while typing in text fields.
A single authoritative transport state machine; do not let UI controls, native playback and project persistence race independently.
Rehearsal controls
Choose a detected section, timeline range, action cue or manually corrected range.
Move to previous/next cue without losing the active loop.
Persist per-project last position, active loop, playback rate, count-in and selected role.
Solo/mute only when a licensed/locally generated source actually exists; never fabricate isolated stems or imply separation success.
Make entry, dropout, stop, pickup and role-range cues available from the same transport surface rather than as disconnected micro-features.
Prefer a Rust-owned playback/transport core for timing, bounded local file access and cross-platform lifecycle; keep the React layer as a typed control/view surface.
The real-time audio callback must not perform unbounded allocation, blocking I/O, network access or lock-heavy work.
Define explicit behavior for unsupported codecs, missing files, replaced files, device changes, suspended output devices and project close during playback.
Accessible and honest UI
All controls expose name, role, state, shortcut and current value to assistive technology.
Waveform/timeline visual selection has an equivalent numeric start/end editor and exact-value table.
Show when a loop came from detected analysis versus a user correction.
Never report playback success merely because a command returned; confirm observable transport state and rendered position.
Acceptance criteria
A licensed local demo and a user-selected local audio file can be played, paused, sought and stopped through the production desktop boundary.
Loop timing error is measured against deterministic PCM fixtures at multiple sample rates and remains within a documented bound.
Count-in, loop restart, playback-rate changes and cue navigation are deterministic under repeated tests.
Device loss, file replacement, unsupported codec, cancellation, app backgrounding and project close fail safely without leaking paths or hanging the UI.
Parent: #958
Buyer-visible gap
BandScope currently concentrates on importing and explaining analysis. The buyer still needs a product surface that turns that analysis into repeatable rehearsal action. Static cue cards, timelines and exports do not by themselves let a player practise a difficult section, count in, loop it, adjust speed, mute/solo a reference part, and verify the next entrance.
This issue completes the core product loop without turning BandScope into a DAW.
Product outcome
A musician selects any detected or user-defined section and rehearses it immediately with a deterministic local transport:
The analysis remains advisory. The player must expose confidence and allow users to correct loop boundaries when detection is wrong.
Required scope
Transport
Rehearsal controls
Runtime architecture
Accessible and honest UI
Acceptance criteria
Real-world tests
Non-goals