アカウント名:
パスワード:
高ビットレートでもリピートしてると無意識に忌避するようになって可逆に乗り換えたんですが、MP3ではそうなるもののAACでは(まだ)なってないので、MP3自体に欠陥があるんじゃないかと思っています。
mp3、デコード処理がマズくてデコード時にクリッピングしてる可能性もあるので、そこも疑うといいかも
浮動小数点数で表現されてて-1.0~+1.0を超えるデータが普通にあるのに、-1.0~+1.0をそのまま16bit integerに割り当ててデコードしてる酷いプレイヤーが結構ある(クリッピングして波形が壊れた状態から音量調節してるので、プレイヤーの音量下げても無意味にクリッピングしちゃう)(正しくはfloatでデコードして音量調節してから16bit(等、DACとか目的にあわせた形式)にしないといけない)
駄目なもの例えばWindows Media Player 12やWinampなんかがそういう酷いデコードしてるDAWのCakewalkやCubase(最新のはなおった?)のmp3インポート機能も同様正しく読み込めないで波形壊れる
正しくデコードしてるプレイヤーをいくつか挙げるなら、foobar2000、VLC media player、KbMedia Player辺り(の最近のバージョン)ならだいじょうぶ
Windowsのカーネルミキサーが、深く関係しているよね。WMPとかはカーネルミキサー通すから音質劣化がひどい。WASAPI排他モードに非対応だから、なおさらなんだよな。
>foobar2000、VLC media player、KbMedia Player辺り(の最近のバージョン)ならだいじょうぶVLCとかも、カーネルミキサー通さず再生する方法があるのか。foobarは、拡張機能を入れれば行けるとは聞いているけれど。
それもデコードがマズいって話と同様にプレイヤー側が正しく扱えていないという問題だったりします
WASAPI共有モード、内部は32bit floatらしくて、単独の何らかのオーディオを流してループバック(※1)させてみるとわかるけど完全に元の精度を保っていて、超簡単に言うとミキサーを通しても音質は全く劣化しない
(それだけで納得できる素直な人なら、この先は専門的な長文なので読まなくていいかも><;)
よく言われるWASAPIは音が悪いというのは、ありぱぱさんが指摘した「リミッターの動作が雑であり、しかも 0 dBFSまで使わずに少し手前から効いてしまう」という話から生じた誤解かも(これですね [dgo.xsrv.jp] あとこれ [impress.co.jp]とか)
じゃあどうすればいいのかというと、プレイヤー側で音量調節してからWASAPIに流してあげればよいわけで・・・すると、今度は例えば『それでは16bit精度では送れない』『(いわゆる)ビットパーフェクト(※2)にならないじゃないか』という誤解が発生するけど、WASAPIの内部の制度はかなりプロフェッショナル向けな構造になってるっぽくて、16bit精度のまま32bit floatにディザをかけずにアップコンバート(というかなんというか)してから音量調節して32bit floatでWASAPI共有に流してあげると、ミキサーを通った後にループバックしたデータを見るときれいに(32bit float精度の限界最大で)16bit精度でそのまま残っています
なので、理屈の上では、例えば16bitソースを32bit floatに変換してからWASAPI共有に流して32bitのDACに送り込めば、16bitのビットパーフェクト再生と同等の再生が可能・・・なほどに高精度(※3)なので、Windowsが音が悪いというのは完全に誤解かも
そして本題であるmp3の再生だけど、#3552646に書いたとおりmp3はそもそも-1.0~+1.0を超える表現が出来てしまい、もちろん理論上bitパーフェクトなんていう概念も基本的には無く、実際例えばamazon mp3で売ってるデータでも超えてるのが普通なので、そのまま音量調節せずに普通のDACに送り込めば(排他モードであっても)クリッピングを起こすつまりカーネルミキサーは音が悪いと誤解された原因と同じ現象をさらに悪化させたようなことが起きるので、もっと音が悪くなる(というか記録された波形とぜんぜん違う波形がDACに流れてしまう)
なので、どっちにしてもmp3は正常な音声として鳴らすにはWASAPIに投げる前に音量調節が必要なので、その調節の時に十分にヘッドルームを空けていれば(※4)、WASAPI共有モードのミキサーは音質に全く影響をあたえないと言える
なので、結論としては、WASAPI共有が音が悪いって話は、そもそもデジタル録音(の特に量子化)を理解してない(音の)エンジニアやソフトウェア開発者の勘違いと処理の手抜きの言い訳と言えるかもそしてWindowsのVista以降のオーディオシステムって、本格的にプロ向け(※5)な発想すぎて、一般人向けにはある意味オーバースペックなのかも(故にこんな誤解が出ちゃったのかも)
----
(※1 Windows Core Audio(WASAPI)は柔軟なデザインなので、再生デバイスを録音デバイスのように扱うことで簡単にデジタルループバックができるようになってる)
(※2 余談として、表現範囲と整数精度の量子化bit数の話で言うのであれば、半分で1bitだという当たり前の事を忘れずに考えるべきかも それを忘れて解像度の話をしてる人が当時結構居たかも)
(※3 だけど、そこまでする意味はたぶん無いかも 数値として高精度であっても、人間が知覚するのは不可能だし、その違いが直接有意に現れるスピーカーやヘッドホンなんてもしあっても一般人は買えないだろうし、何よりもどうせDAC内部で1bit化してしまうので、世の中のほとんどのDACはそういう意味での真のbitパーフェクト再生(?)は出来ない(例えば「bitパーフェクト!」って言ってる人で実際にラダーDACをわざわざ使ってる人がどれだけ居るのかって考えるとなおさら) 結果的に音が知覚できるほどに変化する場合は、単にDAC側での処理がマズいと言えるかも(むしろディザ処理しないと逆に音質が悪化する可能性もある(けどそれも人間の耳じゃ判別無理そう)))
(※4 他に音を出さないつもりなら、1dBFSでも十分かも(ありぱぱさんのおすすめは0.2dBFSのヘッドルーム。わたしのおすすめは3.0dBFSのヘッドルーム。それでも放送業界辺りの常識から見たら全然少なすぎ(音デカすぎ、余裕無くて危険)かも?))
(※5 この文脈上のプロは、例えば放送業界とか信号処理とかそっち系であって、デジタル録音を理解せず日常的にクリッピングしてる楽曲データを作ってる音楽界隈の一部の馬鹿なエンジニアは含みません(有名人で駄目な人を一人挙げるなら、中田ヤスなんとかさんとか))
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
最初のバージョンは常に打ち捨てられる。
MP3ってまだ使われてる? (スコア:0)
高ビットレートでもリピートしてると無意識に忌避するようになって可逆に乗り換えたんですが、MP3ではそうなるもののAACでは(まだ)なってないので、MP3自体に欠陥があるんじゃないかと思っています。
Re: (スコア:1)
mp3、デコード処理がマズくてデコード時にクリッピングしてる可能性もあるので、そこも疑うといいかも
浮動小数点数で表現されてて-1.0~+1.0を超えるデータが普通にあるのに、-1.0~+1.0をそのまま16bit integerに割り当ててデコードしてる酷いプレイヤーが結構ある
(クリッピングして波形が壊れた状態から音量調節してるので、プレイヤーの音量下げても無意味にクリッピングしちゃう)
(正しくはfloatでデコードして音量調節してから16bit(等、DACとか目的にあわせた形式)にしないといけない)
駄目なもの例えばWindows Media Player 12やWinampなんかがそういう酷いデコードしてる
DAWのCakewalkやCubase(最新のはなおった?)のmp3インポート機能も同様正しく読み込めないで波形壊れる
正しくデコードしてるプレイヤーをいくつか挙げるなら、foobar2000、VLC media player、KbMedia Player辺り(の最近のバージョン)ならだいじょうぶ
Re: (スコア:0)
Windowsのカーネルミキサーが、深く関係しているよね。
WMPとかはカーネルミキサー通すから音質劣化がひどい。
WASAPI排他モードに非対応だから、なおさらなんだよな。
>foobar2000、VLC media player、KbMedia Player辺り(の最近のバージョン)ならだいじょうぶ
VLCとかも、カーネルミキサー通さず再生する方法があるのか。
foobarは、拡張機能を入れれば行けるとは聞いているけれど。
それも同様にプレイヤー側が主に悪いかも (スコア:2, 参考になる)
それもデコードがマズいって話と同様にプレイヤー側が正しく扱えていないという問題だったりします
WASAPI共有モード、内部は32bit floatらしくて、単独の何らかのオーディオを流してループバック(※1)させてみるとわかるけど完全に元の精度を保っていて、超簡単に言うとミキサーを通しても音質は全く劣化しない
(それだけで納得できる素直な人なら、この先は専門的な長文なので読まなくていいかも><;)
よく言われるWASAPIは音が悪いというのは、ありぱぱさんが指摘した「リミッターの動作が雑であり、しかも 0 dBFSまで使わずに少し手前から効いてしまう」という話から生じた誤解かも(これですね [dgo.xsrv.jp] あとこれ [impress.co.jp]とか)
じゃあどうすればいいのかというと、プレイヤー側で音量調節してからWASAPIに流してあげればよいわけで・・・
すると、今度は例えば『それでは16bit精度では送れない』『(いわゆる)ビットパーフェクト(※2)にならないじゃないか』という誤解が発生するけど、WASAPIの内部の制度はかなりプロフェッショナル向けな構造になってるっぽくて、16bit精度のまま32bit floatにディザをかけずにアップコンバート(というかなんというか)してから音量調節して32bit floatでWASAPI共有に流してあげると、ミキサーを通った後にループバックしたデータを見るときれいに(32bit float精度の限界最大で)16bit精度でそのまま残っています
なので、理屈の上では、例えば16bitソースを32bit floatに変換してからWASAPI共有に流して32bitのDACに送り込めば、16bitのビットパーフェクト再生と同等の再生が可能・・・なほどに高精度(※3)なので、Windowsが音が悪いというのは完全に誤解かも
そして本題であるmp3の再生だけど、#3552646に書いたとおりmp3はそもそも-1.0~+1.0を超える表現が出来てしまい、もちろん理論上bitパーフェクトなんていう概念も基本的には無く、実際例えばamazon mp3で売ってるデータでも超えてるのが普通なので、そのまま音量調節せずに普通のDACに送り込めば(排他モードであっても)クリッピングを起こす
つまりカーネルミキサーは音が悪いと誤解された原因と同じ現象をさらに悪化させたようなことが起きるので、もっと音が悪くなる
(というか記録された波形とぜんぜん違う波形がDACに流れてしまう)
なので、どっちにしてもmp3は正常な音声として鳴らすにはWASAPIに投げる前に音量調節が必要なので、その調節の時に十分にヘッドルームを空けていれば(※4)、WASAPI共有モードのミキサーは音質に全く影響をあたえないと言える
なので、結論としては、WASAPI共有が音が悪いって話は、そもそもデジタル録音(の特に量子化)を理解してない(音の)エンジニアやソフトウェア開発者の勘違いと処理の手抜きの言い訳と言えるかも
そしてWindowsのVista以降のオーディオシステムって、本格的にプロ向け(※5)な発想すぎて、一般人向けにはある意味オーバースペックなのかも(故にこんな誤解が出ちゃったのかも)
----
(※1 Windows Core Audio(WASAPI)は柔軟なデザインなので、再生デバイスを録音デバイスのように扱うことで簡単にデジタルループバックができるようになってる)
(※2 余談として、表現範囲と整数精度の量子化bit数の話で言うのであれば、半分で1bitだという当たり前の事を忘れずに考えるべきかも それを忘れて解像度の話をしてる人が当時結構居たかも)
(※3 だけど、そこまでする意味はたぶん無いかも 数値として高精度であっても、人間が知覚するのは不可能だし、その違いが直接有意に現れるスピーカーやヘッドホンなんてもしあっても一般人は買えないだろうし、何よりもどうせDAC内部で1bit化してしまうので、世の中のほとんどのDACはそういう意味での真のbitパーフェクト再生(?)は出来ない(例えば「bitパーフェクト!」って言ってる人で実際にラダーDACをわざわざ使ってる人がどれだけ居るのかって考えるとなおさら) 結果的に音が知覚できるほどに変化する場合は、単にDAC側での処理がマズいと言えるかも(むしろディザ処理しないと逆に音質が悪化する可能性もある(けどそれも人間の耳じゃ判別無理そう)))
(※4 他に音を出さないつもりなら、1dBFSでも十分かも(ありぱぱさんのおすすめは0.2dBFSのヘッドルーム。わたしのおすすめは3.0dBFSのヘッドルーム。それでも放送業界辺りの常識から見たら全然少なすぎ(音デカすぎ、余裕無くて危険)かも?))
(※5 この文脈上のプロは、例えば放送業界とか信号処理とかそっち系であって、デジタル録音を理解せず日常的にクリッピングしてる楽曲データを作ってる音楽界隈の一部の馬鹿なエンジニアは含みません(有名人で駄目な人を一人挙げるなら、中田ヤスなんとかさんとか))