FC2ブログ

いまさらながらの「HDCD」

19/11/20初稿

 「HDCD」の存在は知ってはいましたが、特に興味はありませんでした。
 が、ふとしたことから「知らずに所有しているかも知れない」ことを知り、調べてみたら確かに持ってました(苦笑)。
 ということで、いまさらながらHDCDについて。


■HDCDとは

・概要
 「High Definition Compatible Digital」の略です。紛らわしいですが公式には「HDな音楽CD」ではありません。CDに限った技術ではないから、かも知れませんが、事実上CDに限っていいでしょう。
 Pacific Microsonics Inc.社が開発したCD-DA互換でCD音源を高音質化する技術ですが、PMI社は2000年にMicrosoft社に買収されたとのことです。
 買収したのですから当然ですが、当初MS社はHDCDを推していたようです(だから≪WMP≫にデコード機能がある)。
 が、いつの間にかフェードアウトしてしまいました。


Reference Hdcd Sampler
(Amazonアソシエイト)

#調べていると、HDCDに関する情報はかなり錯綜しているように思います。これは、オープンな技術資料がない(少ない)ことに加え、MS社が推しのために「20bitだ」とかちょっと紛らわしい喧伝したためではないかと想像しています。

 今となってはいわゆるオワコンと言っていいでしょうし買った覚えもなかったので気にしていなかったのですが、実は以下の通りだと知って無視できなくなりました。

・HDCDロゴがないのにHDCDエンコードされているタイトルが存在する
・スキャンしてみたら実際持っていた
・リッピングファイルをソフトウェアデコードできる
・つまり対応プレーヤなどのハードウェアが無くても活用できる
・リッピングをやり直さなくても活用できる(ERIは無加工WAVEなので)

 DVDプレーヤ用ICにデコーダが内蔵されていたようで、一時期のDVDプレーヤには対応機種が多くあるようです。

・技術
 現時点では「対応プレーヤ」で再生することは現実的ではありませんが、リッピングしたファイルはPCソフトで24bitにデコードできます(以下、特記なき“デコード”はPCによるソフトウェアデコードを指します)。そのため、HDCD技術について知っておきたいと思います。
 上述の通り何が正しいか判断するのはなかなかに難しいのですが、私なりの理解を記します。

 AD変換時の技術は無視します。上述の通り興味の対象はソフトウェアデコードですので、それにほぼ関係ないためです。

(1)高域集中型ディザ
 16bit化する際、「高域集中型ディザ」を用いることを特長にしています。
 ですが、ビット深度を減らす際(丸めの際)に付加するディザの一種とみなし、特別扱いする必要はないでしょう。いずれにしてもデコードに影響しませんし。
 以下は公式SAMPLER(Vol.1)track01のスペクトルですが、CD規格的にはLPFで減衰が始まるハズの20kHzくらいに盛り上がりがあります。確かにこれは特徴的だと思います。

HDCDディザ

(2)動的フィルタ特性
 88.2kHzを44.1kHz化する際、用いるダウンサンプリング(デシメーション)フィルタの特性を音源のスペクトルに応じて動的に変化させることを特長にしています。「スペクトルをリアルタイムに解析」と言っているのですから動的なのでしょう。
 さらに、再生時の2倍アップサンプリング(リコンストラクション)フィルタもダウン時に応じた特性に動的に変更できるようにしているようですが、本当に動的なのかはヨクワカリマセン。
 まあ、そういうアップサンプリングするソフトウェアデコーダじゃない限り関係ないと言えますし、かつそういうデコードソフトは寡聞にして知らないので、“どっちでもいい”ことにします(苦笑)。
 繰り返しになりますが、それに対応したDA変換(対応CDプレーヤ内のDACなど)は興味の対象外です。

(3)ピークエクステンション(PE)
 一種のコンプレッサと見ればいいでしょうか。0dB~-9dBをノンリニアPCM化して0dB~-3dBに収めるようです。デコードすると差分の6dB分ピークが伸長されたことになります。普通の16bitより6dB増えるのですから、17bit相当のダイナミックレンジが得られるという寸法です。

