FC2ブログ

foobar2000を知る

19/11/25初稿

 「foobar2000七変化」をアップサンプリング専用記事にして、それ以外を移築しました。


■プラグインを使い尽くす

 ≪foobar2000≫の最大の魅力はDSP機能などによって信号処理をコントロールして音の違いを楽しめることではないでしょうか。
 そういうことができるのもPC-Audioの醍醐味のひとつですから、その一翼を担うPlayerとして貴重だと思います。

 DSP設定は「DSP chain presets」で複数保存できますが、それはconfigurationフォルダ下の「Core.cfg」に記録されているようです。ので、フォルダまるごとコピーすれば引き継げます(Portableモードの場合)。

 なお、本稿では、本体はPortableモードminimumインストールを用いています。
 これだとDSPプラグインがインストールされませんが、必要なものを入れれば機能自体は動作します。あと目立ったところではConvert機能が入りませんが、Playerとしては影響ありません。


■「排他WASAPI」でビットパーフェクトに聴く

 本項12/07/22追記。
 ずっとVer2.1を使ってきましたが、Ver3が出てきているようです(現在まだbeta5)。

・MMCSS
 最大のトピックは「イベントモード」サポートだと思いますが、「MMCSS(Multimedia Class Scheduler Service)」サポートも拡大されているようです。従来の「Playback:Priority3」から「Pro Audio:Priority1」への格上げ? です。
 MMCSSはVistaから導入された名前の通りの機能ですが、実際、Ver3beta5に変更すると再生時に「WASAPIHost64.exe」なるタスクが走るようになります。
 E-350ドライバではイベントモードが使えないのですが、こちらが効いているのか、タイマーモードのままでもVer3beta5の音質改善はかなり感じられます。

 と、ここで気になるのが同じくMMCSSを最適化しているのではないかと思われるFidelizer。こちらも「Fidelizer.exe」なるタスクが常駐しますので、なんかバッティングしてるような気が(苦笑)。
 そこで、Fidelizer2.1(Extremist Mode)をOffして比較してみたところ、Ver3beta5環境下ではそんなに変わらないようです。となると起動時間とバーターになるFidelizerはOffでいいかな。

・インストール
 「foo_out_wasapi.fb2k-components」なるファイルで入手することになります。
 これはfoobar2000に関連付けられたファイルになっているため、foobar2000が「Standard Mode」でインストールされている環境下ではダブルクリックでインストールできますが、「Portable Mode」でインストールしている場合は無反応になっちゃいます(OSから見るとPortableModeは“インストールはしていない”状態なので)。

 そういう場合は「Library/Configure」のcomponets一覧からInstallすればOK。「user-components」なる新フォルダが生成されてその中に3個ファイルが出現します。が、「componets」フォルダに移動しちゃっても動作するようですね。

 ちなみに「Standared Modeでインストールしたfoobar2000」にダブルクリックでインストールした場合、関連ファイルがどこにも出現しません。キモチワルイので探してみたら、ユーザフォルダ下の隠しフォルダAppDataの中にありました。

 なお、いずれの場合も旧バージョンdllは削除してからインストールが吉です。

 12/09/22追記:09/02付けでbetaじゃないVer3がリリースされたようです。従来の「タイマーモード」はおそらく「push」という名前になったようですね。

・PushとEvent
 本項19/12/09追記。今更ですが念のため。当WASAPIプラグインは、その説明ページ(*)で「排他モード」と言っており、「Pus」も「Event」で排他と共有の違いなどは語っていません。
 実際、S/PDIFループバックキャプチャしてみると、DSではLSBバケしますが、どちらもバケません。キャプチャ側はRecPcmWinのWASAPIイベントモードにて。再生中、DSだと鳴るシステム音が鳴らないのも共通です。

*:http://wiki.hydrogenaud.io/index.php?title=Foobar2000:Components_0.9/foo_out_wasapi

・Ditherの正体
 本項13/01/20追記。
 排他WASAPIの16bit出力設定では「Dither」が使えます。敢えて高域にノイズ成分を加えて聴感上の音質改善を図る? 機能です。
 iTunesの挙動に関して実験した時、ついでにその“波形”を確認してみたので追記しておきます。
 「サイン波:440Hz:-10dB」1644ファイルをfoobar2000の排他WASAPIでDitherオン再生し、デジタルループバックキャプチャして得たファイルと元ファイルを反転mixして“ディザによる差分のみ”ファイルを得ます。
 それを、SoXでリサンプルして2496排他WASAPI再生表示したのが以下のスペクトルです。

 USB DAC/ADC・・・SoundBlaster DigitalMusicPremiumHDのデジタルループバック
 再生ソフト・・・foobar2000 1.1.15 + WASAPI 3.0
 キャプチャ・表示ソフト・・・WaveSpectra 1.50

fb2k 1644Dither 2496SoX-WASAPIplay 2496WASAPirec

 リサンプリングが入りますが、カットオフ周波数がより大きい方が見やすいので2496変換再生してみました。
 スペクトル見れば一目瞭然ですが、データ値は-1,0,1だけじゃなく、もっと大きな値もあります(0と±1しかない場合はおそらく演算誤差ですね)。

 ちなみに、この音をHD650で聞いてみましたがなんにも聞こえませんでした(このDACのヘッドホン出力をボリュームMaxにて)。


■DSDを聴く

