1. 無料アクセス解析
プロフィール

五枚重ね

Author:五枚重ね
備えあれば憂いなし

mail:
gomaigasane(@)gmail.com
…(@)は@に置き換えで

最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
FC2カウンター
ブロとも申請フォーム
ブログ内検索
RSSフィード
リンク
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


スポンサー広告 | 【--------(--) --:--:--】 | Trackback(-) | Comments(-)
HDCD考察(2):HDCDデコード済みwavの取得法
HDCDなCDをパソコンで手軽に高音質で楽しむまでのメモ。その2。
今回は、Windows Media Player(以下WMP)を使ったHDCDデコード済みwavファイルの吸出しについて。
その他の手段で録音・抽出したwavファイルとの比較も絡めて、各手段の妥当性について考察する。
細かい考察については前回の記事も併読されないと分かりにくいかも。


◆WMP+プラグインでHDCDデコード済みwav出力
前回リンクを貼った2chの過去スレの終わりの方で知った、便利なプラグインツール。
通常のリッピング感覚で、再生ファイルのデコード済み音声をwavファイルに出力できる。


インストールしたらWMPを起動して、以下のように選択してチェックマークをつけると有効になる。
有効にしている間は、再生と同時にDirect Soundで扱っているデータをwavとして出力するようになる。

WMPのプラグイン選択

有効にする前にいくつか設定しておくべき項目があるので、上記の[オプション]を選ぶ(下の左図)。
[プロパティ]でwav出力先のフォルダを選び、[Disable audio output]にチェックを入れる(下の右図)。

WMPプラグインのオプション
WAV Output plug-inのプロパティ

[Disable audio output]にチェックを入れていると、再生時に音が出ずwav出力だけされるようになる。
DAEMON ToolsでマウントしたCDなどでは単純なファイルコピー並の速度でwav出力されるので便利。


ただし、少なくとも自分の環境では以下のような問題が生じたので対処が必要になった。

  • ffdshowの設定でaudio decoder configuration - Codecs - Uncompressedがenableだと
    WMPで24ビットオーディオを使う設定にしていても16bitのwavしか出力されない。
    ffdshowで該当箇所をdisabledにすると24bitのwavが出力されるようになった。
  • “Disable audio output”オンで出力したwavはヘッダに異常が見られる。
    具体的には、アドレス0x10の値が本来0x10のはずなのに0x12になっている。
    また、アドレス0x24から余計な2バイトの0が付加されている。
    そのため一部の再生ソフトや波形編集ソフトで扱うことが出来ない。
    エディタでヘッダを編集しても良いが、Lilithのファイル変換機能を通すだけで修正される。
    下図のように出力形式にRIFF PCM WaveFileを選び、拡張形式の有無を決めてからwav変換開始。
    拡張形式をオンにしていないとWMPでは再生できないが、ソフトによってはオフにしないと駄目
    日頃使用するソフトに合わせて設定しておき、必要に応じて変換しなおすと良いだろう。
    Lilithのwav出力設定


[20bit?16bit?出力ファイルをチェック]
[オーディオCDに24ビットオーディオを使う]がオンになっている場合
HDCDなCDはもちろん、普通のCDでも同じように24bitのwavファイルが出力される。
wavファイルのフォーマットだけでは本当にHDCDデコードされているのかどうか分からないので
24bitのwavファイル中に含まれる実質的なビット数を測定するツールで判別する。

注意!
必ず「対象をファイルに保存」などで保存。FC2の仕様に従い拡張子をtxtに偽装しているが実際はzip。
ダウンロード後にファイル名から".txt"を削除してから、zip解凍ソフトで展開する。

(追記:2007/08/14)
バグフィックスをした。また出力結果を詳細化した。


使い方はコマンドプロンプト上で
    hdcdcheck hoge.wav
といった具合に入力して実行する。しばらく待つとビット数の測定結果が表示される。

適当に選んだ2曲について、測定結果からHDCDデコード済みデータかを判別する。
  1. 隠れHDCDなCD『TaQ / bounce connected』よりDisc-2の「abstract(radical mix)」

    This file includes 20bits audio data.(with a sign bit)
    MAX(without a sign bit):23bit min:5bit

    ⇒HDCDデコード済みwavファイル。24bit中の上位20bitを使用している。
  2. 普通のCD『FISH TONE / KING JOE』より「Chicago Coins」

    This file includes 16bits audio data.(with a sign bit)
    MAX(without a sign bit):22bit min:8bit

    ⇒16bitで出力した時と同等のwavファイル。24bit中の16bitを使用している。

というわけで、HDCDなCDであればちゃんと20bitの情報量を持ったwavファイルが出力されると分かった。