(4)ローレベルエクステンション(LLE)
 PEとは逆に、音量が小さい区間をブーストして記録します。この際、下位bitに2~3bit相当の分解能アップがあるという触れ込みで、PEと合わせて「約20bit」ということのようです。

(5)制御コード埋め込み
 HDCDであることを示すのは当然として、エンコードがかかっている場所が16bitの最下位ビットに特定パターンとして埋め込まれます。といっても楽曲全体ではなく間欠的な微小時間(5%未満、通常は1~2%といってるようです)であり、最下位ビットの高速な変化は「高域ディザ」と見なせるので音質的影響はないとのことです。
 「HDCDは1bitを制御コードに使っているので15bitしかない」というのは正しいとは言えないでしょうし、確かに実質的影響はないと思いますが、「実はコード埋め込みを正当化(?)するために高域集中型ディザを導入した」ような気もしないではありません(苦笑)。
 なお、不可逆圧縮したり音量をいじったりイコライジングしたりして改変すると制御コードが壊れますのでデコードできません。
 また、リクツ的には、エンコードされたところでリッピングエラーの補間が発生したらデコード失敗する可能性あるのかも知れませんが、もしそうなっても基本的に互換だから大丈夫ってことかな、と推察しています。
 ちなみにエンコードはトラックごとです。

・何が標準で何がオプションか
 「コード埋め込み」は当然必須です。「高域集中型ディザ」はHDCDを名乗るのに必須っぽいですがデコードには関係しません。「動的フィルタ特性」はヨクワカリマセンが、これも上述の通り事実上デコードに関係しませんのでワカラナイままでいいことにします(特に以下に示す「隠れHDCD」では採用例少ない(?)ようですし)。
 PEとLLEはどうもオプションみたいです。
 LLEはあまり採用例はないようです(特に以下に記す「隠れHDCD」では?)。また、デコードでは24bit化されますので(16bitの次はフォーマット的に24bitなので)有効性はに関係なく下位bitのフォーマット的拡張は十分ですから、LLEが効いているのなら気にしなくても反映されるでしょう。
 一方、PEについては注意しないと伸長した分反映されずに潰れてしまいます。

 ですので、「いまとなっては、ソフトウェアデコードにおいてPEだけ意識しておけばよい」と思います。

 なお、言うまでもありませんが、デコードで24bit化されるからと言ってHDCDは24bitハイレゾというワケではありません。


■「隠れHDCD」をどう扱うか

・「隠れHDCD」とは何か
 これが今回の記事作成のきっかけです。承知で買っているならいいのですが、「HDCD」のロゴがないのにHDCDエンコードされたタイトルが存在するのですね。
 「真性HDCD」はAD変換から特徴的技術を用いているようですので、それらも含めてHDCDだと言ってるとするなら、PEなどのオプションだけ使ったような場合はHDCDを名乗れないのかも知れません。
 なんとなく「音楽制作者がPEやLLEを単純に“コンプの一種”としてしか意識していないから」な気もしますが…(苦笑)

 一応通常の音楽CDと互換なのでそのまま聴くことはできますが、エンコードされてるのですからできることならデコードしたい気がします。
 なんだかエンファシスと同じようなハナシですが、こちらはCD標準規格ではないところが異なります。

・「隠れHDCD」の見つけ方
 いくつかありますが、リッピングしたファイルではなくディスク直でしたら「≪WindowsMediaPlayer≫で再生してみる」のが一番手っ取り早いでしょう(マウントだけではダメです)。
 ウィンドウの左下に(ちっちゃく)「HDCD」ロゴが表示されます(ディスク直のみです。ファイル再生では表示しません)。

