スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

iTunesを10から11にすると音質が変わる?:WAV編

13/01/26初稿

 先日、非WASAPI再生=Windowsオーディオエンジン(以下WAEと略)を通す再生でも、2496や2444などの“24bitなら”ビットパーフェクトなことが判りました(ただしピークリミッタに引っかかったらやっぱりダメ)。詳しくはデジタル転送時のビットパーフェクト性検証記事の13/01/24追記分をご覧ください。

 しかし、それでもiTunes再生はVer10も11もビットパーフェクトではありませんでした。

 つまり、iTunes内部で常に何らかの演算してからWAEに送り出していることになります。一体何やっているのでしょう?
 そこでふと、「もしかしてその処理がバージョン10と11で違っていて音質差になっているのでは?」と思いつきました。
 であれば、その処理差をデジタル的に明示することができれば10と11で音質が変わったことが証明できることになります。


■WAEでもビットパーフェクト処理ができるなら

 先の記事「AAC編」でバージョン10と11の音質差を検証しようとした時は、WAE側にビットパーフェクト出力手段がないと思っていたため開き直って「圧縮データであるAAC」で「スペクトルの比較」を行いました。
 が、ビットパーフェクト処理が可能な条件があるのなら、非圧縮のWAVファイル再生による比較も意味があるのではと。
 ただし、iTunes内部で行われている演算の何が違うのかは、ファイル録音してWAVコンペアしたって解らないでしょう。そこで、やっぱりまずは「WaveSpectra」によるスペクトルの比較を行いました。

 「WeveGene」「WaveCompare」も含め、efuさんのフリーソフトにはお世話になりっぱなしです。本当にありがとうございます。

 まず、大前提を記します。

・特記なきWAE設定(サウンドのプロパティによる「既定の形式」)はすべて24bit96kHz(2496)です。

・iTunesが使っているAPIは正確には不明(*)ですがおそらくDirectSound(以下DSと略)と仮定して記述します。
 32bit版ではXPもサポートしていることから。「OSをチェックして使えるなら共有WASAPIを自動設定」なんてしてないでしょう。32bitと64bitで仕様が異なるとも思えませんし。

*:QT不要Verでは設定どこにも出てきませんので不明。QT要Verでも、AAC編の最後の方に記した通りQT設定はiTunes再生音に影響してなかったのでQT設定のままとも思えないのでやっぱり不明です。

・もちろんスペクトル表示(録音)側は排他WASAPI。フォーマットは再生モードと同等に設定。
 フォーマットが違ったらデータとして認識できないのでそもそもちゃんと録音やスペクトル表示できませんからアタリマエですけれど。

・再生録音環境は冒頭のリンク先記事に準じます(デジタルダイレクトループ。アナログ要素はありません)。

・10.5.0以降では、不要となるQTも削除しています。

・EQがflat状態でかつチェックが入っていないことや、ボリュームMAXは確認して行っています。

・原則-10dB以下の音声なので「ピークリミッタ」問題は発生していないと考えています。

・2496ファイルを2496DS再生して2496排他WASAPI表示・録音(S/PDIFループバック)
 まずはWAEではビットパーフェクトな2496の「440Hzサイン波:-10dB」ファイルで比較してみました。
 先のAAC編と同じくバージョン10の代表は10.0.0、11は11.0.1です。
 すると以下のようなあきらかな違いが。

10.0.0
1000スペクトル 440Hz -10dB 2496

11.0.1
1101QTressスペクトル 440Hz -10dB 2496

 いきなりこの差にびっくり。

 11.01.ではホワイトノイズが発生しています。そして、それが22kHzあたりで減衰しており、LPFがかかっているように見えます。
 10.0.0ではそれらはなさそうです(しかし再生と録音ファイルで波形バイナリは一致しませんでした)。
 念のため2496のホワイトノイズを再生してみても同じく。10.0.0は横軸すべてフラットですが11.0.1は同じあたりでカットされていました。

 この差はいつから発生したのでしょう? 一番可能性があるのはQuickTimeが不要になったバージョンからではないかと考え、10.5.0でスペクトルとってみたところ、11.0.1と同様の波形となりました。
 ちなみにQT(10.0.0とセットの7.6.7でも最新の7.7.3でも)では、LPFみたいな効果も画面スケール-120dBノイズもありません(DSでも共有WASAPIでも)。しかし波形バイナリは一致しません。

 Apple何やってんの?

 DS設定したfoobar2000やuLilithやWMPでは「10.0.0型」のスペクトルになります。
 試しに11.0.1で1644の「440Hzサイン波:-10dB」ファイルを再生してみると、2496とほぼ同じスペクトルになります(22kHz以上のスパイク的な周波数成分の現れ方なども)。また、48kHzのファイルでも同じあたりで周波数成分がカットされていました。

 これって…11.0.1では、WAEに送り出す前にリサンプリングしてるんじゃないの?

 いずれにせよ、バージョン10と11では内部処理にあきらかな違いがあることが確認されました。それも、AACデコーダにおける±1の演算誤差レベルではない差違です。
 何がどう違うのかは不明ですが、今回の検証ではその詳細は問題ではありません。「内部処理が変わっている」ことがあきらかになっただけで十分です(よって“2496に正式対応しているか”なども問題ではありません)。

 まあ、そうは言っても好奇心から試しに2496のインパルス波形ファイルを作って11.0.1で再生録音してみたところ、再生した

