프로젝트 소개
chalkwalk-dsp는 두 개의 타깃으로 나뉜 작은 C++ 오디오 DSP 라이브러리입니다. 기본 요소 타깃인 chalkwalk::dsp는 헤더 전용이며 의존성이 없습니다. 측정 타깃인 chalkwalk::dsp::measure는 라우드니스 값이 필요한 사용자만 빌드하면 되는 의존성(libebur128)을 가져오기 때문에 별도로 분리되어 있습니다.
기본 요소(chalkwalk::dsp):
- Svf.h — 하나의 극쌍으로 로우패스, 하이패스, 밴드패스, 노치를 제공하는 Cytomic 상태 가변 필터. 계수를 직접 스무딩하는 호출자를 위해 set(freq, Q, sampleRate)와 setCoeffs(g, k)를 지원합니다.
- PolyBlep.h — 톱니파 및 펄스 발진기를 위한 대역 제한 스텝 보정.
- SoftClip.h — 니 아래에서는 정확히 단위 이득이 되는 소프트 니 한계값.
- Interpolation.h — 부분 버퍼 읽기를 위한 4점 에르미트 보간.
- Denormal.h — 유휴 재귀 필터의 속도가 느려지지 않도록 하는 상태 플러싱.
Instruments:
- Measure.h — 피크, rms, 크레스트, dB, 밝기, 피치; chalkwalk::dsp에만 의존합니다.
- Loudness.h — LUFS 단위의 통합 라우드니스; chalkwalk::dsp::measure 및 libebur128에 의존합니다.
사용법은 헤더 전용입니다: include 디렉터리를 추가하거나 CMake 서브디렉터리로 사용해 chalkwalk::dsp를 링크하고, 라우드니스가 필요하면 선택적으로 chalkwalk::dsp::measure를 링크합니다. README에는 Measure.h는 기본 요소 타깃만으로 동작하므로 BS.1770 라우드니스가 필요하지 않다면 --recursive 없이 클론해도 충분하다고 적혀 있습니다.
빌드 및 테스트: cmake -B build && cmake --build build && ctest --test-dir build. 이 프로젝트는 독립형으로 빌드되도록 설계되었으며, README는 이를 추출 경계에 대한 테스트로 설명합니다.
README에는 라이브러리 동기가 문서화되어 있습니다: 두 플러그인에 걸쳐 중복된 구현이 중대한 부분에서 서로 불일치했습니다. 예시로는 불연속을 상쇄하지 않고 강화한 polyBLEP 보정 부호 반전, 저주파와 고주파 모두에서 틀렸다고 설명된 [0.05, 0.95] 고정 펄스 폭 클램프(제한은 위상 증분에 따라 스케일되어야 함), 재귀 필터에 누락된 비정규수 플러싱, 나이퀴스트 근방과 제로 컷오프에서 tan()에 대한 필터 가드가 있습니다. 측정 코드는 peak와 rms가 세 번, fundamentalHz가 두 번 존재했기 때문에 통합되었습니다. README에는 한 감지기가 440Hz 톤을 294.7Hz로 읽었다고 나옵니다. 측정값은 답이 알려진 합성 신호를 기준으로 보정되며, integratedLufs는 ffmpeg의 ebur128과 비교해 0.05 LU 이내로 일치하는지 확인됩니다.
라이선스: MIT. libebur128(MIT)은 측정 타깃을 위해 modules/libebur128에 서브모듈로 벤더링되어 있으며, 기본 요소는 아무것도 링크하지 않습니다. 이 프로젝트는 chalkwalk-music과 함께 chalkwalk 플러그인 생태계의 일부입니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.