これは、オーディオファイルに対して高度な音響効果をリアルタイムで適用し、再生するためのC++製サウンドプロセッシング・エンジンです。内部では48kHzのサンプリングレートで処理を行い、システムのオーディオデバイスから直接再生します。
MP3やWAVなど、主要なオーディオフォーマットに対応しています。
本ツールは、プロフェッショナルなオーディオ処理で用いられる以下のような高品質なエフェクトを提供します。
- 6バンド・パラメトリックEQ: 音楽的な音質補正を低遅延で行うための、標準的なパラメトリックイコライザー。HPF/LPF、シェルビング、ピーキングフィルタを搭載しています。
- マスタリング・リミッター: ルックアヘッド機能を備えた高精度リミッター。音圧を最適化し、クリッピングを未然に防ぎます。
- アナログ・サチュレーション: 真空管、テープ、トランスフォーマーといったアナログ機器の温かみと質感をシミュレートします。
- ハーモニック・エンハンサー: 偶数次・奇数次倍音を個別に調整し、サウンドに豊かさと存在感を加えます。
- M/S ボーカル・楽器分離: Mid/Side処理を利用してボーカルと楽器の成分を動的に分離・強調し、ミックス内での明瞭度を向上させます。
- プレミアム・グロス・エンハンサー: 音楽的な倍音を付加し、プレゼンス(存在感)とエアー(空気感)を調整することで、サウンドに艶と輝きを与えます。
- ハーモニック・エキサイター: 高周波数帯域に特化した倍音を生成し、失われた明瞭度やディテールを復元します。
- ステレオ・エンハンサー: ステレオイメージの幅を調整し、低音域をモノラル化することで、サウンドに広がりと安定感を与えます。
- 線形位相EQ (上級者向け): 位相の歪みを発生させずにEQ処理を行う、FFTベースのイコライザー。
- 48kHz リアルタイム処理: すべてのオーディオ処理は48kHzのサンプリングレートで行われ、低遅延でのリアルタイム再生を実現します。入力ファイルのサンプリングレートが異なる場合は、高品質なリサンプラーで変換されます。
- ストリーミング処理: ファイル全体をメモリに読み込むのではなく、バッファ単位でオーディオデータを読み込み、処理、再生する効率的なストリーミング方式を採用しています。
- JSONによるパラメータ設定: params.jsonファイルを通じて、各エフェクトの有効/無効や詳細なパラメータを柔軟にカスタマイズできます。エフェクトをかける順番もeffect_chain_orderで指定可能です。
- クロスプラットフォーム対応: PortAudioライブラリを使用し、macOSとLinux (Ubuntu/Debian) での動作をサポートします。
ビルドには以下のライブラリが必要です。build.shスクリプトがこれらのインストールを試みます。
- PortAudio: クロスプラットフォームのオーディオI/O
- libsndfile: WAVなどの音声ファイルの読み込み
- mpg123: MP3ファイルのデコード
- libsamplerate: 高品質なサンプリングレート変換
- FFTW3: 線形位相EQのための高速フーリエ変換
- nlohmann/json: 設定ファイルのJSONパース
- CMake (3.15以上)
- C++17対応コンパイラ
- pkg-config
-
リポジトリをクローン:
git clone <repository_url>
cd <repository_directory> -
依存関係のインストールとビルド:
リポジトリに含まれるbuild.shスクリプトが、依存関係のインストールとビルドを自動的に行います。
chmod +x build.sh
./build.shスクリプトは、お使いのOS(Ubuntu/DebianまたはmacOS)を検出し、適切なパッケージマネージャー(apt-getまたはbrew)を使用して必要なライブラリをインストールします。
ビルドが完了すると、buildディレクトリ内に実行ファイルrealtime_enhancerが生成されます。
以下のコマンドでプログラムを実行します。
./build/realtime_enhancer <入力ファイル名 (例: audio.mp3)>
プログラムの起動後、以下のコマンドで再生をコントロールできます。
- play: 再生を開始します。
- pause: 一時停止します。
- stop: 再生を停止し、曲の先頭に戻ります。
- reload: params.jsonを再読み込みし、エフェクトの設定を動的に変更します。
- seek <秒数>: 指定した秒数の位置に移動します。
- help: コマンドの一覧を表示します。
- exit: プログラムを終了します。