Ripping multichannel audio from DVD-A (take 2)

In a previous post I outlined the method I used to rip multichannel surround audio from my DVD-A collection. As was pointed out in the comments, the method works but isn't entirely correct.

DVD Audio logo

As I discovered now, DVD-Audio discs usually contain both Video and Audio data. The audio data, which are the advertised high resolution 24 bit surround tracks, are located in the AUDIO_TS folder. For compatibility reasons (I guess), all DVDs also contain a standard VIDEO_TS folder that contains a normal DVD movie with compressed DTS sound. The video data is great if you want to playback the disc on a home theater (and show off your surround system, perhaps) or to access the bonus features.

But to get the full listening experience it is best to use the uncompressed PCM audio data. Here's an illustrated guide on how to rip the tracks.

Extract the audio data

Download DVD Audio Explorer (beta 3 at this time) and unzip the program somewhere. Launching bin/DVDAExplorer.exe should give you this screen:

DVD Audio Explorer main window
The DVD Audio Explorer interface, where you explore the .IFO files on a DVD and select the tracks to extract.

Open the AUDIO_TS.IFO file in your DVD-Audio and wait till Explorer loads the available tracks. I found that usually there are two (or more) different DVD titles on the same disc: one with surround sound and one with the high definition stereo mix. Select all tracks of the title you want to extract and click on the "floppy" icon.

DVD Audio Explorer extraction dialog.

Now, select an output folder, check the "Store" option and extract. This process takes some time. After a while you should have a bunch of *.MLP files in the selected folder.

Encode the audio files

To convert these files in a format that can be played back easily, download eac3to. The archive includes a lot of different executables, but the one we're interested in is eac3to.exe.

Now, since I have a quad core CPU and a lot of files to convert at once, what better excuse to hammer together a PowerShell script to do the work? After some twiddling, this is what I came up with:

$files = Get-ChildItem . *.mlp
Write-Host ("Found " + $files.Count + " files. Converting...")
foreach($file in $files) {
	$outname = $file.fullname + ".wav"
	Start-Process "..\eac3\eac3to.exe" @($file.fullname, $outname)
}

Save it as a PS1 file in your output folder and launch it from powershell (here's how to enable script execution if you run in some security limitation). The script will launch a separate process for each single file. This should speed up things considerably if you have more cores, but will probably choke single-core CPUs.

eac3to multiple processes
A nice way to stress out my new computer.

Wait for the processes to terminate (eac3to plays a nice "plop" sound when it's done) and you'll have a bunch of log and wave files. The last step is to compress them in some format that supports multichannel audio: I did it using the dbPowerAmp batch encoder. Note: it appears that eac3to can directly compress the converted files, but I didn't attempt to do it.

At any rate, you'll end up with some nice multichannel files. Fill in the metadata and you're ready to go.  :)