×

RIAAイコライジングをアナログではなく、ディジタルドメインで実行するプロジェクト。
まだまだ準備編。

RIAA変換はIIRフィルターでなければいけない

前稿で重大なことに触れるのを忘れていました。

RIAAフィルタは「絶対に」IIRのフィルタでなければなりません。Audacityに標準でRIAA用のカーブが準備されているみたいなのですが、それはFIRなので使えません。

「FIRは位相回転が無いようにできるので」一見理想に思えますが、RIAAの場合はダメです。なぜならカッティング前のプリエンファシス段階で掛かったフィルタはアナログフィルタであり、それを戻すディエンファシスフィルタはそれの逆伝達関数である必要があるからです。回した位相は逆方向へ回す。すなわち、プリエンファシスもディエンファシスも等質のIIRである必要があります。

AudacityでRIAAを

前回はminiDSPのリアルタイム演算でRIAA変換が完結するBiquad-Filterを実装しました。
これがB-2。
今回は、AudacityでプリプロセッシングでRIAA変換を行う、B-1についても定義しておきましょう。

実はこれが本命なんじゃないか、という噂もあるんですよね。
なぜなら、いったんRIAA変換してしまえば他のオーディオファイルと同じで、再生のたびにフィルタを切り替える必要がなくて面倒が無いからです。ライブラリ、コレクション作りとしては一番適しています。これまで私はアナログRIAAされたデータをリップして保管していたのですが、それがディジタルRIAAに置き換わっただけ、という言い方ができます。

このB-1もかなり実施者が多いものになります。ただ、Audacityでやっている方は余り見かけません。他のアプリを利用されているようです。

FFmpegのインストール

ちょっと脱線ですが、準備です。Mac Bookを新しくしてからFFmpegのライブラリインストールをしていませんでした。私のライブラリはほとんどがALACですから、これをAudacityでダイレクトに開けるよう、FFmpegのインストールをしておきます。

  • まず、Macでターミナルを起動します。
  • ターミナルに下記を打ち込んで、Homebrewをインストールします。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)
  • 必要に応じてログインパスワードを入れて先に進めます。
  • brewのインストール完了後、Macでターミナルを起動します。
  • ターミナルに下記を打ち込んで、ffmpegをインストールします。
brew install ffmpeg
  • インストール後、Audacityを立ち上げてみます。

FFmpegが勝手に認識されて上図のような表示になっていれば成功です。

もうAudacity上で使えるようになっていますので、ALACを放り込んでもエラーにならずレンダリングされます。

Nyquistプロンプトを設計する

Audacity内には、Bi-quadフィルタを始めとした信号処理ができるNyquistプログラミングを生成できるパートを持っています。既存にないフィルタでも自分で設計して実装可能ということ。

Biquadのフィルタ係数は前稿ですでに分かっています。AIと何度か壁打ちしながら、Audacity用のNyquistコードを洗練させていきました。

最終的にFixしたコードはこちら。96kHz専用です。

;nyquist plug-in
;version 4
;type process
;name “RIAA Playback EQ (3-stage Biquad)”
;info “Apply RIAA playback equalization using cascaded biquad filters.”

(defun riaa-playback (sig)
  (let* (
         ;; Biquad 1
         (s1 (biquad sig
                     0.000002668566305   ; b0
                     0.000005337132609   ; b1
                     0.000002668566305   ; b2
                     1.0                 ; a0
                     1.993465701195010   ; a1
                     -0.993476375460227)) ; a2
         ;; Biquad 2
         (s2 (biquad s1
                     4.038590975057360
                     -7.681449551269820
                     3.651368040691490
                     1.0
                     1.803683839821240
                     -0.812193304300278))
         ;; Biquad 3
         (s3 (biquad s2
                     1.287299151934340
                     1.130250995677610
                     0.152308275577198
                     1.0
                     -1.130250995677610
                     -0.439607427511538)))
    s3))

(mult 1.5 (riaa-playback *track*)) ; RIAA適用後に約3.5dB増幅

これを Audacity-RIAA-IIR-96kHz.ny というファイルネームで保存しておきます。
上記 mult 1.5というのはゲイン付加。1.5倍は+3.5dBということです。ちょっと覚えておいてください。

Audacity内にNyquistを組み込む

さあ、いよいよ信号に対してRIAAフィルターを充ててみましょう。

対象の音楽信号を準備します。

私は実験用にサンプル曲を1曲準備しました。カートリッジ信号を取り込んだのではなく、ただの既存楽曲。つまり、このまま聴けば普通の音楽として聞こえます。

今回準備したNyquistはFs=96kHzの信号にしか使えません。リサンプルして96kHzの信号になっていることを事前チェックしてください。

Audacityのメニュー [ツール] →[Nyquist プロンプト…] と操作します。

Nyquistコマンドの入力画面となります。
ここに先ほどのnyをコピペすればいいのです。が、せっかくファイルに保存したので、それをロードしてみましょう。 [読み込み(L)] を押します。

保存しておいた ….nyファイルを選択します。

プロンプトがロードされて、このような表示になります。
ここで [適用] を押せばすぐRIAAが掛かるのです・・・が、ちょっとその前に保存しておきましょう。

Nyquistプロンプトウィンドウの [ユーザー設定] → [プリセットを保存] と操作します。

