The Art of the Rip |
2009-05-03
|
While I'm working on the ripping software, I find myself going back and forth between various references to figure out the small details and the pieces that subtly get interpreted differently between them. As is the case with other projects, I can easily see myself forgetting about these details soon, and cursing myself a year from now for not having written down my clear understanding of today.
So, in an effort to appease my future self, I've started writing down a condensed form of the important information I've come across.
On that page, I'm also comparing various ripping programs and how they handle the various details I consider important for correct ripping. I'll use that information and that chart as the basis for the features of my ripping program.
I'm trying to stay as objective as possible on that page, so feel free to tell me about mistakes, omissions, software I should be adding, ...
By now, I have a good set of goals for my ripping program:
- lossless ripping
- accuracy is the number one goal
- speed is always second to accuracy
- hands-off one-click/command ripping
- separate ripping from metadata fixing
- rip hidden track one audio automatically
With this in mind, I thought yesterday how I could figure out the drive's read offset the way EAC does it. I've come up with a simple program that:
- checks if the current CD is in the AccurateRip database
- if it is, rip the first track with various offsets
- if any of the AccurateRip checksums match, that is most likely the offset for your drive
It took longer to test the program than to write it, since my AccurateRip checksum calculation is currently done purely in Python and thus rather slow.
In any case, using Bat For Lashes' "Fur and Gold":
[gst-git] [thomas@ana trunk]$ PYTHONPATH=$PYTHONPATH:`pwd` python examples/ARcalibrate.py
CDDB disc id 8a0aa10b
AccurateRip URL http://www.accuraterip.com/accuraterip/9/f/f/dBAR-011-00112ff9-00976269-8a0aa10b.bin
4 AccurateRip reponses found
ripping track 1 with offset 46
AR checksum calculated: b880421e
ripping track 1 with offset 47
AR checksum calculated: 4a29a173
ripping track 1 with offset 48
AR checksum calculated: 903b390e
MATCHED against response 3
offset of device is 48
ripping track 1 with offset 49
AR checksum calculated: e7c008f1
[gst-git] [thomas@ana trunk]$
I made the program scan from 46 to 49, knowing that my drive has a +48 read offset. Now I'm going to add an option to choose the range, an option to start with the most common offsets, and think about including using online databases of drive features to start with the one most likely to be correct for your drive.