Impulse 2496

が見事にインパルス反応して

1101 Impulse 2496

になっちゃったので、ものすごくリサンプリングっぽいですけど(念のためですが、2496のままiTunesから出力されていれば2496に設定しているWAE内ではリサンプリングは発生しません)。

 WAE1648モード再生録音での1648インパルス波形も見事にインパルス応答しました。

 10.0.0ではインパルス応答しません(2496も1648も)。
 10.0.0とは内部処理的には“同世代の仲間”と推定される10.4.1でもインパルス応答は見られませんでした。

 なんだか、11.0.1では96kHzも48kHzも44.1kHzにリサンプルして再生してるっぽいです(その後WAEで2496に再リサンプリングされていることに。無駄~)。音質を考慮したプレーヤではちょっと考えられない動作です。

 Apple何やってんの?

・1644ファイルを2496DS再生して2496排他WASAPI表示・録音(S/PDIFループバック)
 なんだか、フツーに一般的な16bit/44.1kHzフォーマットファイルを再生するケースでもイヤな予感(苦笑)。

 まずはスペクトルを拝見。-40dBのホワイトノイズファイル(オーディオチェックCDからリップしたもの。当然1644フォーマット)を再生してみます。
 ナイキスト周波数を超えたところまで見たいので1644をWAE2496モードで再生・表示します。WAE側でリサンプリングが入ってしまいますが“(ピークリミッタ級の)不可解な仕様”はないであろうと仮定して進めます。一応、WAE2496モードで再生録音した1644と1648の無音データ(オールゼロ)が2496のオールゼロデータになったことは確認。

 今回は、10.0.0と、2496ファイルの再生検証から内部処理が変わったVerと推定される10.5.0を比較してみます。

10.0.0
1000 WhiteNoise

10.5.0
1050 WhiteNoise

 またまたびっくり。この比較でもかなりの相違があります。

 foobar2000やuLilithなどとの比較では、今度は10.5.0の方が近しいです。11.0.1もこちらに近いです。
 内部処理はないfoobar2000などがこちらなのですから、「10.5.0型」はフォーマット限界の22kHzあたりで自然に周波数成分が消失している状態でしょう。
 一方、なんだか10.0.0ではフォーマット限界より低いところから減少しています。高域側にもう一度盛り上がりも見られます。

 これって…LPFかかってるんじゃないの?

 試しに1644インパルス波形をWAE1644モードで再生録音してみると、

1000 Impulse 1644

になりました。なんて綺麗なインパルス応答でしょう。何らかのデジタルフィルタがかかってる証ですね。
 10.4.1も同じくインパルス応答します。
 11.0.1では…インパルス応答は見られませんでした。

・10と11の違いをまとめてみる
 10.4.1でも挙動は10.0.0と同じようですので、敢えて予断も含めて仮説を言い切ってみると

  ・10.0.0~10.4.1まで(正確に言うと、途中のバージョンは定かではない)
    44.1kHz再生では内部でLPFをかけているのではないか

  ・10.5.0以降(少なくとも11.0.1までのバージョン11含む。正確に言うと、途中のバージョンは定かではない)
    10.4.1までのLPFはなくなった
    が、96kHz,48kHzを44.1kHzにリサンプリングするようになったのではないか

