foobar2000の必殺技

 Room equalizerとして、AUDYSSEYのARC System2、S&KAudioのSSC-X R2等パソコンソフトで行う方法と、アナログディバイシス社のSHARCというDSPで実現しているDEQX、アキュフェーズのDG-58というシステムがあります。
 その総てが大同小異、基本的に同じ手法で、正弦波をスウィープして、それをマイクで測定して、部屋の音響とスピーカーの音圧を含めてクローズドループのフィルターを形成してフラットネス化を行う方法です。
 今回、紹介するMathAudio Room EQも同様のソフトで、SSC-X R2に一番近いソフトと言えます。又、このソフトは現時点では、フリーウェアです。
 操作性は単純明快で、今まで使用したソフトの中で操作性はベストと言える程良くてきています。

以下の画面は、部屋の音響を測定しているところです。
MathAudio.jpg
Lチャンネルにマイクを繋ぎ測定を行っています。 測定のゲインを緑のラインで表示しています。 L/Rチャンネルのバランスは自動補正が選択されています。

MathAudio Room EQの概要
 ・部屋の音響面での問題点を補正します。
 ・スピーカー単体の問題点を補正します。
 ・従前のFIRベースのルーム補正システムのプリエコー(プリリンギング)問題を
  回避できます。
 ・部屋の補正の有無をリアルタイムで、聞き比べることができます。
 ・部屋やホールの大きさに関係なく補正が可能です。
 ・周波数応答の振幅と位相の両方補正します。
 ・深いノッチの補正を避けることにより、過度な補正を回避して、周波数応答の
  共振ピークを押さえます。
 ・カスタムターゲットカーブの設定をマウスで指定する事が可能です。
 ・64ビットの信号に対応しています。
 ・廉価なUSB測定マイクで想定可能です。
    例えばデイトンオーディオUMM-6 EMM-6
 ・マイクキャリブレーションファイルの読み込みと補正をサポートしています。
 ・周波数応答補正は特許取得済みで、その方法を適用します。

MathAudio Room EQの詳細
 設定方法と使用方の詳細は、以下に詳しく説明があります。
 http://mathaudio.com/room-eq.htm

特に優れている点
 ・イコライズする場合、ピークを潰すが、ディップは補正しない。
 ・イコライズする高域の特性をBright(フラットで高域が伸びる)と
  Neutral(高域が下がる)の選択が可能
 ・補正カーブを自由に作る事が可能
 ・L/Rのバランスを自動で整えられる。

惜しい点
 ・補正の周波数帯域の指定が出来ない。
 ・Linuxベースで動作しない。

Room equalizerを弱めに補正を行った場合
L_MathAudio.jpg

Room equalizerを強めに補正を行った場合(フラットの部分が弱めに比べて多ですね)
H_MathAudio.jpg

Neutralを選択した場合、高域が下がります(マウスで修正可能)
N_MathAudio.jpg

特定の帯域の補正を外す方法(2,500Hz以上を補正から外す例です)
 以下の様にマウスで緑色の曲線を変更すると、L/Rの補正曲線が変化します。
 マウスでの変更をリセットする場合は、Referenceのボタン(Bright,Neutral何れ)をクリックします。
Partial.png

 Minnさん作成のチャンネルデバイダーソフトと、このルーム補正ソフトを使うと素晴らしいPCオーディオを構築することが出来ます。
 かつてない程の処理能力を手にしたPCだからこそ可能なPCオーディオの世界。カスタムIC、FPGAを用いたハードウェア製品が足元にも及ばない、64ビットプロセッシングによるfoobar2000とDSPを生かさない手は無いですね。

foober2000を高音質で再生する方法

 foobar2000を使って音楽を再生する場合、CPUの物理コアーの割り振りと
優先処理の順序を整えて高音質にする方法を以下に記載しました。
http://grigri.jp/blog-category-7.html
 今回は、メモリー管理について独り言を
 音楽を再生する場合、必ずメデイア(媒体)から、メインメモリーに読み込み、その情報を基にサウンドシステムをレンダリングして音を出すのですが、その時、読み込むメデイア(経由道)により音が異なります。
 音の良い順番はおおよそ、以下の様に想定されます。