もう一つのポイントは、普通のCDの場合は24bit中の上位16bitを使用するのではなく、
(符号を除いた)実質的な最上位ビットを使用しないということだ。
よって、最上位ビットまで使用しているwavファイルと比べて1bit分=6dB分音量が小さくなる。
これは前回述べたWMPの仕様と一致する。
一度24bitに水増ししているので、ビット落ちによる音質劣化なく音量を半分にしているわけだ。
当然、音量を丁度2倍してから16bit化すれば、最初から16bit出力したものと完全に一致する。
この辺りについては次回、「偽隠れHDCD」の話で再検証する。



◆VH7PC録音したものと比較
もう一つのHDCDデコード済みwavファイルの取得方法として、
「CDプレイヤーでHDCDデコードしたデータをデジタル録音する」というのがある。
しかし光or同軸のデジタル出力にHDCDデコード済みのデータを流すプレイヤーは滅多になく、
実質的にVH7PCがHDCDデコード済みデジタル出力可能な唯一の機種らしい。
マニュアル(pdf)の33ページにあるように、デジタル出力についてはHDCDデコードの有無を自由に選択できる。
PC側では、例えばWaveSpectraなら以下のようにして録音(ASIOでなくDirectSoundでも可だろう)。

WaveSpectraのオプション設定例

このVH7PCとUA-101でデジタル録音したwavと、WMP+プラグインで出力したwav、
また通常のリッピング方法としてEACで得たwavとを比較し、それぞれの一致具合を確かめる。
素材としてはさっきと同じ『TaQ / bounce connected』より「abstract(radical mix)」を用いる。
各wavに以下のような名前をつける。

  1. EAC
    EACでリッピングしたwavをTWEで24bit化(単に水増し)したもの。

    This file includes 16bits audio data.(with a sign bit)
    MAX(without a sign bit):23bit min:9bit

  2. WMP(no-24bit)
    [オーディオCDに24ビット~]オフでWMP+プラグインで出力したwavを
    TWEで24bit化(単に水増し)したもの。

    This file includes 16bits audio data.(with a sign bit)
    MAX(without a sign bit):23bit min:9bit

  3. WMP(24bit)
    [オーディオCDに24ビット~]オンでWMP+プラグインで出力したwav。
  4. This file includes 20bits audio data.(with a sign bit)
    MAX(without a sign bit):23bit min:5bit

  5. VH7PC(no-HD)
    [non-HDCD]設定でVH7PCから出力しUA-101で24bitデジタル録音したwav。
    カット編集を行い冒頭の0データや全体の長さを他と揃えている。

    This file includes 16bits audio data.(with a sign bit)
    MAX(without a sign bit):23bit min:9bit

  6. VH7PC(HDCD)
    [HDCD]設定でVH7PCから出力しUA-101で24bitデジタル録音したwav。
    カット編集を行い冒頭の0データや全体の長さを他と揃えている。

    This file includes 20bits audio data.(with a sign bit)
    MAX(without a sign bit):23bit min:5bit


以下の図はTWEで“EAC”を除く各ファイルの波形を並べたもの。
実質20bitのデータを含んでいるものは全体的に音量が小さいが、その分ピークが大きく伸びている。
実質16bitのものは全体的にピークに張り付き気味で平坦。これがピークエクステンションの差だ。

TWEでの波形表示比較

次に示す表はWaveCompareでの比較結果。一致したら○・不一致なら×。
結果より一致するパターンは、EAC=WMP(no-24bit)=VH7PC(no-HD)である。
つまりWMP・VH7PCともに通常CD扱いでのwav出力はEACリッピングと完全に一致する
これはそれぞれのwav出力・デジタル音声出力にデータ化けが生じないという良い証拠だろう。

v
  EAC WMP(no-24bit) WMP(24bit) VH7PC(no-HD) VH7PC(HDCD)
EAC (○) × ×
WMP(no-24bit) (○) × ×
WMP(24bit) × × (○) × ×
VH7PC(no-HD) × (○) ×
VH7PC(HDCD) × × × ×(○)

問題は一致しないパターン。黒い×印は当然の結果だが、赤い×印に問題がある。
つまり、WMPとVH7PCではHDCDデコード結果が異なるwav出力がなされているのだ。



[WMPとVH7PCのHDCDデコード詳細比較]
WaveCompareとTWEを使って、より詳細にWMPとVH7PCのHDCDデコード結果について比較検証する。
WaveCompareで出力した最初の10個の相違点はこんな感じ。

file1: I:\HDCDtest\abstract (radical mix)\WMP(24bit).wav
file2: I:\HDCDtest\abstract (radical mix)\VH7PC(HDCD).WAV
比較中 ...  (開始点  file1: 0,  file2: 0)
相違がありました
    14061:     -128,       0        -256,       0
    14063:     -128,       0        -256,       0
    14065:     -128,    -128        -256,    -256
    14067:        0,    -128           0,    -256
    14068:     -128,       0        -256,       0
    14070:     -128,    -128        -256,    -256
    14072:     -128,    -128        -256,    -256
    14074:     -128,    -128        -256,    -256
    14075:        0,    -128           0,    -256
    14077:     -128,    -128        -256,    -256