と思えます。

 以下、上記を正しいと仮定し、44.1kHzのWAVファイルを聴く場合について記します。

 10.5.0以降はLPFと推定される内部演算が無くなりfoobarやuLilithなどの“余計なことはしない”プレーヤソフトに音質は近づいているのではないでしょうか(バイナリは改変されていますので何らかの演算は残っているようですが)。
 無くなっているのがLPFなら、「高域がシャリシャリするようになった」と言われているのと合致しますね。また、「iTunesは音質が悪い」という従来の評価も「10より11の方がよい」という評価も、10.4.1以前は“特に必要ないハズ”のLPFと推定されるデジタルフィルタがかかっていたのですから納得できるところです。
 まあ、「LPFと思われる内部処理」が“LPFとしての音質差”だけを生んでいるとは限りませんが。

 よって、「10.4.1以前のバージョン10」から11にUpdateした場合、iTunes内部処理(演算誤差などの性能レベルではなく機能の有無レベルとして)が変更されているのですから出力されるデジタルデータが変わっているワケで、つまり「音質は変わる」と言っていいでしょう。

 もちろん、その差がアナログ再生として聴き取れるかは別問題です。
 さらにもちろん、10.5.0と11.0.1の内部処理がが全く同じとは限りません(大きくは同類ですが)。また、マイナーバージョンにおいても何がどう変わっているか解りません。
 「カーネルミキサ」などと同じように、ブラックボックスの演算が入ってる時点でどうでもいいですけど(笑)。

 なお、2496ファイルの場合は逆に「11の方が悪い(少なくとも11.0.1まで)」と評されても一応理屈は付けられます。言わずもがなですが。

・実際音質差はあるか
 LPF(であろう機能)の有無を際立たせるため、foobar2000のEQ機能で高域を思いっきりブーストしたある曲をConvert機能でWAVファイル化して、それを聴いてみました。もちろん1644フォーマットをWAE1644モードで、です。
 AAC編と同じ再生環境で10.0.0と10.5.0を比較。

 結果、10.5.0だと当然、サ行にキツいエッジが立つなど「高域がシャリシャリ」した不自然な音になります。10.0.0でもそれは残っていますが、10.5.0よりは聴きやすいですね。
 逆に言うと、もし、「そもそもかなりシャリシャリ(キンキン)した曲」の場合、10.0.0では目立たなかったそれが10.5.0以降では素直に再生されるようになり「高域がキツイ、音が悪くなった」という評価を受ける可能性が考えられます。でも、スペクトルを見る限り10.5.0以降の方がプレーヤとしては良くなっていると言ってよさそうです。ので、「べつにシャリシャリしてない曲」の場合は「11の方が良くなった」という評価も納得です。
 繰り返しになりますが、「LPFと思われる内部処理」が“LPFとしての音質差”だけを生んでいるとは限りません。

 以上、くどいですがWindows(それもx64の7限定)環境のみの話です。Macは知りません。
 …Mac版の10.0.0はビットパーフェクトなのでしょうか?


 ああ、やっと(一応)スッキリした(苦笑)。


 しかしやっぱ「Sound Blaster Digital Music Premium HD」便利だわ~
 「r2」になったみたいです。



 これ↓もS/PDIF入力あるけど、再生録音同時動作できるのかな? SB-DM-PHDと同じ再生リダイレクト機能があるみたいだからできそうだけど。ならこういう実験用には安くていいかも。




■おまけ

・コンバート注意
 13/02/01追記:11.0.1でWAVファイルから「WAVバージョンを作成」してみたら2496も1648も1644になっちゃいました(大爆)。
 10.0.0でも同じ。
 なにげにiTunesで「ハイレゾファイルのフォーマット変換」なんてしたら大変なことになりそうです。

・「プリアンプ」ってなんぞや?
 iTunesのEQ機能には、「プリアンプ」っていうボリュームがあります。デフォルトで真ん中です。つまり増幅できるようになっています。デフォルトとチェック外しで音量は変化しないようですが、念のため確認してみました。
 波形編集ソフト「SoundEngine」の「解析」では、-10dBファイルはiTunesの「プリアンプ」はデフォルトまたはチェック外し状態でレベルキープ。スライダを上げると増幅されていました。


■後日談

・WASAPI出現
 本項13/05/22追記。
 ふと11.0.2.25(13/02/19リリース)の設定画面みたら、API(*)と出力サンプリング周波数とビット数の設定画面が出現してるじゃ、あ~りませんか(爆)。

*DirectSoundとWASAPI(記すまでもなく共有モードですのでオーディオエンジン回避はできません)が明示的に選択できるようになりました。

11.0.1
iTunes設定110112

11.0.2
iTunes設定110225

 これを2496に設定したら2496ファイルもリサンプリングされなくなりました。Apple、QT不要化した時にシクってただけってことスかね?

 11.0.2の変更内容は以下の通り(らしい)。