RAM(メインメモリ)
 複雑なIOS(Input Output System)のインターラプトが少なく負荷も低く、ノイズも少ない(と思う)。

NAS
 NASの設置場所によるが、内蔵SSD/ハードディスクより、イベント完了迄の時間が長いが、電源ノイズの面では、隔離されているので有利と思える。

内蔵SSD又は内蔵ハードディスク
 ディスクへのサーチ、シーク、読み込みの完了毎にインターラプトが生ずる事と、複雑なIOSを経由してエラーリトライ時に時間が掛かり、アンダーランを起こす。SSDもハードディスクもイベントに要する時間が異なるだけで、基本的には同じ。電源もスイッチング電源(12Vと5V)で最悪。

USBメモリー
 内蔵SSDと同程度

外付けディスク(USB)
 上記の悪条件に加えて、外付けディスクのスイッチング電源のノイズが、USBケーブル経由で、機器内に拡散される。

 そこで、音源を可能な限りRAMに読み込んで、再生する事が好ましい
のですが、foobar2000の設定を変更することにより、可能となります。
以下が、foobar2000でのRAM(メインメモリ)へ音源を先読みする設定です。
foobar2K.jpg

 full file buffering up to の項目で、RAMに先読みするバッファーサイズを指定します。
 例では、800メガバイト(CD1枚分+α)を指定しています。
 まあ、一曲分のキャパですので、このサイズで大方問題無いと思います。
 このfull file buffering up toを指定すると、音が出るまで、一寸遅れますが、連続して複数の曲を聴いてると、上手にバッファリングされていて、
気が付きません。
 又、再生中であってもディスクのアクセスランプが頻繁に点滅しません。
 ここで記している方法は、複雑怪奇なWindowsの構成に手を入れてRAMDISKを切る方法とは異なり、素直にfoobar2000が持つ基本機能を使用しています。

foobar2000でwebRADIOを聴く

Webradio.jpg
 Venice Classic Radio Italiaを聴いている画面です。
 いまさら~と、言う話だと思いますが、例のfoobar2000でWebRADIOを簡単に聴くことが出来ます。

 方法は、volumioのwebRADIOのフォルダー内にある「Venice Classic Radio Italia.pls」をドラッグ&ドロップするのが、一番簡単です。
dial.jpg

 VeniceClassicRadioItalia.pls