HDCD WMP

 いちいちディスク再生しなくても、リッピングしたファイルに対しては≪foobar2000≫を用いる方法があります。簡単かつ対応機能情報もとれるのでオススメです。「foo_hdcd.fb2k-component」をインストールした≪foobar2000≫に既存ライブラリのファイルをどっさり登録し、Utilitiesから「Scan for HDCD tracks」を実行するだけで以下のようなレポート出してくれますので、手間はかかりません。

HDCD fb2k

・「ニセ隠れHDCD」ではないか
 ロゴがないのですから何があっても不思議はないかも知れませんが、上述の手段でHDCDと表示されながら「PE:Disable、TF:Disable、gain:0dB」「PEがEnableだがピークが実効性がある程度に圧縮されているようには見えない(≪foobar2000≫でデコードすると-6dBされ“ほんのちょっとだけ”ピークが尖る)」といったファイルもありました。
 これには以下のような可能性が考えられますが、真実はワカリマセンね。

・マスタリング時に意図せずエンコーダがONしておりHDCDを示すコードだけが入ってしまった
・または意図せずPEなどが働いた
・HDCDエンコードであることを知らずにデータをいじってしまっておかしくなった(ベスト盤収録時など)
・高域ディザなどだけがHDCD仕様(制御コード入れる意味はありませんが…)
・制御コード誤検出

 HDCDだと検出されても、その効果について関心がある場合は、実際にはどうなのか波形を見たりして確認する必要がありそうです。

 なお、「PE:Disable、gain:0dB、FT:Intermittent」と判定されたタイトル(ピークはまるまっておらず潰れている)は、≪foobar2000≫でデコードしたファイルと元ファイルに下位8bitをゼロ詰めしたファイルがWAVコンペア一致しました。当然-6dBされていません。
 つまり「デコードしても下位にゼロ詰めして24bitにしただけ」なワケで、やっぱり「フィルタ特性」機能はファイルオーディオでは無視していいと思います。その意味では、対応プレーヤなどでHDCDだとなってもファイルオーディオにとっては普通のCD、というケースもあるということですね。

 「隠れ」でHDCDエンコードしてもいいですけれど、ヘンテコなことはしないで欲しいです(苦笑)。

・デコード方法
 デコードファイルを生成する無償の方法をいくつか。

 ≪foobar2000≫を上記の通りオプション拡張、ConvertのProcessing設定でHDCDデコードを有効にして24bit出力すればOK。
 リッピングすればリアルタイムデコードになりますし、CDダイレクト再生にもファイル再生にも適用されます(再生音量が半分になることから)。
 ≪CUETools≫でHDCDデコードをONにして≪CUERipper≫で生成したCUEシートを指定。
 ≪HDCD.exe≫。CUIですけれど。
 ≪TuneBrowser≫ではリアルタイムデコードリッピングできます。

 公式SAMPLERにおいて、≪foobar2000≫と≪TuneBrowser≫のデコード結果はWAVコンペア一致しました。
 ≪CUETools≫と≪HDCD.exe≫は一致しました。
 前者と後者は一致しませんが、バイナリを見ると、相違はデコードされた箇所で後者は下位4bitがゼロ(つまり20bit)になっている点のようです。
 後者は「HDCDは20bit相当ですよね、だったらそれ以下はどうせ演算誤差だから」として敢えて20bit化しているのかも知れません。
 デコード機能・性能の違いではなさそうです。

#≪MusicBee≫もプラグインを入れればイケるようですが未確認です。
 HDCD対応に設定した≪WindowsMediaPlayer≫からのS/PDIF出力をデジタルキャプチャしたファイルは、デコードされていませんがHDCDだと認識されなくなりました。DirectSoundは16bitだとLSBがバケますから大丈夫なのかと思っていましたが予想通りダメなようです。DSにはピークリミッタ問題もありますから、PEエンコードされた部分もおかしくなってしまうかも知れません。推しのハズなのにこの塩対応… 何のために買収したんでしょうね?


■実際の効果を見る

