おなまえ
Eメール
タイトル
コメント
参照先
暗証キー (英数字で8文字以内)
画像認証 (右画像の数字を入力) 画像認証
Re: Timer Resolution 投稿者:tairyu 投稿日:2020/01/03(Fri) 08:14 home No.7201

最近になって、WindowsのTimer Resolutionを高速化する、その名もすばり「Timer Resolution」というソフトがあるのをしりました。

https://cms.lucashale.com/timer-resolution/" target="_blank">https://cms.lucashale.com/timer-resolution/

これを使用することにより、Timer Resolutionを、約0.5msに設定(加速)することができます。その結果、私の環境では音質の改善(鮮明さ・切れ・深み)が認められました。

複雑な設定・操作をすること無く、デスクトップ画面上で、簡単にON/OFFできるのも便利です。

有償ソフトですが、わずか10オーストラリア・ドルですから、費用対効果は大きいとおもわれます。

なお、古いヴァージョンは、無料でダウンロードできますので、まずはこちらで効果を試してみるというのが良いかとおもいます。

https://timerresolution.soft112.com/" target="_blank">https://timerresolution.soft112.com/


Re: Timer Resolution 投稿者:yo 投稿日:2020/01/03(Fri) 09:57 No.7202

tairyuさん

貴重なソフトの紹介、ありがとうございます。これは相当に使えそうですね。

direttaとその技術を応用したSFORZATO社/SoulNote社のゼロリンクの公開で明らかになったことは「マスタークロック(128fs)のタイミングに合わせてどれだけ正確にデータを送り出すかがDAC音質向上のポイント」ということのようです。
この128fsというのは44100Hzだと3ms程度ですから、Windowsのタイマーの精度(マイクロソフトの秘密主義でよく分からないのですが、10msといわれています)から見て実現不可能な値なので、Windowsでの音質向上には限界があるなと思っていました。
しかし、こういうソフトがあるとなると話は別ですね。
0.5msという値がどういう具合に決められたのか不明ですが、3msは完全にクリアしていますから。

