Phrase mode: audio engine (groups, clicks, blanking), raw frame bus, trainer hook

This commit is contained in:
2026-09-14 00:50:47 +02:00
parent 7c5632fab6
commit c7f1fa170b
5 changed files with 700 additions and 12 deletions

View File

@@ -73,6 +73,11 @@ export class PhraseMatcher {
return this.statuses[idx] ?? 'pending';
}
/** Snapshot of all statuses (for React state mirroring). */
allStatuses(): NoteStatus[] {
return [...this.statuses];
}
setStatus(idx: number, status: NoteStatus): void {
// One-way latch: a resolved note never changes.
if (this.statuses[idx] === 'pending' || this.statuses[idx] === 'rest') {