Help - Search - Members - Calendar
Full Version: Lossless CD archival / HD playback
Hydrogenaudio Forums > Hydrogenaudio Forum > General Audio
christopher_farley
I've got a small house, and my CD collection is out of control! I've long planned to archive all my CDs to hard drives. With wireless "mp3" players like the squeezebox, it is looking like I can finally make this happen with minimal compromise.

My goals are:
  • Lossless extraction of all CD audio
  • Gapless playback
  • The ability to recontruct (re-burn) the cd from my hard disc archive as well as if I made a disc-at-once copy
  • Access to the music from a squeezebox-like device, as well as from computers (various operating systems)
  • Linux server / ripper
I've been experimenting a bit with FLAC and embedded cuesheets. It seems like exactly what I am looking for, except for this nagging playback issue.

Playback seems problematic with today's players. XMMS won't obtain track info from the cuesheet (is there a plugin for this?). Only foobar2k seems to handle these FLAC/cue files reasonably well, and even it can't get CDDB track info... I have no idea how the slimserver handles this, but it seems to be not widely supported in general.

Many people have suggested this cuesheet approach is asking for trouble, and that CDs should always be ripped one-file-per-track. I understand that gapless playback is possible, but what about re-burning a CD from individual tracks? Can this be done more-or-less perfectly? I am the type of person who will be irritated if the programming of the CD is altered -- even if I'm just losing information like the duration of the pause beteen tracks (pre-gap?). I suspect this info is lost when you rip a CD track-by-track.
Mike Giacomelli
QUOTE
Only foobar2k seems to handle these FLAC/cue files reasonably well, and even it can't get CDDB track info... I


Why would you want that? Just use the freedb plugin and store the info in tags. Its quicker, easier and you can correct mistakes manually if needed.

QUOTE
Many people have suggested this cuesheet approach is asking for trouble, and that CDs should always be ripped one-file-per-track. I understand that gapless playback is possible, but what about re-burning a CD from individual tracks? Can this be done more-or-less perfectly? I am the type of person who will be irritated if the programming of the CD is altered -- even if I'm just losing information like the duration of the pause beteen tracks (pre-gap?). I suspect this info is lost when you rip a CD track-by-track.


I believe you can just use foobar to burn the CD back gaplessly. Never tried it, but I've heard it works fine.
christopher_farley
QUOTE
Why would you want that? Just use the freedb plugin and store the info in tags. Its quicker, easier and you can correct mistakes manually if needed.


The point is that if you rip a CD as a single FLAC file with an embedded cuesheet, you lose the ability to tag the individual track names. I think you can still tag the file with the artist / album name. From discussions I have read here with the FLAC developers, it looks as if there are serious debates as to how this should be done, and I'm not sure if I should be counting on a quick solution.

In addition, foobar2K doesn't handle the embedded pre-gap information as perfectly as a cd player. (I would expect that if you put a single track on a playlist that it would play that track *without* the trailing pregap. Regardless of how I make my cuesheets, foobar2K always appends the pregap to the end of the preceding track. Not a huge deal, but there seems to be no huge advantage to ripping a CD as a single file.)

After doing some experiments, it seems like the best approach is to:
  • Rip CDs track-at-once (using cdparanoia)
  • Convert to FLAC
  • Extract a cuesheet (actually a toc, using cdrdao)
  • Put everything in a directory
In the event I want to reconstruct a CD, I know I can convert FLAC to WAV, then use sox to convert the WAVs to raw "cdr" files, then concatanate the raw files to make a big raw file with an MD5 hash that matches the original CD!

I haven't yet figured out a way to automatically add Vorbis comments to the files on a Unix environment.

I also don't know how this method handles hidden tracks, etc. But it will work for me 99% of the time.
jth
I can give you a bit of information about FLAC and the Squeezebox.

I am using the FLAC+cuesheet method for album archiving as well and I will be porting that functionality to the Squeezebox server (unless someone beats me to it).

As you mentioned, there is a problem with track metadata and how to store it in the FLAC file. I'll be overcoming this by using an external cuesheet file. The Squeezebox already supports external cuesheet files for other formats like mp3.

The Squeezebox will read the FLAC cuesheet for the seek points and the external cuesheet for other metadata like track title.

At the moment though, there seems to be a rather serious bug with the flac --skip and --until options that prevents me from implementing the functionality. Hopefully this will be fixed soon.

I am also interested in adding replaygain support to Squeezebox. I have heard that Josh will be making some changes to allow the regular flac program to decode with the replaygain changes already applied. If this is the case, it will be quite easy to allow the Squeezebox to support replaygain as well.

--jth
gutzalpus
QUOTE
Many people have suggested this cuesheet approach is asking for trouble, and that CDs should always be ripped one-file-per-track. I understand that gapless playback is possible, but what about re-burning a CD from individual tracks? Can this be done more-or-less perfectly? I am the type of person who will be irritated if the programming of the CD is altered -- even if I'm just losing information like the duration of the pause beteen tracks (pre-gap?). I suspect this info is lost when you rip a CD track-by-track.


I rip my CDs track by track. If you rip using the following method in EAC, you can create an exact duplicate of any CD, including pregap info:


1. do NOT start out by using the "detect gaps" option (leave them as "unknown")

2. select Action -> Create Cue Sheet -> Multiple WAV files with gaps (noncompliant)

3. F6 to rip tracks to WAV files.

What will then happen is this:

When EAC rips the tracks, it will include the next track's pregap audio data on the end of the previous track's WAV data. Then, when you go to burn the CD, the cue sheet tells EAC how much of the data at the end of a particular WAV file is actually part of the pregap for the next track, and burn accordingly. You will get an exact copy.

This is how I archive all my CDs. I am terrible at taking care of CDs and my CDs always get scratched, so I use this method so I can just use a burned copy and have it be exactly the same as the original...
christopher_farley
Yes, I am looking for a way to achieve the same end result using standard Unix tools. I'm getting there.

I ideally want to locate a headless Linux server in my basement, and to have everything controlled by scripts. To rip a disc, I could just open the tray and drop in a CD. The server would eject the disc when it was done. Using Linux will save me at least $200, on the OS, a monitor, and a keyboard! I can also stash the server on a shelf instead of putting it on its own table.

I keep my discs in good condition, but I'd still like the option to burn a CD out of my HD archive for work, roadtrips, etc. Or in case I do inadvertantly drop a case and put a huge divot in a disc (which has happened, usually to a disc in an expensive box set...) sad.gif
gutzalpus
I see. I missed the "linux server/ripper" statement in your original post.
sinan
QUOTE(gutzalpus @ Dec 7 2003, 10:10 PM)
1. do NOT start out by using the "detect gaps" option (leave them as "unknown")

Why?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2008 Invision Power Services, Inc.