Audio-to-sheet follow up with Opus: Segmentation and logic validation
Audio / Pitch / Code review
Task metadata
Original request
"audio-to-sheet follow up with Opus
- CapturePanel.tsx — Esclarecimento convincente. O diff que ele mostrou é trabalho anterior da branch (adição do analyzeMelody, mudança da construtora do NoteSegmenter para usar constantes internas, pequena limpeza de JSX). Nada disso toca o pipeline de áudio ou a segmentação. A "2 files changed" do resumo anterior conflou o diff da branch com o diff da sessão. Resposta honesta.
- Zona de 30–70 cents — Ele reconheceu que era bug real e corrigiu da forma certa: ancorou sustain/switch na frequência do MIDI travado (midiToFrequency(activeNote.midi)) em vez da mediana móvel. Isso elimina o drift do glissando lento. Ele também explicou a consequência correta — glides vão quantizar em notas discretas uma vez que estabilizem num novo centro MIDI, o que é o comportamento esperado para um segmentador monofônico. Certo.
- Double gate de MIN_NOTE_DURATION_MS — Removeu o backstop redundante do emitNoteOff. Agora o gate é único, no onset. Confirmou que notas menores que 120ms continuam rejeitadas (intencional). Simplificação válida.
- Debug flag runtime — Implementou com função (isDebugSegmenterEnabled()) em vez de constante, o que é sutilmente melhor do que eu pedi — o flag é lido no momento do log, não apenas no load do módulo. Ligar/desligar no console funciona na hora.
- Unit tests — Os seis casos estão cobertos, com helpers bem projetados (voicedEvent, silentEvent, appendVoiced, appendSilence). Os asserts são específicos e corretos. Configurou Vitest do zero já que o projeto não tinha test runner. Vai servir como rede de segurança pra qualquer tuning futuro.
- MIN_STABLE_MS = 90 — Resposta honesta: foi heurística, não calibração. Ele explicou o raciocínio (evitar duplicar 120ms, mas ainda rejeitar junk de 1–2 frames) e apontou qual é o knob pra ajustar se você quiser menos false starts. Transparência suficiente. O que fazer agora Roda na prática. Canta uns trechos sustentados, uns do-re-mi, algumas notas curtas, e vê se o comportamento melhorou. Os testes garantem que o contrato lógico está certo, mas só o uso real com a sua voz vai dizer se os valores numéricos estão bem calibrados. Se algo ainda sair estranho, você já tem:
O window.DEBUG_SEGMENTER = true no console pra ver exatamente qual state transition está causando o problema Constantes nomeadas e comentadas com direção de tuning Uma suíte de testes pra não regredir quando mexer
A parte de engenharia está fechada. Próximo passo é calibração por uso, não mais código."
Structured task
Problem
The mono capture model's calibration for the audio-to-sheet pipeline has been concluded in terms of code engineering but requires real-world validation based on these constructs.
Context
The feedback session with Opus deeply verified the adopted audio heuristics, confirmed the strategies adopted in the backstop logic, validated that the gate is unique at the onset, and provided test coverage. This report serves as the definitive theoretical baseline of where the parameterization stands, saving this vital history in the repository.
Expected
Archive the documentation and feedback for the segmentation and pitch transition calibration. Act on practical calibration by physically singing 'a cappella' and applying the provided parameters.
Notes
- "Engineering work is closed. Next step: Usage calibration (User Test)."
- Use the
window.__DEBUG_SEGMENTER__ = trueflag if unexpected quantization drift occurs. - There is no longer a need to write or rewrite code if the logic satisfies the test reviews. All subsequent adjustments are strictly empirical and done via interface tuning!