フォーラム › TuneBrowser › AACなどのクリップ検出のすすめ › 返信先: AACなどのクリップ検出のすすめ
こんばんわ、Tikiです。
もし、お気になるようでしたら、タイトル修正などお願いいたします。
いえ 大丈夫です(たぶん(^^;)。
TuneBrowserのクリップ検出とゲイン(ボリューム)の関係について、きちんとご説明したほうが良いですね。
まずTuneBrowserでのクリップは、32bit float形式のデータで1より大きい(-1より小さい)値を言っています。現在、この形式でデコードしているのはAACとMP3です。
デコード時にこのデータを検出すると、時刻とともにそれを記録します。GUIのほうは、その情報を使って、ピークメータを赤く表示します.
いっぽう再生用のデータのほうは、デコード後、すべていちど32bit整数に変換します. 16bitも24bitも32bit floatもすべてです. そしてある一定のブロックごとにまとめ、必要に応じてリサンプリング処理を行い, デバイス転送待ちのバッファに投入します.
デバイスへの転送は、デバイス側のタイミングに合わせて行います. 上で用意したバッファからブロックを取り出し, ここで 1. 全体ゲイン, 2. デバイス毎のプリアンプ, 3. ボリューム, 4. フェード, 5.リプレイゲイン の5つのボリューム要素のうち、ひとつでも設定する必要があれば時系列に変化させながら演算し、デバイスの要求するビット幅に合わせてバッファへ設定します.
以上の動作からおわかりになるかと思いますが、全体ゲインを演算するときには、すでに32bit整数に正規化されているため、現在の動作では, 残念ながらクリップした情報はその前に失われてしまっていることになります.
ゲイン/ボリュームの制御をデバイスに引き渡す直前に行っているのは, バッファに入れるまえだと, どうしてもディレイが発生し, ボリューム類の操作がとても気持ち悪いものになってしまうためです.
このあたりの処理は以前から悩みどころのひとつで, いまもときどき, この処理を眺めてはもう一歩手を入れるべきか思い巡ったりしています (改善したらいいやんか、という話かもしれませんが、このあたりの処理に手を入れると、期間がかかるのと、プチノイズ系のような捕捉の難しい不具合を出してしまったりするので、どうしても慎重になります).
方法としては、ゲインを下げて音量上げるのね、と思い(AAC以外の)FLACで[-6dB]にして聴いてみました。
ゲインをすこし下げたほうがよいかも、というのは、あくまでも推測です (使い勝手は確実に良くなります). いろいろ試してみてくださいね (^^)