中身は、以下の項目で、構成されています。
[playlist]
numberofentries=1
File1=http://174.36.206.197:8000
Title1=(#1 - 347/1000) Venice Classic Radio Italia

 一日中、好きな音楽を聴くことが出来ます。
 とかく手持ちの音源のみを聴いていると、視野(聴野)が狭くなるので、webRADIOとか、BS放送は良いと思います。


PCオーディオとMMCSS

 オーディオに特化したPCの設定を考えてみます。
 PCの電源をスイッチングから、シリーズにする、ハードディスクをSSDに換装する、各種ボードの冷却ファンの電源を外部から得る等々、力技による方法が主流で、これも極めて重要ですが、ここでは、ハードに手を加えずして、音楽再生環境のオプティマイズについて考えて見ます。

PCをオーディオ環境で、使用する場合の最低限配慮すべき点をあげて見ます。
1.メール、Webブラーザーは使わない、又、サービスを停止する。
  但し、WindowsUpdate、ドライバーの更新等、保守時は除く。
2.ASIO以外のサウンド、ビデオ機能を無効化する。
3.ブラーザーを停止した事を条件に、ウイルス・ワクチンソフトを停止する。
4.Microsoft Windows Updateを自動からマニュアル起動に変更する。
5.リモート・ディスクトップで、マウス、キィーボードによるインターラプトを減らす。
6.タイム・イニシエートで動作する保守系のソフトを停止する。
7.MMCSS(Multimedia Class Scheduler Service)を有効にする。
8.仮想メモリーを無くして、メモリー不足時のステージング機能を停止する。

そこでMMCSSの効果について考えて見ます。
MMCSSについては、マイクロソフト社から以下の様に情報開示があります。
URL: Multimedia Class Scheduler Service

 Windowsの基本的な処理は、CPUコアー#0で行います。それに対して、音楽再生ソフト等、アプリケーションは、#0がビジーな時は、#1、#2、#3と順番に処理をシフトする事により、特定のCPUコアーに負荷が集中しないように分散して、スループットの向上が図られます。
 そこで、対策としては、音楽再生に関する処理は、逆にCPUコアー#0から限りなく離れたCPUで処理して、可能な限りインタラプトの機会が少ないCPUで処理する事が望ましいと言えます。
 実は、その方法を実現する為に、MMCSSの設定が存在するのです。
 これにより、CPUコアのユーティライゼーションの平準化と、インターラプト頻度の低減が実現します。

 対処の結果、肝心の音は、音場感が増して、スッキリした音になります。
 これは、クロックの確度を向上して、低位相雑音の環境が実現した時と似た現象に思えます。
 
●foobar2000で、処理の優先順位の指定でMMCSSに関する項目があります。
MMCSS.jpg

●FirefaceのUSB SettingsにEnable MMCSS for ASIOという項目があります。
 この機能を有効にすると、高負荷環境時でもサウンド処理が優先されます。
USB.jpg

 上記の様にRMEのASIOドライバーでMMCSSを指定すると、ASIOがCPU#1で稼働します。又、foobar2000でMMCSSを指定する事により、foobar2000もCPU#3で稼働します。これにより、サウンド機能が安定して稼働する環境が整います。
 以下がその実例です。
asio.jpg

●ASIOとWASAPI環境
 WASAPIに関する定義で、High worker Process Priortyという項目がありますが、ASIOの場合この項目にレ点を入れるとWindowsのオーバヘッドが増えて、ASIOのバッファリングが上手く行きません。
 この項目は必要性が無い限りOnとしない方が幸せになります。
 WASAPING.jpg

●設定項目の基本
 設定して効果が見られない場合は、必ず基に戻して下さい。
 必要で無い時は、基本的にオリジナルのまま、これが原則です。 

 マルチアンプの音量調整その1

RME_convert_20141027000518.jpg
 音楽プレーヤfoobar2000とRME TotalMIXの画面です、firefaceがフルスイングに近い状態で使われています。
 アナログ出力のメイン・スライダーを、0dBまでレベルを上げています。(左の矢印)

 デジタルチャンデバの音量調整は、なかなか悩ましい問題が山積しています。
 私の解決方法は、RMEのfirefaceのアナログ出力スライダーの連動機能に委ねています。
 firefaceのアナログ出力スライダーLow、Mid、High、をグループ設定を行うことにより、出力チャネルが連動して、デジタル・ボリュームとして動作します。(右の矢印)
 ここで重要なことは、TotalMIXというRMEの制御プログラムを使うことにより、音量を絞った時のビット落ちによる、情報欠落を最小にする事が出来るのです。

 RMEのTotalMIXの場合、内部処理が、フローティング・ポイント46ビットで処理を行っています。それと比べてANALOG DEVICESのSHARCを用いているベリンガー DCX2496(ADSP-21065)、同様にアキュフェーズ DF-55(ADSP-21363)、DEQX等は、仮数部32ビット、指数部8ビットの単精度浮動小数点数 (Single precision floating point number)で処理を行った後、アナログ出力のレンダリングを行うため、ビットシフトによる音量調整を行うと、圧倒的に処理する情報量が減少します。

 そこで、Mainの出力スライダーを0dBとしたとき、最適な音量となる様に、firefaceとパワーアンプのゲイン調整を固定抵抗のアッテネータでの調整が必要となります。

 IEEE 754(IEEE 浮動小数点数演算標準)で定められている様に、単精度浮動小数点数は、固定小数点数に比べてより広範囲な数値を表せるようになっていますが、同時に精度を犠牲にしています。精度を少しでも上げるために、RMEのTotalMIXは、46ビットの浮動小数点の演算を行い、ビット落ちを避けています。
 firefaceの音が良いとされている一つの要因であると思います。

 このデジタル・ボリューム機能を、積極的に使わない手は、無いと思うのですが・・・・・