適当な名前をつけてプリセットとして保存します。

私は [Digital-RIAA-IIR-96kHz]という名前で保存しました。

保存されたプリセットを確認してみましょう。

[ユーザー設定] → [ユーザープリセット] → [Digital-RIAA-IIR-96kHz]

ここからいつでもプロンプトを呼び出して使うことができます。

では、いよいよ信号にRIAAを掛けてみます。
信号を「全選択」してから・・・

Nyquistプロンプトの [適用] を押します。

RIAAフィルターが掛かった結果が提示されます。音を聴いてみましょう・・・  モコモコ・・・モゴモゴ〜っとした低域協調の音質が聞かれます。どうやら成功したようです。RIAAが適用されたので、右肩下がりで低域強調された音質になりました。
ところで、上図の結果は随分とレベルダウンしてしまったように見えますね?そこについて説明しておきます。

レベル調整は別途必要

前述のNyquistはオリジナル信号が絶対にスケールアウトしないように作られています。そして、50Hzからのローパスフィルターを最初に通ります。音楽信号の最高レベルを形成するのは高域成分なので(理屈は分かりますよね?)、ハイカットを通すと全体レベルが極端に低下してしまうのです。

(mult 2.0 (riaa-playback *track*)) ; RIAA適用後に約6dB増幅

実は先ほどのプロンプト最終行に付与されている mult 2.0 は、あまりにもレベル降下が激しいのでゲイン補助で付けたものです。困ったことに、2.0だとスケールアウトするソースもあれば、5.0でもスケールが足りないソースもあり、ソースによって結果がまちまちなのです。だから、最終的にはソースごとにゲインを微調整して最適化する必要があります。もしも面倒な場合は、mult 1.5 (ゲイン3.5dB)位にしておいて、出力後に手動でノーマライズするのが確実かもしれません。

Biquadの旨味は何処にあるの?

皆様は「RIAA偏差」という用語をご存知でしょうか。
いわゆるRIAAディエンファシスフィルタを通した時の特性偏差がどのくらいだったかを示す精度指標です。

前述のbiquad係数を用いて数学的な演算を用いたときの原理偏差は、0.0003%など、途方もないオーダーになります。LP全盛期のアナログEQアンプのRIAA偏差のベンチマークは、各社±0.2dB程度でした。これに比べるとBiquadの偏差は突き抜けて高精度だと言えます。ただ、ちょっと考えてみてください。ヒト聴覚は±0.2dBの偏差を検知できる能力を備えているのでしょうか?(もちろんそんな検知能力はありません)

また、アナログディスク制作現場の精度にも思いを馳せてください。カッティングマスタリング現場でのIIRフィルタ(アナログ)は、果たしてそんな高精度のものだったのでしょうか?

そういう視点ではディジタルRIAAの偏差精度はオーバースペックと見做せ、私はむしろそれ以外のデグレポイントの方が気になります。Biquad以外の、たとえばディジタルパラメトリックEQやディジタルグライコなどでは、逆に偏差がアナログよりも大きくなってしまいます。歴史的にbiquadのIIRが珍重されたのはその背景もあるようです。

ディジタルvsアナログの本当のベネフィット、弱点、課題は、このDigital-RIAAテーマの最終稿で触れます。ここでは触れません。ここでは、原理的に「ディジタルRIAAは精度の面ではアナログに決定的アドバンテージがあるんだな」と覚えておいてください。

今回は、Audacityを用いたRIAA処理概要についてご紹介しました。
B-1, B-2ともにフィルタ設計とセットアップができただけ。

実際に、カートリッジサンプリング信号を喰わせて真っ当な音質に聞こえるのか?評価はこれからになります。

シリコンパワー ノートPC用メモリ DDR4-2400(PC4-19200) 8GB×1枚 260Pin 1.2V CL17 SP008GBSFU240B02

Synology NASを拡張した時に入れたメモリーがコレ!永久保証の上、レビューも高評価。もちろん正常に動作しており、速度余裕も生まれて快適です。

フィリップス 電動歯ブラシ ソニッケアー 3100シリーズ (軽量) HX3673/33 ホワイト 【Amazon.co.jp限定・2024年モデル】

歯の健康を考えるのならPhilipsの電動歯ブラシがお勧めです。歯科医の推奨も多いみたいです。高価なモデルも良いですが、最安価なモデルでも十分に良さを体感できる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

投稿者

KeroYon

関連投稿

固定ページでDIYラウドスピーカーの記事を

WordPressのメリットは、通常のBlog記事のほかに固定ページも作れるところです。 まあ、簡単...

ホットケーキ・アートにチャレンジ

何やら、家内と子供がYouTubeで面白いものを見つけてきたという。 ホットケーキを焼く時に焼き目で...

P-610A Originalの特性を補償する

箱に収めたDIATONEの P-610A。高低バランスは取れているものの、特性は気になるところがいっ...

食洗機がお亡くなり〜

先日のテレビの故障に続き。 我が家の食洗機がとうとう壊れました(壊れたと言うよりも起動しなくなった)...

P-610A 実験箱始動/オリジナル特性

今日も長文です。かったるい場合は写真のみでもサーっと流してご覧頂ければと思います。 DS-25Bのエ...