feat(stream): DAW 실시간 블록 처리 재현 + 플러그인 클릭/드롭아웃 triage#6
Open
unohee wants to merge 1 commit into
Open
Conversation
실제 DAW(Ableton 등)의 고정 블록 콜백 처리를 재현해, 오프라인 바운스와
블록 스트리밍이 어디서 갈리는지 노출하고 클릭을 자동 triage 한다.
핵심 발견(pedalboard 0.9.22 실측): reset=False 연속 호출은 오프라인 렌더와
비트 단위로 일치(-600dB)하지만, 기존 VST3PluginWrapper.process는 매 호출
reset(기본 True)이라 블록 처리 시 경계마다 클릭(-7.5dB)이 발생했다.
추가:
- core/streaming.py: render_offline(기준)/render_streamed(연속 블록,
reset_per_block·reset_first 옵션) + BlockTiming RT factor 측정
- core/discontinuity.py: 클릭 triage. 블록 경계 정렬 여부로 "스트리밍 상태
단절(=DAW 클릭)" vs "소스 클릭" 구분, NaN/Inf, offline 대비 null test
- core/rt_bench.py: RT factor p50/p99/max, xrun, worst-case 동시 트랙 추정
- cli/stream.py: audioman stream {bench,triage,compare,play}. --json은 기존
finding.v1.json 스키마 그대로. builtin: 접두사로 VST3 없이 테스트 가능
- VST3PluginWrapper.process(reset=): reset 인자 추가(기본 True로 하위호환)
- tests/unit/test_streaming.py (14): null test, 블록 경계 클릭 검출,
RT factor 단조성/블록 크기 의존성
이 working tree에는 이전 세션의 미커밋 변경 'LLM-native Phase A'도 함께
포함된다(app.py가 두 작업에 걸쳐 분리 불가하여 동봉):
- --plain 글로벌 출력 모드, i18n 인프라 삭제(src/audioman/i18n.py 제거)
- Finding 스키마(core/findings.py) + detectors.py
- audioman observe / changelog / schemas 명령, schemas/*.json 발행
- tests: test_plain_mode/test_findings/test_observe/test_changelog_cmd (29)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
실제 DAW(Ableton 등)의 고정 블록 콜백 처리를 재현해, 오프라인 바운스와 블록 스트리밍이 어디서 갈리는지 노출하고 플러그인 클릭/드롭아웃을 자동 triage 하는
audioman stream명령을 추가한다.동기: "Ableton 환경에서 클릭 발생하는 걸 놓침. 블록 스트리밍만으론 제대로 triage 안 됨."
핵심 발견 (pedalboard 0.9.22 실측):
reset=False연속 호출은 오프라인 렌더와 비트 단위로 일치(-600dB)하지만, 기존VST3PluginWrapper.process는 매 호출 reset(기본 True)이라 블록 처리 시 경계마다 클릭(-7.5dB)이 발생했다. 이것이 DAW 클릭의 재현 메커니즘.Changes (DAW 스트리밍 — 이번 작업)
core/streaming.py:render_offline(ground truth) /render_streamed(연속 블록,reset_per_block·reset_first옵션) +BlockTimingRT factor 측정core/discontinuity.py: 클릭 triage. 블록 경계 정렬 = 스트리밍 상태 단절(DAW 클릭) / 비정렬 = 소스 클릭 구분, NaN/Inf, offline 대비 null testcore/rt_bench.py: RT factor p50/p99/max, xrun, worst-case 동시 트랙 추정cli/stream.py:audioman stream {bench,triage,compare,play}.--json은 기존finding.v1.json스키마.builtin:접두사로 VST3 없이 테스트 가능VST3PluginWrapper.process(reset=): reset 인자 추가 (기본 True로 하위호환)tests/unit/test_streaming.py(14): null test, 블록 경계 클릭 검출, RT factor 단조성/블록 크기 의존성동봉된 이전 세션 미커밋 작업 (LLM-native Phase A)
app.py가 두 작업에 걸쳐 분리 불가하여 함께 포함:--plain글로벌 출력 모드, i18n 인프라 삭제(src/audioman/i18n.py제거)core/findings.py) +detectors.pyaudioman observe/changelog/schemas명령,schemas/*.json발행test_plain_mode/test_findings/test_observe/test_changelog_cmd(29)Test
전체 374 passed (신규 43개: streaming 14 + Phase A 29), 회귀 0. pedalboard 빌트인만 사용해 streaming 테스트는 VST3 없이 CI에서 동작.