・リアルタイムPCM変換して聴く
 「DSDIFF」形式(拡張子.dff)をPCMに変換してくれるプラグイン「DSD Decoder」がありますのでそれを使います。
 プラグインの設定ではPCMのサンプリングレートを選択できます。最大192kHzですね。
 上記の通り排他WASAPIで24/192が通る設定にしておけばさっくり動きます。例によってbit数は表示されないので定かではありませんがDSP-Z7表示で192kHz出力が192kHzで受信しているのを確認しました。
 ちなみにDSD(DSD64)は2.8224MHzで変調された1bitDigitalですが、44.1kHzのちょうど64倍の周波数です。
 とすると、やっぱり、PCM変換する時は44.1/88.2/176.4が相性いいのかな?
 実際、192よりも176.4の方がかなりハッキリよい気がしますねぇ。だからデフォルトが88.2なのかな?
 音は圧倒的です。16/44.1とは全く違う世界が広がりますね。HDMI-Audioにしてよかったと思える音です。
 マルチも可能。

・ネイティブで聴く
 DSDファイルをそのまま再生することも出来るようになりました。もちろん対応USB-DACじゃないとダメですけど。DoPでもASIOでも可。


■プラグインの出力bit深度

 ところで、ふと気になることが。
 SoX Resmplerを通すとサンプリング周波数は確かに上がっています。が、bit深度の方は何bitで出力しているのでしょうか?

・SoX Resamlperの出力bit深度
 どうすれば調べられるかちょっと考えて、foobar2000(v1.1.7)の「Convert機能」でファイル化したものがUpSampling結果だろうと想定しましてやってみました。
 結果、bit深度「Auto」で出力したファイルは「16bit」でした(SoX Version 0.7.0にて)。
 「24bit」に設定すれば24bit深度のファイルができます。バイナリ覗いてみるとFFでも00でもない8bit分が増えていますが、全くランダムな値ではなく規則性がありそうです。もともと無かった下位8bitを演算で作り出しているのでどうしてもゼロ近傍の値になるからでしょうか? UpSampling処理に依る有意性のある8bitなのか否か、ちょっと判断つかない状態です。
 SoXを入れないで24bit設定にすると単純に8bit分ゼロ詰めされています。

 念のため元々24bitデータ(2496)のConvert出力も確認してみました。SoX(DSP)は入れていません。
 「Auto」で出力すると24bitになりました。「8bit」に設定すれば8bitになりました。きっと「16bit」設定なら16bitでしょう。

 う~む、「Auto」設定だとbit深度はDSP出力になるのではと思っていたのですが、“元データのフォーマット”と一致しますので、そうとは言えない結果に(苦笑)。

 Convert機能についてちょっと調べたところ、「bit深度の設定はエンコーダに入力する値」だというような記載がありましたので、DSPの前段の設定なのかも知れません。「Auto」ならフォーマットのままDSPに渡し、「24bit」なら下位bitをゼロ詰めしたりカットしたりして渡す、ということかも。
 どうも、Convert機能ではResamplerが出力するbit深度は確認できなそうです。

 なお、Convert機能の動作は出力APIの設定(DeviceやOutput formatで選択するbit深度)に影響されないようです。DeviceがNulでもConvert出力は可能ですので、そもそも無関係と推定されます。

・DSD変換の出力bit深度
 DSD変換の出力bit深度はどうでしょう?
 「DSD Decoder」の出力bit数をConvert機能で確認してみたところ、「Auto」設定では16bitのWAVファイルを出力しました。「24bit」なら24bitファイルで、中身も24bit有効なようです。
 こちらの場合は「DSD Decoder出力の設定」っぽいですね。やはりDSPに入力するbit数設定なのでしょうか。

・つまるところのbit深度
 本稿12/12/29追記。
 リアルタイムアップサンプリングとDSD再生で懸案だった本件をConvert機能によるファイル化ではなく「実際の出力データ」で確認。「Output format」を24bitに設定してS/PDIFに出力し、≪RecPcmWin 1.04≫で24bitキャプチャしてみました(32bitはできないので)。

 SoXもDSDも、下位8bitが00hなどの特定パターンになるようなことはなく、一応24bit有効なデータが出力されているようです。
 ≪foobar2000≫(排他WASAPI運用)におけるbit深度設定は原則「Output format」だけだと思いますので、≪foobar2000≫の内部処理は24bit以上であり(*)、最終的に「Output format」で文字通り“出力フォーマット”としてbit深度を決めている、と理解しておこうと思います。

*:本体ではなくプラグインですがSoXは32bitFloat処理の模様。本体も32bitFloatじゃないかと思います。

 なお、DSP処理のハナシではありませんが、ファイルとプレーヤ設定のbit深度の関係についても考えてみた中で≪foobar2000≫も例に引いています。


#本エントリーは12/03/03初稿「電池じかけのケーブル」を再利用したものです。


メインメニューへ

テーマ : オーディオ
ジャンル : 趣味・実用

最新記事
ERIへようこそ

Author:らかせ
「最新記事」または
「メインメニュー」からどうぞ

・ファイルへの直接リンク以外はリンクフリー(連絡不要)です

・一応、拍手にコメント(非公開)付けられるようにしてあります

・DB的に利用しており、過去記事もガシガシ書き換えています。特に「最新記事」は初稿から一週間くらいは直してることが多く、大幅に変わっちゃうことも。ご了承ください

・ということもありますし、記すまでもないですが無断転載(ファイル含む)はご遠慮ください

・引用の考え方については「007:諸事」をご参照ください

・ハイパーリンクは当Blog記事のみです(054:節電記事のみ例外)

・Amazonアソシエイトに参加しています(アフィリエイトはAmazonのみです)

カテゴリ
検索フォーム
FC2カウンター