FC2ブログ

音楽CDの「エラー訂正」を再確認する

11/01/13初稿
17/01/21:コメントいただいたので(ありがとうございました)主旨説明を見直しました
19/01/20:PlexTools Professioanlにつき、英語版マニュアルが正しいと仮定して説明を改訂しました

 PC-Audioするには、まずは「ビットパーフェクト」なリッピングしたいものです。少なくともパーフェクトに行う方法をひとつは持っていて、パーフェクトだったのか否か認識できるようにはしたいですよね。
 そのためには、まず「そもそもCDのRippingにおける読み取りエラーってナンなのか」について整理しておく必要があるでしょう。
 でも、よく解らないんですよね。新旧の情報が錯綜してて…


■そもそもCD-DA(音楽CD)のエラーとは何か

・訂正と補間と補完と補正と
 まず、用語の意味と用法を整理しておきましょう。
 世の中の情報では、

 ・エラー訂正=エラーを認識して正しい値に修正すること。
 ・エラー補間=訂正しきれなかった時に「たぶんこんなカンジ」と“補う”こと。

という「訂正」と「補間」がごっちゃになってるように思います。
 辞書引いてみると、

 ・訂正
    言葉や文章の誤っている部分を正しく直すこと
 ・補間(法)
    ある変域内で、いくつかの変数値に対する関数値が知られているとき、
    同じ変域内の他の変数値に対する関数値を推定し、近似値を求める方法
 ・補正
    足りないところを補い、あやまりを正すこと(補って正すこと。字義の通り)
 ・補完
    補って完全なものにすること(字義の通り)

ということで、明確な違いがありますので誤用しないよう気を付けたいですね。
 「訂正」「補正」は正しい値になることを示しますが、「補間」は推定値ですから正しい保証は全くありません。というか普通は“ハズレ”るでしょう。しかし、まれに“アタリ”になる可能性もあります。「補完」はオリジナルにさらに盛って改造するイメージでしょうか。とりあえずCDに関しては無視してよさそうです。

 CDの規格としては「訂正」と「補間」が正しいようです。例えば、CDの開発に携わった中島平太郎氏著(共著)「図解コンパクトディスク読本」のCIRC説明では「補間」となっています。
 「補正」「補完」などは意識して使用を避けたいでところです。

・それは「CIRC」という規格
 CD-DAの「エラー訂正」動作は「CIRC(Cross Interleave ReadSolomon Code)」という規格に定められています。
 リッピングに関するCIRCのポイントを2点記します。

・ポイントその1
 CIRCに基づく読み出しはドライブ内のコントローラチップが処理しています。
 PC側ソフトでやってるワケではありません。

 PC用光学ドライブコントローラのdatasheetに搭載機能としてC1、C2のErrorCorrectionが挙げられていました。
 まあ、元々PCじゃなくてAudio機器たる「CD Player」のために作った規格ですから当たり前ではありますが。

・ポイントその2
 CIRCは、盤面からの読み出しにおいてエラーは必ず発生するものとして設計されており、パリティを付けたり分散したりしてデータを記録しています(焼いたCD-RよりプレスCDの方がエラー発生は酷いという話もありますね)。
 エラーはもともと付加されているパリティ情報などによって「訂正」されます。
 “冗長度なくリニアに記録された無加工PCMデータ”に対してエラー訂正をやってるワケではありません。

 CDプレーヤやPCドライブは「CIRC規格に準じて」記録されたデジタルデータに対して「規格に準じたエラー訂正」を行いながら読み出しているのです。記録時点から考慮されているという点において、リッピングソフトでの“いわゆるエラー訂正”とは決定的に違うということです。

・エラーの種類と問題になるエラー
 さて、それではそのエラー(CIRCの動作)について見ていきましょう。訂正と補間の違いは何でしょう?

 まず、CD-DAで発生するエラーは、C1とC2の2段階で訂正処理が行われます。
 訂正能力の強弱ではなく、C1→C2の順番で、それぞれ別の役割を担って二重になっていると理解した方がよさそうです。

 C1段階で訂正できなかったエラーをC1エラーと呼ぶのが普通みたいです。
 そして、C1段階の結果を踏まえ、さらに別の手順で「訂正」が試みられるのがC2段階です。
 C2段階でも訂正できなかったエラーをC2エラーと呼ぶのが普通みたいです。

 そして、

 最後まで「訂正」できなかったエラー=C2エラーは周辺データから類推「補間」されます。

 C1/C2の2段階で「訂正」が行われた結果、C2エラーが発生して初めて「補間」が行われるワケですね。

 Ripping中、エラーは発生するものなのです。「音楽CD(CIRC)という規格にとってエラー発生は折り込み済み」なのです(安価なプレスメディアを使えるようにするためです)。CD開発者の以下の弁の通りです。