我ながら無節操だと思いますが、またWindowsに戻ろうかしら(^^;;;(^^;;;。


Re: Timer Resolution 投稿者:Pass 投稿日:2020/01/03(Fri) 11:25 home No.7203

tairyuさん

ソフトのご紹介ありがとうございます。早速試してみました。
残念ながら拙宅の環境ではあまり効果が感じられませんでした。再生ソフトがfoobar2000では効果が出ないのですかね。


yoさん

>マスタークロック(128fs)のタイミングに合わせて

データの切り出しのタイミングはマスタークロック(MCLK)よりBCKですね。ラズパイですと32fsですが、64fsや128fs以上のものもあります。

仮に32fsで計算すると、44.1kHz×2ch×32fs=2.8224MHHzとなり、1サイクルは354.308nsになりますので、0.5msより高速ですね。


Re: Timer Resolution 投稿者:tairyu 投稿日:2020/01/03(Fri) 11:49 home No.7204

yo様
Pass様

コメントをいただき、どうもありがとうございます。

このソフトの効果は、使用環境にかなり依存するようです。

http://community.phileweb.com/mypage/entry/4813/20191215/64082/" target="_blank">http://community.phileweb.com/mypage/entry/4813/20191215/64082/

なお、foobar2000の高音質化に関連しては、以下のレポートがあります。

http://community.phileweb.com/mypage/entry/5014/20191201/63984/" target="_blank">http://community.phileweb.com/mypage/entry/5014/20191201/63984/


Re: Timer Resolution 投稿者:yo 投稿日:2020/01/03(Fri) 12:33 No.7205

Passさん

多分、AMDでは効果がないということでしょう。こういうソフトはハード依存するはずですから。

> 仮に32fsで計算すると、44.1kHz×2ch×32fs=2.8224MHHzとなり、1サイクルは354.308nsになりますので、0.5msより高速ですね。

逆にいうと、0.1ms の精度を確保できれば、 十分ということになりますね。ラズパイ(linux)でこれが出来るかですね。


Re: Timer Resolution 投稿者:Pass 投稿日:2020/01/03(Fri) 17:41 home No.7206

yoさん

>逆にいうと、0.1ms の精度を確保できれば、 十分ということになりますね。ラズパイ(linux)でこれが出来るかですね。

この点はパパリウスさんがsmpdのフォーラムで触れていますね。
https://mpd.sytes.net/forum/topic/45/raspberry-pi-4-model-b/13" target="_blank">https://mpd.sytes.net/forum/topic/45/raspberry-pi-4-model-b/13

rpi3で50ns、rpi4では18nsだそうです。


Re: Timer Resolution 投稿者:yo 投稿日:2020/01/03(Fri) 22:32 No.7208

Passさん、ご教授ありがとうございます。
ちょっと話題がそれるかもしれませんが、関係があるので、書き込みます。

最近、lightMPDのインテルバージョンが登場し、音が良いと好評です。作者(digififanさん)はdirettaでも使われているLIVA Zをターゲットとして開発したのですが、LANチップが互換であれば、i7やi9の最新版でも動きます。このi7/i9での音が、USB接続であるのにかかわらず、素晴らしいです。
同じタイミングでラズパイ4対応のバージョンも公開されたました。こちらもハード性能はラズパイ3と比較して大幅にアップしていますが、残念ながら音はインテル最新ハードには及びません。

理由はハードの差しか考えられません。もちろん単なるCPU性能の差だけでは無く、インテルハードの電源供給の余裕度とか、USBチップの動作の安定度とか、SoCでは実現の難しいハードの安定稼働のための設計対策が音質アップに効果的に作用しているのだと思います。

当然タイマーの精度の向上もこのハードの安定稼働があって、実現される内容だろうから、これがインテルハードとラズパイハードの音質の差になっていると考えられます。

もう一つ。i2s接続について。理屈としては、これがもっともシンプルなインターフェースであり、音には良いはずです。しかし、別スレッドのdirettaを使っている方々の意見や多くのブログに書かれている内容を読むと、単純にi2sにすれば良いというわけでは無いようです。

「rpi3で50ns」という値は32fs再生には必要十分な精度です。にもかかわらず、i2s接続のSMPDがUSB接続のi7やi9のlightMPDより圧倒的に音が良いとはいえないのは、ラズパイというハードには何かが不足しているものがあるということでしょう。

さらにWindowsで動くアプリの場合、タイマ精度はもっと悲惨なことになります。しかし、再生環境をそれなりに整えれば、良い音を出すことは可能なようです。

このあたり、SMPDのコミュニティでもっと議論されてもいいのではないかと思っています。電源関係やi2s関係のスレッドはありますが、まだそういう展開にはなっていないようですね。

まあ、「SMPD讃」とか「I2Sの世界第二幕」などという書き込みをしておいて、表と真逆の発言をしていることは重々承知の確信犯です。得意技は卓袱台返しですので、書き始める止まらないのですよね(^^;;;。


Re: Timer Resolution 投稿者:Pass 投稿日:2020/01/04(Sat) 00:09 home No.7209

tairyuさん

foobarの音質対策のご紹介ありがとうございました。
残念ですが、こちらの対策も拙宅ではあまり効果がありませんでした。。。ついでにこちらのスレをお借りしてご報告すると、MinorityCleanは動作してくれませんでした。
AMD機は音楽再生には向かないのですかね。。。。


yoさん

面白い議論になってきましたね。

ラズパイ用にと思って、DC-YARROWから大きく回路変更をして、フィードバック式の電源を作ってみました。コレが絶大な効果を発揮します。smpdの音が2~3ランクアップしました。

調子にのって、Windows機に繋いでいるオーディオインターフェース用に9V電源を作って繋いだところ、こちらも効果絶大です。foobar2000でsmpdとブラインドテストしたら判別不能なレベルになってしまいました。こちらはもちろんI2Sではありません。安物の5mの光ケーブルです。

本日、rpi4が届きましたので、lightMPDをインストールしてみました。電源やDACとの接続はrpi3と同じ条件です。こちらもsmpdとブラインドしたら、判別不能なレベルです。


さて、この違いはどこから来るのでしょうか?
この議論、広く意見を求めてもう少し掘り下げてみたいですね。


Re: Timer Resolution 投稿者:tairyu 投稿日:2020/01/04(Sat) 00:53 home No.7210

Pass様

MinorityCleanの開発者によれば、「インテルCPUで確認しており、AMD CPUで再現するかどうかは未確認です。」とのことです。

http://community.phileweb.com/mypage/entry/229/20191217/64089/" target="_blank">http://community.phileweb.com/mypage/entry/229/20191217/64089/


Re: Timer Resolution 投稿者:tairyu 投稿日:2020/01/07(Tue) 08:35 home No.7218

他のサイトにおける投稿をみると、本ソフトの単独使用での、いわゆるON/OFF比較では、効果が微妙なこともあるようです。

一方、本ソフトは、他の音質改善方法と併用することにより、相乗効果があるようにおもわれます。

当方では、最近以下のものを順次併用することにより、大幅な音質改善がみられています。

・オリオスペックのDiretta Target PCの導入
・Bug headのMinorityClean最新ヴァージョンのインストール
・Windows 10の電源オプションにおける、「究極のパフォーマンス」の設定
・「Timer Resolution」のインストール


Re: Timer Resolution 投稿者:oryaaaaa 投稿日:2020/07/04(Sat) 14:27 home No.7499

PureBasicでは2008年に議論されており、1msになった経緯がある。
https://www.purebasic.fr/english/viewtopic.php?f=13&t=34358" target="_blank">https://www.purebasic.fr/english/viewtopic.php?f=13&t=34358
https://www.purebasic.fr/english/viewtopic.php?f=12&t=39017" target="_blank">https://www.purebasic.fr/english/viewtopic.php?f=12&t=39017

MinorityClean作者環境の測定値
0.9980 ms.
0.9980 ms.
0.9971 ms.
0.9968 ms.
0.9974 ms.

この他に、
MinorityCleanでは Sleep(調整された電子ビット基準の0)
という命令で良くしてます。

簡単に
XOR Rcx, Rcx
CALL SLEEP
をコールするだけでも良くなります。

具体的なテクニックは、こうします。

NtQueryTimerResolution_(@MinimumResolution,@MaximumResolution,@CurrentResolution)
Debug MinimumResolution ; 最小解像度 156250
Debug MaximumResolution ; 最大解像度 5000
Debug CurrentResolution ; 現在の解像度 10000

セット時
NtSetTimerResolution_(resolution,#True,@CurrentResolution)

解除時
NtSetTimerResolution_(#Null,#False,@CurrentResolution)
10000のデフォルト値へ戻る

PureBasicではAPIさえ分かれば楽に実現できます。


Re: Timer Resolution 投稿者:oryaaaaa 投稿日:2020/07/04(Sat) 15:22 home No.7500

PureBasic 2008年から2009年のフォーラムスレッドを確認した所、Timer resolutionの話題がありました。MinorityCleanとBug headで使用している Delay() という命令は SetTimerResolution(10000)を実行した後に Sleep() をコールする仕様であることが書いてありました。Timer resolutionは具体的には、下記のソースコードにて実現しています。

https://www.purebasic.fr/english/viewtopic.php?f=12&t=39017&hilit=SetTimerResolution" target="_blank">https://www.purebasic.fr/english/viewtopic.php?f=12&t=39017&hilit=SetTimerResolution

SetTimerResolution(5000)を実行した条件では
0.4967 ms.
0.4954 ms.
0.4957 ms.
0.4960 ms.
0.4962 ms.
0.4938 ms.
0.4989 ms.
0.4963 ms.
0.5244 ms.
0.4673 ms.


Re: Timer Resolution 投稿者:oryaaaaa 投稿日:2020/07/05(Sun) 02:38 home No.7504

NtSetTimerResolutionで値をセットしますと後、結果とは異なるようです。
この表ですが、5000-5013は 4960 になります。
Set 5000 -- Result 4960 | Set 5014 -- Result 5013 | Set 5067 -- Result 5066
Set 5121 -- Result 5120 | Set 5174 -- Result 5173 | Set 5227 -- Result 5226
Set 5281 -- Result 5280 | Set 5334 -- Result 5333 | Set 5387 -- Result 5386
Set 5441 -- Result 5440 | Set 5494 -- Result 5493 | Set 5547 -- Result 5546
Set 5601 -- Result 5600 | Set 5654 -- Result 5653 | Set 5707 -- Result 5706
Set 5761 -- Result 5760 | Set 5814 -- Result 5813 | Set 5867 -- Result 5866
Set 5921 -- Result 5920 | Set 5974 -- Result 5973 | Set 6027 -- Result 6026
Set 6081 -- Result 6080 | Set 6134 -- Result 6133 | Set 6187 -- Result 6186
Set 6241 -- Result 6240 | Set 6294 -- Result 6293 | Set 6347 -- Result 6346
Set 6401 -- Result 6400 | Set 6454 -- Result 6453 | Set 6507 -- Result 6506
Set 6561 -- Result 6560 | Set 6614 -- Result 6613 | Set 6667 -- Result 6666
Set 6721 -- Result 6720 | Set 6774 -- Result 6773 | Set 6827 -- Result 6826
Set 6881 -- Result 6880 | Set 6934 -- Result 6933 | Set 6987 -- Result 6986
Set 7041 -- Result 7040 | Set 7094 -- Result 7093 | Set 7147 -- Result 7146
Set 7201 -- Result 7200 | Set 7254 -- Result 7253 | Set 7307 -- Result 7306
Set 7361 -- Result 7360 | Set 7414 -- Result 7413 | Set 7467 -- Result 7466
Set 7521 -- Result 7520 | Set 7574 -- Result 7573 | Set 7627 -- Result 7626
Set 7681 -- Result 7680 | Set 7734 -- Result 7733 | Set 7787 -- Result 7786
Set 7841 -- Result 7840 | Set 7894 -- Result 7893 | Set 7947 -- Result 7946
Set 8001 -- Result 8000 | Set 8054 -- Result 8053 | Set 8107 -- Result 8106
Set 8161 -- Result 8160 | Set 8214 -- Result 8213 | Set 8267 -- Result 8266
Set 8321 -- Result 8320 | Set 8374 -- Result 8373 | Set 8427 -- Result 8426
Set 8481 -- Result 8480 | Set 8534 -- Result 8533 | Set 8587 -- Result 8586
Set 8641 -- Result 8640 | Set 8694 -- Result 8693 | Set 8747 -- Result 8746
Set 8801 -- Result 8800 | Set 8854 -- Result 8853 | Set 8907 -- Result 8906
Set 8961 -- Result 8960 | Set 9014 -- Result 9013 | Set 9068 -- Result 9067
Set 9121 -- Result 9120 | Set 9174 -- Result 9173 | Set 9228 -- Result 9227
Set 9281 -- Result 9280 | Set 9334 -- Result 9333 | Set 9388 -- Result 9387
Set 9441 -- Result 9440 | Set 9494 -- Result 9493 | Set 9548 -- Result 9547
Set 9601 -- Result 9600 | Set 9654 -- Result 9653 | Set 9708 -- Result 9707
Set 9761 -- Result 9760 | Set 9814 -- Result 9813 | Set 9868 -- Result 9867
Set 9921 -- Result 9920 | Set 9974 -- Result 9973 |

下2桁が00で揃っている設定値のパターン
Max 5000 -- Min 156250 の範囲で調べました。
Set 5601 -- Result 5600 | Set 6401 -- Result 6400 | Set 7201 -- Result 7200
Set 8001 -- Result 8000 | Set 8801 -- Result 8800 | Set 9601 -- Result 9600
Set 10401 -- Result 10400 | Set 11201 -- Result 11200 | Set 12001 -- Result 12000
Set 12801 -- Result 12800 | Set 13601 -- Result 13600 | Set 14401 -- Result 14400
Set 15201 -- Result 15200 | Set 16001 -- Result 16000 | Set 16801 -- Result 16800
Set 17601 -- Result 17600 | Set 18401 -- Result 18400 | Set 19201 -- Result 19200
Set 20001 -- Result 20000 | Set 20801 -- Result 20800 | Set 21601 -- Result 21600
Set 22401 -- Result 22400 | Set 23201 -- Result 23200 | Set 24001 -- Result 24000
Set 24801 -- Result 24800 | Set 25601 -- Result 25600 | Set 26401 -- Result 26400



mail

- YY-BOARD -