・ピークエクステンション(PE)
 発見した隠れHDCDの、あるトラックのPE波形を示します(R-ch)。公式SAMPLERではないのは、こちらの方がより変化が判りやすかったためです。

 1番上・・・リッピングファイル
 2番目・・・下位8bitにゼロ詰めして24bit化、≪Wavosaur≫で-6dB化
 3番目・・・≪foobar2000≫でデコードした24bitファイル
 4番目・・・≪foobar2000≫でデコードした24bitファイルを≪Wavosaur≫で+6dB化

HDCD PE波形(hl-Lch)


#≪Wavosaur≫で「Volume ±6dB」すると1bitシフトになることは別途確認済み(ただし波形編集ソフトなのでもちろん+する場合はWAVE形式として処理されるので注意)

 1番目で、素のままだとピークが圧縮されている様子が解りますね。そして、2番目と3番目を比べると、デコードすると全体的に-6dB小さくなり、その分のヘッドルームにピークが伸長されていることも解ります。
 つまり17bit相当になってるということですね。
 ところで、2番目のファイルを反転して3番目のデコードファイルとmixするとエクステンションが働いていないところのサンプル値はゼロになります(働いていないところでは1bitたりとも変化していないということでもあります)。つまり、24bit化して-6dB(下位方向に1bitシフト)して元のLSB情報は失われていない状態からデコードしていると推定されます。

 よく「HDCDはデコードすると音が小さくなる」と言われますが、ピーク伸長しているので当然ですよね。HDCD対応プレーヤなどでは普通のCD再生も-6dBして音量レンジを合わせていたようです。しかし、ファイルオーディオにおいて他より音が小さいからと+6dBすると、当たり前ですが伸長した分が潰れます(4番目参照)。
 ということで、言うまでもありませんが、デコード前後を比較試聴する場合は音量違いに留意する必要があります。上図で言うと、3番目(デコード結果)との比較には1番目ではなく2番目の方が適しているのでは、ということです。

#「PE非対応LLE対応」などのファイルでデコード結果の最大音量が-6dB以下でしたら潰れませんけれど。

 なお、≪foobar2000≫のHDCD decoderには「Halve output volume」なる設定があり、「しない」「常に実施」「PEを検出した時のみ実施」と、Halve=-6dB化する条件を選べます。≪foobar2000≫、流石…

 PEには「疑似17bit化」の効果はありそうです。ただし、トラックのそこらじゅうで発動しているワケではなく、ピンポイントで使われているようです。「突出するピークがある時に用いる機能」ということですので、本来当然だとは思います。

・ローレベルエクステンション(LLE)
 こちらは、発見した「隠れHDCD」で対応しているものはありませんでしたので、「RR-S3CD:HDCD SAMPLER (Vol.1)」を用います(L-ch)。

 上図・・・≪foobar2000≫でデコードした24bitファイル
 下図・・・「デコードファイル」と
      「元ファイルに下位8bitにゼロ詰めして-6dBして波形反転したファイル」をmix

HDCD LLE波形(Rch)

 縦軸のレンジが異なるので注意してください。

 PEが発動するようなレベルではないので、この差分はLLEで発生したものと考えていいと思います。
 下図はデコードして発生した「元の16bit以下」のデータということになります。16bitだと-90dB(±1)と-∞dB(0)にしかサンプルはないハズですが、確かにその間のレベルのサンプルも出現しています。
 これもPEと同じく、トラックそこら中というワケではなく逆にほとんど発動していないようです。
 そして、PEもLLEも発動していない区間は前述の通り反転mixするとゼロサンプルになりますので全く変化はありません(下図の-∞dB部分のサンプル値はバイナリエディタで見ると実際にゼロ)。

・実際のデータ
 繰り返しになりますが、デコードしたら24bitファイルになったからと言って、もちろん24bit解像度ではありません。では、どんなデータになっているのでしょうか。

 下位bitがゼロでない部分をバイナリエディタで示します。ただし、見やすくするためさらに下位8bitにゼロ詰めして32bit化(もちろんFixed)したものです。左から4ByteずつR-L-R-Lchのサンプルとなります。
 Intel形式ですので4Byte単位でひっくり返してみる必要があります。

