><https://twitter.com/orange_in_spacehttps://pawoo.net/@orange_in_space
これ、ちゃんと検証するには検証用のプレイヤー作らないとダメっぽさ・・・><
Cakewalk Version 24.04.1 build28でのWASAPI共有モードで24bit出力(オレンジが持ってるやつのネイティブ)はちゃんと整数精度っぽい><(当たり前だ!><;)
PlayPcmWinのWASAPI共有モードは整数精度><
SoundEngine Free ver.5.10 も整数精度で再生されてない・・・><
リミッタ無関係にダメっぽい(整数の精度になってない)の、fb2k、winamp、DirectShow、ダメじゃないやつKbMediaPlayer(ds、winmm両方)
あ><; リミッタ拾ってただけ?><;
Winamp、WMP12も整数精度になってない><
WASAPI共有の高精度再生、うまく言ってる場合とそうじゃないのがわけがわからなくなってきた・・・・><(例えばfb2kは整数の精度で再生してない><)
もしかして、WASAPIはWASAPI共有でも高精度(というか32bir float上で完全な精度)だけど、DirectShowとかwinmmとか経由では低精度?><;
楽しいハック講座 (4) Windows7 オーディオアーキテクチャの概要 – Windows Multimedia Hacks https://blogs.msdn.microsoft.com/windows_multimedia_jp/2010/06/28/4-windows7/
DirectShowじゃなくDirectSoundが何かしてるっぽい挙動っぽさ?><
DirectShowでwavファイル再生したら精度めちゃくちゃって出た><; なぜ?><;
thunder?><
!?><
.
・・・よく考えたら当たり前なのかも?><(WASAPIに32bit整数で送って、32bit精度で鳴ってなかったらむしろWindowsがぶっ壊れてる><;)
TuneBrowserしゅごい!!!>< ちゃんと32bit整数の精度でmp3を再生してる!!!!><
オレンジが作ったこの精度チェックする仕組み、他アプリの音量とかも監視した上で(=他のアプリの音が鳴ってたら正しくチェックできないから)、いいタイミングで自分自身の再生精度が正しいのかセルフチェックし続けるメディアプレイヤー作れそう><これなら「Windowsはリミッター云々で音悪い」って文句言ってる人も納得しそう?><;
具体的になにをしてるかというと、 もっと見る
1. WASAPIループバック録音する(32bit floatのはず><)2. 各サンプルを集計する><(16bitなら65536種類以下になるはず><)3. さらに集計したサンプル間の差を集計する><4. もし整数なデータのみを再生(普通は16bit)のみをしているのであれば、全てのサンプルの差が整数倍にしかならないはず><
全部整数倍だった → すばらしい!><
一部違ってた → 別の音が混じって鳴ったか、そもそも整数な音声データでは無い(例えば正しくmp3を再生した)か、音デカすぎてリミッターに引っかかった
これつまり、精度の測定もせずにビットパーフェクト再生とか言ってんじゃねーよ!>< と言えるツールが出来たと言える><(だだしあくまでWindowsのオーディオエンジンの中でであって、デバイスドライバとかハードウェアがどう処理するかは別><(例えばこのまま16bitでDACに送れば16bitの精度では当然再生出来ない><))
思考の /dev/null