Rubyripper: Difference between revisions

From Hydrogenaudio Knowledgebase
(→‎Installation: oops forgot the </code> tag)
(→‎Correction mechanism: More precise explanation of underlying idea)
Line 21: Line 21:


Rubyripper correction mechanism goes beyond that of [[cdparanoia]]. Every track gets ripped at least twice and is byte compared with the ''Ruby cmp'' feature. If any differences are found, each of the 1,000 bytes of the two files is compared. The next trial run looks to see if differing positions or a match can be found. ''(1,000 bytes is about 0.006 seconds)''
Rubyripper correction mechanism goes beyond that of [[cdparanoia]]. Every track gets ripped at least twice and is byte compared with the ''Ruby cmp'' feature. If any differences are found, each of the 1,000 bytes of the two files is compared. The next trial run looks to see if differing positions or a match can be found. ''(1,000 bytes is about 0.006 seconds)''
<br><br>
The main underlying philosophy is that an erronous read of the underlying ripper will produce random results. This seems so far to be correct. However, with random results also a chance exists that the same result will still be the wrong result.
<br><br>
If the full 1000 bytes are erronous, than a false repair seems to be highly unlikely since there are 1000*256 possibilities in theory. This would need an infinite amount of trials to match. The main principle however is, the more trials needed, the higher a chance of a false repair.
<br><br>
Suppose only 3 bytes in a sample of 1000 bytes give random information. This would still mean 3*256 possibilities. Within each of these bytes, really 2 bits could be a problem. This reduces the possibilities to 3*2*2 = 12 possibilies. So, a false repair still seems to be possible. One has to wonder though: can 3 bytes actually be heard in a wav file that produces 180.000 bytes per second?
<br><br>
In conclusion: Rubyripper won't guarantee a consequent MD5-sum on tracks that needed correction. However it will repair any files so that it's impossible to succesfully blind-test with the original. The log file will report any position that needed more than 3 trials, so you can check the position yourself.


==Installation==  
==Installation==  

Revision as of 20:17, 4 August 2006

Introduction

What is Rubyripper? Rubyripper is a digital audio extraction algorithm that uses cdparanoia or cdda2wav in a sophisticated way to make sure that a CD rip is done succesfully and accurately. It is very similiar to and inspired by EAC. Rubyripper is written in the ruby programming language.

It's currently available for Linux (partial BSD support). OSX will most likely be supported in the near future. The source (same as executable) is published under the GPL license.

  • UPDATE: New version 0.2 was released on 4 August 2006.
  • UPDATE: New version 0.1.1 was released on 12 February 2006.
  • UPDATE: New version 0.1.0 was released on 5 November 2005.

Features

  • A GTK2 user interface
  • Also a command line interface (CLI) available
  • CDDB-info is fetched via the ruby-freedb module
  • The codecs supported are FLAC, Vorbis, MP3, and Wav
  • Multiple codecs can be used in one run
  • You can optionally specify the output directory

Correction mechanism

Rubyripper correction mechanism goes beyond that of cdparanoia. Every track gets ripped at least twice and is byte compared with the Ruby cmp feature. If any differences are found, each of the 1,000 bytes of the two files is compared. The next trial run looks to see if differing positions or a match can be found. (1,000 bytes is about 0.006 seconds)

The main underlying philosophy is that an erronous read of the underlying ripper will produce random results. This seems so far to be correct. However, with random results also a chance exists that the same result will still be the wrong result.

If the full 1000 bytes are erronous, than a false repair seems to be highly unlikely since there are 1000*256 possibilities in theory. This would need an infinite amount of trials to match. The main principle however is, the more trials needed, the higher a chance of a false repair.

Suppose only 3 bytes in a sample of 1000 bytes give random information. This would still mean 3*256 possibilities. Within each of these bytes, really 2 bits could be a problem. This reduces the possibilities to 3*2*2 = 12 possibilies. So, a false repair still seems to be possible. One has to wonder though: can 3 bytes actually be heard in a wav file that produces 180.000 bytes per second?

In conclusion: Rubyripper won't guarantee a consequent MD5-sum on tracks that needed correction. However it will repair any files so that it's impossible to succesfully blind-test with the original. The log file will report any position that needed more than 3 trials, so you can check the position yourself.

Installation

Make sure to have ruby-freedb, ruby-libglade2 and cdparanoia installed as a minimum. You can optionally choose for Lame, Vorbis or FLAC, depending on the codec you wish to use.

Then download Rubyripper: http://rubyforge.org/projects/rubyripper/

Documentation of some of the ripping logic used can be found at: (somewhat dated)
http://rubyforge.org/docman/view.php/1284/310/Rubyripper's%20ripping%20logic.pdf

Currently there isn't an official installer available. Usage from a terminal or console:

cd <download_dir> (Go to the directory where you saved the downloaded archive)
tar xfj <filename_download> (Unpack the archive)
cd rubyripper-<version> (Move into the just unpacked directory)
chmod +x *.rb (Make rubyripper.rb executable)
./rubyripper_gtk.rb (Launch gtk2 user interface)
./rubyripper_cli.rb (Launch command line user interface)

If Rubyripper doesn't start make sure the dependencies are ok.

External links