符号誤り訂正の理屈からいえば,ビット長が長さにして2.4mm欠如しても,信号のバラつかせ方とその前後に記録されている訂正用の信号から原信号を見つけ出して訂正できるようになっていますし,信号記録面はディスクの内部にありますから,ディスク面が多少汚れても信号の検出に大きな支障はありません.
出典:「図解コンパクトディスク読本」 P.190

 ですので、Ripping品質においては「“訂正”発生」は問題ではなく、「“補間”発生」こそ問題なのです。
 盤面からの読み出しエラーとC1エラーは(訂正できる限り)いくら発生しても構いませんが(極論ですが)、C2エラーの補間はハズレを覚悟する必要があり、つまり“リッピング時のデータ劣化”となりますので。

・リッパーは何をしているのか
 「補間結果がハズレる(当たる可能性もゼロではないが普通はハズレると想定すべき)」のはどうしようもないハズなのですが、「リッパーにおけるエラー訂正」は、それをどうにかしようとしているように見えます。
 といってもCIRCは原則としてドライブハードの処理であり、かつCIRCを外部から制御する概念は原則ありません。ですので、できるかぎりエラーなくRippinngするために“ソフト側にできること”はかなり限られているハズです。何をしているのでしょう?

 ざっくり言うと、「ドライブ内での補間発生を検出し、検出したらリッパーなりに納得する値が得られるまで“読み直し”する」ものです。あくまでも読み直すだけです。できるのはせいぜい倍速設定を低速にするくらいであり、独自の信号処理的エラー訂正などは行っていません。
 詳細はリッパーのエラー訂正記事で考察してみましたのでよろしければどうぞ。
 なお、PioneerのPureReadはPC側ソフト処理ではありません。といってCIRC規格以外のことをやっているワケではありません。ドライブのファームウェアが、ピックアップや光源制御なども行うリトライリードするものです。
 その「リトライの仕方」をPCのユーティリティで設定できるだけでPC側でのデータ処理はありません。この点勘違いされていて「Windowsでしか使えない」「特定のリッパーでしか使えない」などと言われることもあるようで、可哀そうに思います。

・「脆弱」なんて言うな
 ところで、「CD-DAのエラー訂正機能は脆弱なので~」といった類の記述を見かけることがありますが、違和感あるんですよね。
 「脆弱」という理解の元を辿ると、音楽CD(CD-DA)の後に策定されたCD-ROMフォーマットのエラー訂正性能がCD-DAよりも高いことから、逆にCD-DAは性能が低い=「脆弱」という認識に変化していったのではないかと思われます。

 CD-ROMとCD-DAでエラー訂正性能が異なるのは当たり前です。CD-ROMでは1bitたりともミスは許されませんが(CD-ROMから営業Excelファイルを読み込む時に売価がひと桁違ったりしたら大変でしょ?)、CD-DAは音声データのストリーミング再生の中でちょっとくらいエラーしても実害はないのですから。
 エラー訂正能力も異なりますが、それでもエラーが残った場合の扱いが異なる点もポイントです。CD-DA(音楽CD)ではエラーを類推補間して済ませますが、CD-ROM(データCD)ではエラーはエラーとして扱います(フツウは読み出し停止)。

 といっても、CIRCのエラー訂正能力も音楽CDを読み出すには必要十分に強力なので、「脆弱」というのは不正確(というか規格策定に携わった技術者に失礼)だと思っています。
 実際、よほど酷いディスクじゃない限り補間発生しませんから、傷ついてもいないのにエラー多発する場合は「偏心」「プレス不良」「材料や工程自体が粗悪」といった“規格外の不良品”である可能性が高いのでは。エラーがあるCD-ROMは不良品として扱われますが、CD-DAは本来CDプレーヤで再生するものでエラーがあっても再生可能にしてあるため、そういうディスクも流通してしまっているのでしょう。
 そういうディスクでエラー発生するからと言ってCIRCが脆弱と言うのは、リッピングありきで考えているゆえ、1980年代初頭の技術であることを忘れたゆえの間違いです。CD-DA規格策定当時Rippingの精度なんて考慮していませんし、高度な信号処理できる安価なシリコンチップなんてなかったのですから。


 なお、あまりweb上に情報のないCDのフレーム(ブロック,セクタ)構造ですが、以下リンク、オレンジブックの規格推進団体フォーラムの「CDファミリーの系譜(*)」が参考になると思います。