どうも曲冒頭でVH7PCの方が音量が倍大きいようだ。下図は該当箇所をTWEで拡大表示したもの。

WMPとVH7PCのHDCDデコード波形比較(1)

確かに2000サンプルほど明らかにVH7PCの方が波形の振幅が大きいが、その後は同じように見える。
これより、VH7PCは再生開始直後はHDCDデコードせずにデジタル出力するのでは、と予想される。
つまり、HDCDフラグを認識してから実際にデコード開始するまでがVH7PCは若干遅いのに対し、
WMPはHDCDフラグ認識後即座にデコードを開始している、といったところだろうか。
他のトラックやHDCDなCDでも再現性が見られたので、この点に関してはWMPの方が優秀と考えられる。


次に、明らかに相違があると分かった冒頭を削って曲の途中から比較してみる。
冒頭1,000,000サンプルをカットしたwavファイル“WMP(24bit)e.wav”と“VH7PC(HDCD)e.wav”を作成し、
先程と同じようにWaveCompareで比較。最初の10個の相違点を以下に示す。

file1: I:\HDCDtest\abstract (radical mix)\WMP(24bit)e.wav
file2: I:\HDCDtest\abstract (radical mix)\VH7PC(HDCD)e.wav
比較中 ...  (開始点  file1: 0,  file2: 0)
相違がありました
      580: -3314912,-3044768    -3314928,-3044768
    18210:   976640, 3277232      976640, 3277248
    31971:  2850688, 3236432     2850688, 3236448
    33801: -1477632,-3299072    -1477632,-3299088
    48487:  2113664, 3710176     2113664, 3710192
    48542:  1900416, 3384176     1900416, 3384192
    81145:  2625920, 3376112     2625920, 3376128
    81153:  3360272, 3039088     3360288, 3039088
    90141:  2017536, 3390896     2017536, 3390912
    90946:  1405696, 3383504     1405696, 3383520

結果、WMPよりVH7PCのデコードデータの方が振幅が16大きいという相違が生じている。
この16というのは、24bitの2進数で言うと5bit目が0か1かで生じる値の差にあたる。
そしてこの5bit目とは、24bit中の上位20bitを使用しているオーディオデータにとっての最下位ビット。
つまり、WMPとVH7PCでHDCDデコード結果の最下位ビットが異なる場合があるということだ。


この異なり方だが、比較結果の通りサンプルもランダム、チャンネルもランダムで規則性が無い。
また最下位1bitの差なんて、少なくとも自分の耳では聞き比べても全く分からなかった。
よってこの結果からはWMPとVH7PCのどちらがより正しくHDCDデコードしているかは判断できない
そうなると、前述の曲冒頭のデコード結果から、WMPを使う方がベターと言えるだろう。



◆まとめ ~ WMP+プラグインを使いましょう
ここまでの考察で得られたものをまとめておく。

  • HDCDなCDからHDCDデコード済みwavファイルを得るには、
    WMPでWAV Output plug-inを使う方法がお手軽さと精度の面でベター。
  • 上記の方法で取得したwavファイルは一度Lilithの変換を通しておく。
    WMPをメインに再生するなら拡張形式をオン、そうでないならオフ推奨。
  • VH7PCの場合、再生直後の一瞬だけHDCDデコードを行っていないようである。
    聴覚上は分からないほどの一瞬なのでCDプレイヤーとして使う分にはほとんど問題は無いが
    わざわざこれを使ってHDCDデコード済みのデータを録音するのは手間がかかるだけ損。

前回の記事の最後に記した疑問に対する回答は、
  • WMPはちゃんとHDCDデコードの有無を、24ビットオーディオのオンオフで切り替えてる。
  • WMPとVH7PCではHDCDデコードに差が生じる。ただしどちらがより正しいかは判別できなかった。
  • WMPは24ビットオーディオがオンなら、通常の音楽CDも一度24ビットに水増しするから
    音量が半分になってもビット落ちすることはない。音質は完全に維持されてる。

なにはともあれ、これでいちいちCDを入れ替えたり仮想マウントし直すことなく、
愛用している再生ソフトLilithで20bitなwavファイルを好き放題楽しめるようになった。
通常の16bit版との再生音質比較についてはまた先延ばし、そのうち述べることにする。


次回は途中でも少し書いた、「“偽”HDCDなCD」について。

スポンサーサイト


オーディオビジュアル | 【2007-08-12(Sun) 20:00:18】 | Trackback:(3) | Comments:(0)
コメントの投稿
管理者にだけ表示を許可する

管理人の承認後に表示されます
【2011-02-12 Sat 13:32:40】 |
管理人の承認後に表示されます
【2011-02-12 Sat 13:32:40】 |
管理人の承認後に表示されます
【2011-02-12 Sat 13:32:40】 |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。