HDCD fb2kでdecodeしてwcpで32bit化したバイナリ

 これを見ると、Lchはずっと80hか00hです。PEするために-6dB(下位へ1bitシフト)して下位8bitのMSBになった「元16bitの時のLSB」がゼロとイチでパタパタしてるってことですね。
 Rchでそれ以外の値になっているのがデコードされたサンプルだと思います。24bitフルにゼロイチが変動していると言っても演算結果としてのものですから、これをもってダイナミックレンジが何bit拡大したかを言うのは困難でしょう。発動しているのは楽曲のごく一部分ですし。

・HDCDをどうとらえるか
・波形を観察してみるとPEもLLEも発動しているのはごく一部のようです。制御コードがあるところが発動箇所と思われますので、上述の通り多くても5%程度ということではないでしょうか。
 ので、「HDCDは20bitの情報量を16bitに詰め込んだCD(デコードすると20bitになるCD)」というのは当たらないと思います(いずれにしても圧縮ですし)。

・LLEが2~3bit分の拡張に相当するかどうかは微妙な気がします。LLEはヘタにかけると互換CDとして問題になりそうな気もします。

・PEは「ピーク潰しマスタリングよりマシ」と考えればデコードしなくてもいいかも知れませんし、デコードすれば明らかな違いがありそうです(実際聴いてどうかは別)。

・発見した隠れHDCDのうち、LLEがEnableになっているものはありませんでした。動的フィルタ特性は気にしないことにしますので、事実上考慮すべきはPEだけでした。

・44.1kHzデータにおけるデコード差分はそのまま聴こえるワケではありません。イマドキはオーバーサンプリングデジタルフィルタで波形復元されるため、その結果が実際に聴く差分となります。そこで、PE検証の2番目と3番目のファイルをResampler-Vで8倍し、一方を反転mixして「再生される差分」を抽出しました。

 上図・・・オリジナル
 下図・・・差分

decode差分

 時間軸を拡大して見ると差分発生は断片的なのですが、差分ファイルは普通の音量でもハッキリ聞こえました。この音源はデコードするしないで差が判る気がしたのですが、あながち気のせいじゃないかも知れません。


 ということで、

・LLEはとりあえず無視してよい(採用少ないようですし)
・PEの1bit拡張はそれなりに有益
・HDCDの効果は疑似17bit化できること
・特にエンコード箇所が多い音源はデコードしないと劣化状態で聴いてることになりそう

と考えておこうと思います。


 これからはリッピング時に「隠れHDCDじゃないか」「ニセ隠れHDCD(フラグが立ってても機能していない)じゃないか」チェックしないと、です。


 なお、上記結果は手持ちのソフトウェアデコード環境における結果ですので、「対応CDプレーヤ」などでの公式ハードウェアデコード結果が同じである保証はありません。≪foobar2000≫らのデコードに問題ないことも前提です。


#ソフトバージョン
 ≪foobar2000≫1.4
 ≪HDCDdecoder≫1.19
 ≪Wavosaur≫1.3.0.0
 ≪WaveSpectra≫1.51
 ≪WindowsMediaPlayer≫12.0.18362.418
 ≪Bz≫1.62


メインメニューへ

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

最新記事
ERIへようこそ

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

・ファイルへの直接リンク以外はリンクフリー(連絡不要)です

・一応、拍手にコメント(非公開)付けられるようにしてあります

・DB的に利用しており、過去記事もガシガシ書き換えています。特に「最新記事」は初稿から一週間くらいは直してることが多く、大幅に変わっちゃうことも。ご了承ください

・ということもありますし、記すまでもないですが無断転載(ファイル含む)はご遠慮ください

・引用の考え方については「007:諸事」をご参照ください

・ハイパーリンクは当Blog記事のみです(054:節電記事のみ例外)

・Amazonアソシエイトに参加しています(アフィリエイトはAmazonのみです)

カテゴリ
検索フォーム
FC2カウンター