*:http://www.cds21solutions.org/osj/j/family/index.html

 CD-ROMにはCD-DAにはない「EDC/ECC」が追加されており、
   ・EDC・・・Error Detection Code
   ・ECC・・・Error Correction Code
このふたつの合体技で強力なエラー訂正を行っているそうです。
 もちろんCD-DAの読み取りではEDC/ECCは無関係です。だってそのためのデータが入ってないんですから(笑)。


 さて、基本的には以上でよいと思っていますが、C1やC2の意味に関する混乱もあるようですので、以下、それについてERIなりに考察しておこうと思います。


■エラー名称が2種類になったのは何故か

・訂正不可能=補間対象になるエラーの名称は何か
 実はC1エラーとかC2エラーとかCUエラーって「俗称」みたいです。明確な定義がないためにその理解には2種類あるようですね。といっても、リッピングで語る必要があるのは訂正不可能なエラーだけなので、以下、当BlogではそれをC2エラーと呼ぶかCUエラーと呼ぶかを考えます。「盤面から読み出し直後のエラー(?)」「C1エラー」は何かについては、極論すると明確にする必要はないので、参考情報程度に見ていただければと思います。
 まず、本稿上記の定義を箇条書きします。

 ・盤面エラー・・・名称なし
 ・C1エラー・・・C1段階から出力される(つまりC1段階で訂正できなかった)エラー
 ・C2エラー・・・C2段階から出力される(つまり最後まで訂正できなかった)エラー

 PioneerのCDドライブ技術者の方も訂正しきれなかったエラーを「C2エラー」と呼んでいらっしゃいます。

そしてどうしても訂正しきれない「C2エラー」が発生すると、データが全く読み取れなくなってしまいます。
出典:https://www.phileweb.com/interview/article/200909/04/26.html

 また、「CDはリッピングしてから聴こう」の先駆的ベンダ、LINN社のリッピング解説にも「C2エラー」とあります。

If the C2 decoder encounters errors that cannot be corrected it will flag them for subsequent concealment (i.e. interpolation or muting).
The term ‘C2 error’ is often encountered in CD ripping, but the meaning of this term is often unclear.

出典:https://docs.linn.co.uk/wiki/index.php/CD_Ripping_Terminology

 一方、本稿上記の定義より1段階前にズラして、おそらく

 ・C1エラー・・・C1段階に入力される(つまり盤面読み出しで発生した)エラー
 ・C2エラー・・・C2段階に入力されるエラー
 ・CUエラー・・・C2段階から出力される(つまり最後まで訂正できなかった)エラー

としていると推定される説明も見かけます。
 例えば次のようなものです。「音楽CDをCD-Rにコピーすると音質は劣化するのかというテーマ」の記事における、Plextor技術者さんの見解です。

浅野:C1エラー、C2エラーというけど、CDにおいてはエラーは出て当たり前です。いずれの場合もC1エラー訂正、C2エラー訂正が行われてデータ的には正しいものになるのです。もしC2エラー訂正でだめだったら、はじめてCUという形でデータエラーとなります。

植松:まあ、C1ですべて訂正できるべきだというのが、一般的な考え方になっています。でもC2エラーが出たらいけないかというと決してそうではない。C2ポインタで修正できれば基本的にOKであり、データ上問題はないんです。

出典:http://av.watch.impress.co.jp/docs/20010611/dal14.htm

 訂正不可能なエラーの名称を象徴として、便宜的にこちらを「CU説」、本稿前半で説明したものを「C2説」と呼称することにします。

・C2説とCU説
 C2説ではC1段階にInputされるエラーの名称は“ない”ことになります。
 全体を一段前にズラしてC1段階へのInputの名称は得たものの、逆にC2段階からのOutputの名称がなくなってしまうので「CUエラー」という名称を追加したのがCU説、となりますね。
 しかし、「Correction処理して初めてエラーしてることが判る」のではないかと思いますので、「C1段階へのInput=盤面から読み取った時点のデータにはエラーの概念はない」でいいのではないでしょうか。

 ですのでC2説でいいと思っているのですが、どうしてCU説ができたのでしょう?
 C2説でいいのかの確認のためにも、ひとつERI的仮説を考えてみたいと思います。
 キーワードはPlextor製≪PlexTools Professional≫じゃないかと考えています。

 ≪PlexTools Professional≫のヘルプなどにはC1エラー/C2エラー/CUエラーの説明が複数あります。ので、それらをチェックしてみます。
 念のためですが、あくまでも「音楽CDの読み取りにおける補間発生エラー名称の説明」としてどうかをみていきます。データCD(CD-ROM)の説明としてではありません。また、CIRCとしてのエラーについてであって、独自定義パラメータの名称としてではありません。

