現在、JPLAY FEMTOの利用環境として
①FEMTO Serverを使用する音に注力した環境(mconnect使用)
②Minim Serverを使用するお気楽環境(mconnect使用)
③Minim Serverを使用する「極楽」環境(JRiver+JRemote使用)
という3パターンが試行錯誤の結果生き残っているのであるが、やはり①のFEMTOサーバー利用時に高域方向の解像度という点で音のアドバンテージを感じるものがある。
(注記)
JRiverをコントロールポイントのみの機能に限定し、FEMTOサーバー、FEMTOレンダラーを使うという第4の方法で良いとこ取りができぬものかあれこれと実験してみたが、結局のところこれは成功していない。この点についてはみみず工房の掲示板をお借りして随分と突っ込んだ議論をさせていただいた経緯もあるので興味があればそちらをご覧願いたい。
当然ながら、FEMTOサーバーの優位性はJPLAY FEMTOの設計の基本でもあるはずなので、具体的にはどういうノウハウが秘められているのか知りたくなる。そのノウハウが他の構成環境で生きるのか、同等の音質向上が可能なのかは全く判らないが、あれこれとやってみたくなるもの。
それにはまず、FEMTOサーバーを使用した時と他の環境との違いを推測も交えつつ確認していかねばならない。
1.FEMTOサーバーにおけるファイル変換(当方の場合はFLACからWAV)
これはffmpegを呼び出して行っていることが案外簡単に分かった。ファイル変換処理を自前で行うということは考えにくいと思っていたのでここはその通り。したがってファイル変換処理そのものでは(minim serverなどに比して)アドバンテージとなるような点はないと思う。ただし、ffmpegの呼び出し方の違いによる差はあるかもしれない。また、変換モジュールとしてffmpegの先でSoXが使われているのかどうかまでは確認できなかった。
(追記2018年12月26日)
ffmpegについて、JPLAY FEMTOでは具体的な内容は不明であるがかなりカスタマイズが行われている模様。通常ダウンロードした最新のffmpeg4.1ではモジュールサイズが60MB程度なのだが、JPLAYのインストールライブラリ(C:\JPLAY)に含まれているffmpegはモジュールサイズが2MBしかなく、圧倒的にコンパクト。オーディオファイル変換以外の機能はすべて削除しているものと推察できるが、詳細は未把握。音質向上の観点から開発者がどのように機能を絞り込んだのか興味があるところ。Minim Serverが呼び出すffmpegをこのJPLAYライブラリ上のffmpegに代えるという
技
もあることがJPLAY Forumに記載されているが、実験した限りではこのffmpegモジュールを使うようにMinim Serverの設定を行うとエラーになるのでインターフェース等も変更されているものと思う。(追記終わり)
2.FEMTOサーバーの音源の読み出し方
minim server等のディスクアクセスの動きを追うと、最初に音源を読みんだ後はしばらくアクセスが無く、曲の終わり近くで次の曲をがばっと読み込んでいる。I/O処理としては何ら不思議ではないのだが、やはりこのような読み出しだと微妙な負荷変動につながるのかもしれない。FEMTOサーバーでは少し動きが違い、曲の最初での読み込み後もかなり細かなディクスアクセスが続いており継続的に少量づつを読み込んでいる。曲の終わり付近では次の曲を読み込むためにI/Oが立ち上がる点は似ているのだが、曲の途中では少しづつ読み込んだ分だけffmpegに変換させているような動きにも見える。この辺りの処理スタイルの差が音の微妙な違いに結びついているのかどうか確証は持てないが、負荷変動を抑え極力正確なタイミングでJPLAY Serviceを駆動しようとしているものと理解できる。
(注記)
1.および2.の動きに関しては、タスクマネージャのリソース詳細、ディスクアクセスの情報から取得している。音源はDドライブに置いてあるので、システムディスクへのアクセスとは区別できているが、ここでの記述内容はあくまでもこの情報に基づく推測であることをお断りしておく。
3.タスクプライオリティ
FEMTOサーバーはJPLAY FEMTOとしてレンダラーと一体化して稼働しているので単体での動きは見えないのだが、JPLAY FEMTOは(JPLAY Serviceも同様)タスクプライオリティは「Real Time」で稼働している。minim serverの場合はこのプライオリティは「Normal」である。音源の読み出しという比較的小さなI/O処理において、なおかつCPUもほとんどビジーな状態ではないので、このタスクプライオリティによって音への影響があるものかどうか論理的には判らない。だが、実験してみる価値はあるだろうと考えた。そこで、minim serverとJRMCのタスクプライオリティをともに「Real Time」へ変更して聴いてみた。先入観やプラシーボがあるのかもしれないが、僅かにFEMTOサーバーの時の音に近づいたように感じる。少なくとも解像度(特に高域方向)に関しては、「Normal」よりも向上する。
推測に基づく実験や確認はあれこれ思案し出来るものを考えてみても現在までのところこの三つのみ。もちろんこの他にもいろいろな要素があるものと思うがまとまった考えには至っていない。この中で、他の環境で取り入れられるものとして1や2はむずかしく、できるものは結局のところ3しかない。だが、かってVoyageMPD等のLinux系の音楽再生環境でも「Real Time Kernel」による音の向上は体感できたので、あながち「全く無関係」ということはないと思う。まぁ、このレベルでは気休めかもしれないが、「③Minim Serverを使用する「極楽」環境(JRiver+JRemote使用)」 に於いてしばらくはこの対応にて聴き込んでみようと思っている。
(注記)
タスクプライオリティに関しては、タスクマネージャの詳細画面で優先度の変更として手作業で行うことが一般的に知られているが、恒常的にこの設定で聴く場合、都度操作介入しなければならないのでちょっと面倒。JRMCについては下記のスタートコマンドのショートカットを作成し、それをスタートアップに入れておけば自動起動でタスクプライオリティも設定される。
C:\Windows\System32\cmd.exe /c start "JRMC" /realtime "C:\Program Files (x86)\J River\Media Center 24\Media Center 24.exe"
だが、問題はminim server。これはJavaベースのプログラムなので、「.jar」というExecutable Java形式になっている。したがって、JRMCと同様なスタートコマンドでは起動できない
(スタートコマンドでは「.exe」のロードモジュール形式であることが必要)。minim serverは「mserver.jar」のダブルクリックやスタートアップで起動はできるのだが、この場合はタスクプライオリティを変更しての立ち上げが出来ないのだ。Javaプログラムをコマンドレベルで起動するためには
java -jar mserver.jar
とコマンド投入してあげれば良いのだが、ここでもタスクプライオリティを指定するオプションがない。cmd、start、javaの各種コマンドとショートカット起動の組み合わせであれこれ試しているが、タスクプライオリティを「Real Time」に設定してminim serverを自動起動することは現在できていない。(本件こうやれば良いよ、というアドバイスをいただけたら大変幸甚)
(2018年12月9日追記)
上記Minim Serverのプライオリティ指定の起動方法につき、みみず工房yoさんよりアドバイスをいただいた。基本はJRMCと同様にstartコマンドで良いのだが、javaプログラムの起動の際は「/d」オプションにてMinim Serverのディレクトリを指定する必要があることが判った。本件深く謝する次第である。
C:\Windows\System32\cmd.exe /c start "MinimServer" /realtime /d"C:\Program Files\MinimServer\lib" java -jar mserver.jar
なお、javaプログラム起動の場合はコマンドプロンプト画面が開いたまま残ってしまうが、特段の実害はないのでやむを得ないか。(追記終わり)
4way構成の設定備忘録(2018年12月8日更新)
項目 |
帯域 |
備考 |
Low |
Mid-Low |
Mid-High |
High |
使用スピーカー ユニット |
- |
Sony SUP-L11 |
FPS 2030M3P1R |
Sony SUP-T11 |
Scan Speak D2908 |
- |
スピーカーの 能率(相対差) |
dB |
97 (+7) |
90 (0) |
110 (+20) |
93 (+3) |
|
DF-55の 出力設定 |
dB |
0.0 |
+0.7 |
+1.2 |
+6.0 |
|
マスターボリューム アッテネーション |
dB |
-4.5 |
0.00 |
-10.0 |
-0.0 |
|
パワーアンプでの GAIN調整 |
dB |
0.0 |
0.0 |
-12.0 |
-12.0 |
|
スピーカーの 想定出力レベル |
dB |
92.5 |
90.7 |
89.2 |
87.0 |
|
クロスオーバー 周波数 |
Hz |
pass ~ 250 |
250 ~ 710 |
710 ~ 3550 |
3550 ~ pass |
Low Pass ~ High Pass |
スロープ特性 設定 |
dB/oct |
flat-48 |
48-48 |
48-48 |
48-flat |
Low Pass High Pass |
DF-55 DELAY 設定 |
cm |
-11.0 |
+26.5 |
-38.0 |
+27.0 |
相対位置と 測定ベース |
極性 |
- |
Norm |
Norm |
Norm |
Norm |
VoyageMPD 環境下 |
DF-55 DELAY COMP (Delay自動補正) |
- |
ON |
自動補正する |
DF-55デジタル出力 (Full Level保護) |
- |
OFF |
保護しない |
|