2013-06-27

[EAC]光碟機存取音樂CD的Read/Write Offset特性,如何影響rip下來的音樂數據內容?

剛剛在查要買什麼新光碟機時,意外看到以前在巴哈姆特討論區GameMusic板回給網友louis000的文章。
我想這篇就足以把光碟機讀寫CD audio sample時造成的offset現象,如何影響rip下來的音樂數據內容的來龍去脈解釋清楚了:

================================================================================

首先大家要注意的是
目前的光碟機讀取CD中的Sample時都有一個現象
叫做Offset:
A negative offset means that the drive starts reading or writing
too early and a positive offset that it starts too late.

這是因為現代光碟機讀取機制設計方式的緣故
會導致光碟機提早讀取Sample或是延後讀取Sample
所以負Offset的光碟機就需要指定正的Offset Correction值來修正Sample位置
正Offset的光碟機就需要指定負的Offset Correction值來修正Sample位置


然而光碟機在讀取資料時會有個固定的合法區間
所以負Read Offset造成最後面(或是正Read Offset造成最前面)的SampleData遺失
通常音樂在這小段理論上來說應該是靜音的才對,所以不會有影響
不過也有不少CD的最後一首音樂最後面是Fade out結束
或是第一首音樂最前面沒有留足夠長度的空白
所以Offset後,會遺失掉一些SampleData:

   ABCDEFGHIJKLMNOPQRSTUVWXYZ      <------原始資料的進入位置
|------reading-area------|         <------光碟機讀取Sample的起始與結束位置
...ABCDEFGHIJKLMNOPQRSTUVW         <------讀到的資料
ABCDEFGHIJKLMNOPQRSTUVW...         <------利用正Offset修正值修過後

若光碟機支援且程式有開啟Overread,則:

   ABCDEFGHIJKLMNOPQRSTUVWXYZ      <------原始資料的進入位置
|------reading-area------|---      <------光碟機讀取Sample的起始與結束位置
...ABCDEFGHIJKLMNOPQRSTUVWXYZ      <------讀到的資料
ABCDEFGHIJKLMNOPQRSTUVWXYZ         <------利用正Offset修正值修過後

由上圖可以知道
負Offset光碟機:需設定正的Offset Correction值,並具備Overread Lead-out功能
正Offset光碟機:需設定負的Offset Correction值,並具備Overread Lead-in功能
這樣才能完整的抓到CD的聲音資料

雖然說只要光碟機具備Overread Lead-in/out功能
就可以正確地抓到超出讀取範圍的資料
不過因為能Overread的機器實在是太少
通常沒有這種特異功能的機器,只好認命把EAC Options中,Extract頁的
"Fill up missing offset samples with silence"打勾

當然,如果很幸運的
你的光碟機是
Plextor的CD/DVD燒錄機(大部分機型具備Lead-in/out的讀取能力)
YAMAHA的CD燒錄機(具備Lead-in/out的讀取能力)
或是Pioneer DVR-A05以後的燒錄機(具備Lead-out的讀取能力,Lead-in不可讀取)
就有資格啟動Overread的功能了
因為這幾台都能夠Overread到因為Offset而跑出去的SampleData
只要到Drive Options,Offset/Speed頁
把"Overread into Lead-in and Lead-out"打勾
並取消EAC Options中,Extract頁的
"Fill up missing offset samples with silence"
這樣就可以啟動這功能了

Pioneer DVR系列只能讀Lead-out,不過DVR剛好是負Offset機,所以能達成100% Rip
但是Toshiba這一類的正Offset機大多數都不能讀取Lead-in,就只好自求多福了XD


如果要查自己的機器是否能Overread,請看:
ExactAudioCopyを使った、音楽CDのズレのない完全バックアップ
(編按:其實正確資料應該要看這個Exact Audio Copyを使った音楽CD完全バックアップ,後面會說為什麼)

至於Overread成不成功
只要看看Overread啟動後,會不會讓Rip結果報告顯示"There were error"
如果能出現"No error occured"
那就恭喜你,你的機器能Overread到跑出去的Sample
如果一直出現"There were error"
那..........請保重


另外Mixed-mode CD其實是可以正確備份下來的
只要搭配合適的程式去抓資料軌部分
並把bin檔的名稱補到cue檔的Track01那邊
就沒有問題了

================================================================================

不過故事不是這樣就結束了......

記得發這篇文不久之後,某一位熱心網友跟我說,其實AccurateRip的offset數值,就CD的物理層面來說並不正確。如果以CD track的物理起點記錄的sample data定為第一個sample data,那麼AccurateRip表列的read offset correction全部都-30,write offset全部都+30,才是absolute offset。

AccurateRip資料會錯很大卻還在用的原因,是因為當時帶頭建立這套資料表的EAC作者本人Andre Wiethoff,並沒有用很嚴謹的測試方法與專業儀器,定位CD音訊資料的物理起點,只是透過資料表整理不同光碟機的offset數值,確保不同光碟機都能rip出一致的音樂數據。
在sector data內自帶sync data的Data CD,和直接在每圈track用掉一個sector存放sync data的傳統磁碟,要定位數據起始位置並不是什麼難事。但是Audio CD的每個sector data缺乏sync data,因此需要用sub-channel定位音樂數據所在的位置,而音樂的sample data與track定址用的sub-channel之間的相對關係本來就沒有規範地很嚴謹,所以要明確地定位起始點跟結束點,是相當困難的事。更何況,連壓片廠都不能把音樂的第一個sample data準確地刻在CD track的物理起點了。所以EAC內設定的read offset是不是absolute offset,就音樂而言,其實不太重要。只要每台光碟機在read offset這方面的相對關係,能透過AccurateRip的資料表連結起來,那麼EAC作者Andre Wiethoff至少有達到了這個目的:"不同光碟機都能rip出一致的音樂數據"。

雖然筆者個人相當龜毛,幾年前得知這個消息之後,就把自己用的Plextor PX-712A的R/W offset設成0,0,後來買Lite-On的iHAS DVD+RW與iHBS BD-RW時也都把R/W offset設成-24,+24,但除非是音軌資料軌並存的CD,不然對純音樂CD,我想是沒有必要計較這個的,浪費時間計較這個,不如換更好的耳機喇叭、更好的擴大機、更好的DAC、與更好的電源,對吧?

討論CD音樂第1個sample位置在哪的原文可以在這邊找到
Offsets handling (syncing of audio data vs. Q channel)
Thread: @Andre Wiethoff and who feels to have a say on offsets.

================================================================================

如果要rip Enhanced CD,又想要讓Audio的部分有正確的PCM資料(連offset都一致),要怎麼做?
首先,用CloneCD的"Multimedia Audio CD"謮取模式,並設定Audio Extraction Quality=Best,先抓出ccd/img/sub檔。
接著再用EAC,到Waveform設定內,把Do not write WAV header to file打勾,以正確的read offset correction抓出raw PCM檔。
最後把raw PCM的檔案內容覆蓋到img檔對應的sector範圍,就大功告成了。

沒有留言:

張貼留言