This update adds a new Composers view for music, improves responsiveness when syncing playlists with a large number of songs, and fixes an issue where purchases may not show up in your iTunes library. This update also includes other stability and performance improvements.

 素晴らしいstabilityとperformanceの改善でしたね。

 このように、iTunesはいつ何がどう変わるか解りません。本稿で記したバージョン以外では、たとえ途中のバージョンでも本稿と異なる挙動するかも知れません。
 また、一度(改善と思われる方に)変更になった仕様でも、そのまま継続されるとは限りません。例えば、11.0.1ではLPF(と思われる処理)かかっていないと思いますが、この後のバージョンずっと同様である保証はありません(充分確認していませんが11.2.2では復活しているように見えます)。
 もし、本稿内容をご参考にされる場合はご注意ください。


・APIによっても違う?
 本項14/09/02追記。以下、OSはWindows8.1Update 64bitになってます。

 上に11.2.2.2(もちろん64bit版)に関する疑問を記しましたが、思い立ってちゃんと1644再生スペクトルをチェックしてみました。以下すべて1644のソースです。
 するとまたまた摩訶不思議なことが…

 確かにバージョン10ライクな“LPFかかったような”スペクトルになっていました。
 APIは共有WASAPI設定で試したのですが、念のためAPIをDSにしてみると11ライクな“健全な波形”になっちゃうじゃありませんか。
 「LPF復活か」と思ったワケですが、共有WASAPIの場合であり、DSだと発生しないのです。
 そこでインパルス応答を確認してみたところ、今度はどちらもデジタルフィルタがかかったような応答はしていません。

 え? はて?

 スペクトル確認では、
「DSまたは共有WASAPI:1644設定」→「WAEで2496再生」→「排他WASAPIで2496表示」
しています。WAEでリサンプルかかりますが、カットオフあたりを見やすくするためです。
 一方、インパルス応答確認では、WAEでのリサンプルは不可ですから
「DSまたは共有WASAPI:1644設定」→「WAEで1644再生」→「排他WASAPIで1644録音」
しています。

 とすると、共有WASAPIを使うとWAEにおけるリサンプル時にフィルタかかってるということ???
 その有無を確認するため、別の共有WASAPI再生としてPlayPcmWinを共有WASAPIモードに設定→WAEで2496再生してみたのですが、LPFかかってるようには見えません。
 また、iTunesの「共有WASAPI:2496設定」→「WAEで2496再生」してもやっぱりLPF的波形に。
 2448設定→2448再生→2448表示だと、DSでも共有WASAPIでもLPF的違いはなさそうです(といっても同波形ではなくDSの方が最低値が高そうに見えますが…もうイヤ)。
 1644を1644(たぶん2448→2448も)で再生している時には発生せず、ピンポイントな条件で発生するようです。

 以上から、iTunesは「共有WASAPIモードでリサンプリングが必要な時」、「何かする場合がある」ように見えます。
 14/10/28追記:PlayPcmWinは、共有WASAPIの時はPlayPcmWin内でWAEモードに合わせてリサンプリングしてWAEに渡しているようです。もしかすると共有WASAPIってプレーヤ側でリサンプリングするのが普通? だとすると意外ですが…
 やっぱりiTunes内でのリサンプル結果が共有WASAPIとDSで異なるということでしょうか?

 以上、やっぱりiTunesは(*)自身のバージョンやAPIや設定やソースのフォーマットなどの組み合わせによって挙動が変化すると言えそうです。


*:もちろんiTunes“だけ”がそうだという意味ではありません。例えばAudacityの共有WASAPIとDSも違った波形出力するようです。が、ビットパーフェクト出力を保証していないプレーヤ(機能)についていくら調査してもキリも意味ありませんので、このへんで(笑)。


メインメニューへ
スポンサーサイト

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

ERIへようこそ

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

・ファイルへの直接リンク以外はリンクフリー(連絡不要)です
・一応、拍手にコメント(非公開)付けられるようにしてあります
・DB的に利用しており、過去記事もガシガシ書き換えています。特に「最新記事」は初稿から一週間くらいは直してることが多く、大幅に変わっちゃうことも。ご了承ください
・ということもありますし、記すまでもないですが無断転載(ファイル含む)はご遠慮ください
・引用の考え方については「007:諸事」をご参照ください
・アフィリエイトはAmazonのみです
・ハイパーリンクは当Blog記事のみです(054:節電記事のみ例外)

最新記事
カテゴリ
検索フォーム
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。