このプロジェクトについて
chalkwalk-dsp は小規模な C++ オーディオ DSP ライブラリで、2つのターゲットに分かれています。基本ターゲット chalkwalk::dsp はヘッダーオンリーで依存関係がありません。計測ターゲット chalkwalk::dsp::measure は、ラウドネス値を必要とする利用者だけがビルドすればよい依存関係 libebur128 を取り込むため、分離されています。
基本機能 (chalkwalk::dsp):
- Svf.h — Cytomic 状態変数フィルタ。1組の極ペアからローパス、ハイパス、バンドパス、ノッチを提供します。set(freq, Q, sampleRate) と、係数を自前でスムージングする呼び出し側向けの setCoeffs(g, k) をサポートします。
- PolyBlep.h — のこぎり波およびパルスオシレータ向けの、帯域制限されたステップ補正。
- SoftClip.h — ソフトニー開始点以下では正確に 1.0 となるソフトニー・リミッタ。
- Interpolation.h — バッファの分数位置読み取り向け4点エルミート補間。
- Denormal.h — アイドル状態の再帰フィルタが速度低下しないよう、状態をフラッシュします。
計測ツール:
- 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 にはライブラリの動機が記されています。2つのプラグイン間で重複していた実装が、無視できない形で食い違っていたためです。例として、polyBLEP 補正の符号が反転しており、不連続を打ち消すどころか強めていた問題、パルス幅クランプが [0.05, 0.95] 固定で低域と高域の両方で誤っていた問題(制限は位相増分に応じてスケールすべき)、再帰フィルタのデノーマルフラッシュの欠落、ナイキスト付近やカットオフ0における tan() のフィルタガードが挙げられています。計測コードは、peak と rms が3回、fundamentalHz が2回重複していたため統合されました。README には、あるピッチ検出器が440 Hz のトーンを294.7 Hz と判定したと記されています。計測値は既知の答えを持つ合成信号で校正され、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.