・≪PlexTools Professional≫とは
 ところで、当ソフトは「セキュアリッパー」として有名ですが、リッパー機能「DAE(Digital Audio Extraction」は“Tools”のひとつにすぎません。対応ドライブ専用の非常に多機能なソフトで、DAEの他にもCIRCエラーについて扱っている機能がもうひとつあります。ディスク品質をチェックする機能「Q-Check」です。

 このふたつを分けてみていきます。

・DAE機能:ヘルプの記述
 ということで、まずリッピング機能DAEのヘルプを見てみます。

DAEヘルプ

 「C2 Error Flag」に関する記述から推察される「C2エラー」の意味からして、C2説と思います。「C2段階でエラーしたのがC2エラー=不良セクタは訂正できない」と読めますので。「CUエラー」という用語も出てきていませんし。
 なお、マニュアルにはC1/C2/CUといった用語は出てきません(英語版・日本語版とも)。

  判定:DAEヘルプはC2説

・Q-Check機能:付属マニュアル(英語版)の記述
 次に、C1/C2/CUという用語が出てくるもうひとつの機能、「Q-Check機能」について見ていきます。
 ところで、PlexToolsは欧州Plextorが開発したものらしいです。
 そこで「日本語マニュアルやへルプは英文からの和訳(+α)である」という仮説を立てて見ていくことにしたいと思います。

 付属の英文pdfマニュアルには、Q-Check機能について以下の記述があります。

5.4 Q-Check C1/C2 Test: (only available for Premium/PX-712A/PX-716A)
Read test for written CD-R/RW and stamped CD's.
This test will measure the quality of the written or pressed media by counting the number of low-level errors. Most of these errors are correctable by the drive.
C1: indicates BLER, which is the number of E11+E21+E31.
C2: indicates the number of E22.
CU: indicates the number of E32.
These are the number of frames that have correctable or uncorrectable errors, counted per second.
The existence of C1 and C2 errors on a CD is perfectly normal, since they can be corrected by the drive's CIRC logic. However, these numbers should not be too high since they can create uncorrectable errors when the disc's playability decreases (for instance, by means of dust, fingerprints, scratches, etc.).
In case of CU errors, there is a chance that the data will become unreadable.

SPLG Q-Checkテスト結果グラフ

SPLG Q-Checkテスト結果

Show C1: display C1 errors on the graph.
Show C2: display C2 errors on the graph.
Show CU: display CU errors on the graph.

出典:Plextool.pdf(PlexTools Professional V2.17a付属)

 図は実際に傷ありCDでチェックした結果に差し替えています(稿末で利用します)。

 「C1 and C2 errors」は「CIRCで訂正される」とあります。
 しかし、画面に表示されるC1/C2/CUの数値の単位は「frames」となっています。CDのフレームのことだとすると、1秒間に75フレームしかありませんから、「/sec」のアベレージが75を超えるのは変ですが…
 一方、CIRCでの補間の単位は少なくとも「サンプル(片chごと)」です。
 DAEでも最終的にバイト単位で扱えるようです。

 つまり、そもそも「Q-Check機能で用いられるC1/C2/CUという単語(独自用語?)」と「DAE機能で用いられている単語(こちらはCIRC用語)」は同義ではないのではないでしょうか?

 「CIRCのC1エラー/C2エラー」ではなく、「当ソフトのC1/C2 Testの結果」を示しているような気がします。そもそも、Q-Check機能は「ディスク品質」チェックを目的としているため、訂正成功失敗に関わらず“エラー発生数”自体に注目しているとお見受けしますので。

 ということを踏まえて、CU説でいいでしょう。

  判定:Q-Check英文マニュアルの記述はCU説(ただし“frame”単位)

 なお、C1/C2/CUの数値は、「Show C*: display C* errors on the graph」とあることから、C1エラー/C2エラー/CUエラーのことだとみていいでしょう。

 Q-Check機能については他にも以下のような情報がありますが、CU説で作成されているとみていいようです。

・ソフトウェア内蔵ヘルプ
・日本語マニュアル(http://plextor.jp/pc/download/software/plextool_doc.pdf)
・PlexToolsサイトのFAQ(http://plextor.jp/pc/support/faq_soft_ptp.html)

 日本語マニュアルには英文マニュアルにはない「E12」があるなど理解に“コツ”がありそうですが、詳細は省略します。


■C2説かCU説か

 調べてきたことをまとめます。

(1)DAE機能:ヘルプ・・・C2説
(2)Q-Check機能:ヘルプ・・・CU説
(3)Q-Check機能:英文マニュアル(付属)・・・CU説(frame単位)
(4)Q-Check機能:日本語マニュアル・・・CU説
(5)Q-Check機能:PlexToolsサイトのFAQ・・・CU説(フレーム単位)

・世の中の「CIRCで訂正できず補間が発生したエラーの名称」をCUエラーとする説は、「Q-Check機能の説明資料」から発生したような気がします。

・が、同ソフトの中でもリッピングツール「DAE機能のヘルプ」はC2説です。

・また、「Q-Check機能のマニュアルやヘルプ」のC1/C2/CUは音楽CD読み取りエラーのことを説明していないのではないかと思われます。フレーム単位のようですし。

・つまり、訂正できなかったエラーを「リッピング品質としてはC2」「ディスク品質としてはCU」と呼んでいるように見えます。
 Q-Check機能におけるC1/C2/CUエラーは、CDリッピングにおけるCIRCのエラーとは異なる意味で使われているのではないでしょうか。

・マニュアルやへルプは英文から和訳したものではないかと思われます。ローカライズ過程における“変質”もあるかもしれません。実際、「Recover」の訳を「訂正」としている例もありますし、E12があったりなかったりしますし。

・前出「図解コンパクトディスク読本」のCIRC説明に「CU」は出てきません。

 これら状況を見ると、「CIRCで訂正できず補間が発生したエラー(少なくともサンプル単位)の名称」をCUエラーとする説は、≪PlexTools Professional≫のQ-Check機能におけるディスク品質を示すパラメータとしてのCUを混用したものではないでしょうか。
 もちろん「Q-Checkのディスク品質」の定義でCUエラーという名称を用いるのは全く問題ないでしょう。

 ということで、本Blogでは、訂正しきれずサンプルを補間値で補うことになるエラーのことは、やっぱりC2エラーと呼ぶことにします。


■DAEとQ-Check

 本項19/01/06追記。
 上で例示したQ-Check画面の傷ありCDをDAEでリッピングするとどうなるか試してみました。PureReadのテストで使っているタイトルで、傷なしの個体も所有しているものです。
 まずQ-Check結果です。傷あり版では上記の結果となったワケですが、傷なし版ではC2、CUともゼロでした。
 次にDAEによるリッピングです。エラーリカバリーオプションは「1.Report Error only (no recovery action).」としました。
 傷なし版ではエラー報告なく完遂。
 傷あり版では11トラック合計で771433エラーとなりました。
 そのうち、34エラーとなったtrack01を≪WaveCompare≫で比較した結果が以下です。

SPLG pxtoolリップ比較

 相違数はステレオサンプルとして表示されますので、16bitの片chごとのサンプルとして相違数を数えると32個あります(バイト単位で数えると34を大きく上回ります)。
 このことから、DAEが報告するエラーはサンプル数だと思えます。比較結果が2個少ない件については「エラーになって補間が発生したが、補間結果たまたまアタリだったのが2個あった」という可能性が考えられますが、確認はできないです。
 なお、Q-Checkでの「CU」値はCD面合計14058ですから、これはエラーサンプル数(771433)ではありません。FAQでは「フレーム数」と言っています。エラーを含むフレームの総数が14058フレームで、その中に合計771433個のエラーサンプル(片ch単位)があったということでしょうか。


■参考リンク:藤本健のDigital Audio Labolatory

・第1回:迷信だらけのデジタルオーディオ 【CDにまつわる噂を徹底的に解体!】
 ~ 第1回 そもそもオーディオCDって何だ? ~
 http://av.watch.impress.co.jp/docs/20010312/dal01.htm

・第2回:迷信だらけのデジタルオーディオ
 ~ 音楽CDリッピングが100%正確でない理由 ~
 http://av.watch.impress.co.jp/docs/20010319/dal02.htm

・第4回:迷信だらけのデジタルオーディオ
 ~ CDプレーヤーの読み込みの仕組み ~
 http://av.watch.impress.co.jp/docs/20010402/dal04.htm


メインメニューへ

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

最新記事
ERIへようこそ

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

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

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

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

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

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

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

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