<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.hydrogenaudio.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Peter0</id>
	<title>Hydrogenaudio Knowledgebase - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.hydrogenaudio.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Peter0"/>
	<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Special:Contributions/Peter0"/>
	<updated>2026-06-12T23:27:54Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Rubyripper&amp;diff=19753</id>
		<title>Rubyripper</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Rubyripper&amp;diff=19753"/>
		<updated>2009-09-21T16:13:51Z</updated>

		<summary type="html">&lt;p&gt;Peter0: /* Installation on Ubuntu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Software&lt;br /&gt;
| name = Rubyripper&lt;br /&gt;
| screenshot = [[Image:Rubyripper-screenshot.png|100px]]&lt;br /&gt;
| caption = Open-source secure ripper for Linux&lt;br /&gt;
| maintainer = Bouke Woudstra&lt;br /&gt;
| stable_release = 0.5.5&lt;br /&gt;
| preview_release = 0.5.7&lt;br /&gt;
| operating_system = Linux, Mac OS/X&lt;br /&gt;
| use = Digital Audio Extraction&lt;br /&gt;
| license = GPL&lt;br /&gt;
| website = [http://code.google.com/p/rubyripper/ Rubyripper website (hosted by Google Code)]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Rubyripper is a digital audio extraction algorithm that uses [[cdparanoia]] error correcting power and it&#039;s own secure ripping algorithm to make sure that a CD rip is done successfully and accurately. It is very similar to and inspired by [[EAC]]. Rubyripper is written in the ruby programming language.&lt;br /&gt;
&lt;br /&gt;
It&#039;s currently available for Linux, BSD should work but is untested. Mac OS/X is supported for the CLI frontend. The source (same as executable) is published under the GPL3 license.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* A GTK2 user interface&lt;br /&gt;
* Sophisticated error correction mechanism&lt;br /&gt;
* A command line interface (CLI) available&lt;br /&gt;
* CDDB-info is fetched via the &#039;&#039;cd-discid&#039;&#039; module&lt;br /&gt;
* Info can be edited after fetching&lt;br /&gt;
* The codecs supported are FLAC, Vorbis, MP3, and WAV&lt;br /&gt;
* Multiple codecs can be used in one run&lt;br /&gt;
* Direct offset support&lt;br /&gt;
* Detailed logfile creation&lt;br /&gt;
* A detailed overview of hard-to-correct positions&lt;br /&gt;
* Create m3u playlists&lt;br /&gt;
&lt;br /&gt;
== Correction mechanism ==&lt;br /&gt;
Rubyripper correction mechanism goes beyond that of [[cdparanoia]]. Every track gets ripped at least twice and is byte compared with the &amp;lt;code&amp;gt;Ruby cmp&amp;lt;/code&amp;gt; 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. &#039;&#039;(1,000 bytes is about 0.006 seconds)&#039;&#039;. The main underlying Philosophy is that an erroneous read of an underlying ripper will produce random results. This seems so far to be correct. A possibility still exists that with random results the same result will be wrong.&lt;br /&gt;
&lt;br /&gt;
In theory if the full 1,000 bytes are erroneous, than a false repair seems to be highly unlikely since there are &amp;lt;math&amp;gt;256^{1000} = 1.73 * 10^{2408}&amp;lt;/math&amp;gt; combinations. (As a byte consists of 8 bits, &amp;lt;math&amp;gt;2^8 = 256&amp;lt;/math&amp;gt;). The main principle however is, the more trials that are needed, consequently the higher a chance of a false repair. Suppose only 3 bytes in a sample of 1,000 bytes give random information. This would still mean &amp;lt;math&amp;gt;256^3 = 16.7M&amp;lt;/math&amp;gt; possibilities for these bytes; really 2 bits in each byte could be a problem. This reduces the possibilities to &amp;lt;math&amp;gt;2^{3*2} = 64&amp;lt;/math&amp;gt;. A correct repair at this point may be possible. One has to wonder though: can 3 bytes actually be heard in a wav file that produces 180.000 bytes per second? &lt;br /&gt;
&lt;br /&gt;
In conclusion: Rubyripper won&#039;t guarantee a consequent &#039;&#039;MD5-sum&#039;&#039; on tracks that needed correction. However it will repair any files so that it&#039;s impossible to successfully 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.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
===General Installation=== &lt;br /&gt;
Make sure to have &amp;lt;code&amp;gt;cd-discid, ruby-libglade2, libglade2-ruby&amp;lt;/code&amp;gt; and [[cdparanoia]] installed as a minimum. You can optionally choose for Lame, Vorbis or FLAC, depending on the codec you wish to use.&lt;br /&gt;
&lt;br /&gt;
Then download Rubyripper:&lt;br /&gt;
http://code.google.com/p/rubyripper/downloads/list&lt;br /&gt;
&lt;br /&gt;
See the README file for installation instructions or just type: &amp;lt;code&amp;gt;make install&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Rubyripper doesn&#039;t start make sure the dependencies are ok. When launched from the terminal window Rubyripper should tell you which dependency it&#039;s missing.&lt;br /&gt;
&lt;br /&gt;
===Installation on Ubuntu=== &lt;br /&gt;
&#039;&#039;Tested with Ubuntu 9.04 („Jaunty Jackalope“), Gnome 2.26.1, and Rubyripper 0.5.7.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
#Make sure Rubyripper has these dependencies as a bare mininum. They can be installed by typing in the terminal window:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&amp;amp;nbsp;$ sudo apt-get install cd-discid cdparanoia&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;as a bare mininum or&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&amp;amp;nbsp;$ sudo apt-get install cd-discid cdparanoia flac lame mp3gain normalize-audio ruby-gnome2 ruby vorbisgain&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;to get the most out of the currently available distros.&amp;lt;br&amp;gt;For internationalisation: instead of the mentioned &amp;lt;code&amp;gt;ruby-gettext&amp;lt;/code&amp;gt; install &amp;lt;code&amp;gt;gettext&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;libgettext-ruby1.8&amp;lt;/code&amp;gt;.&lt;br /&gt;
#Download the Rubyripper archive (see above) from the official website. &lt;br /&gt;
#Extract the files in the Rubyripper archive (bzipped tarball) into a temporary directory.&lt;br /&gt;
#Navigate to the directory in which you extracted the Rubyripper archive (Most likely which will be your desktop) or the directory in which you extracted the archive in, e.&amp;amp;nbsp;g. by typing in terminal window:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&amp;amp;nbsp;$ cd /home/USERNAME/Desktop/rubyripper-0.5.x/&amp;lt;/code&amp;gt;&lt;br /&gt;
#Rubyripper needs to know what features need to be installed. Install both the GUI and command-line version for to get the most out of the application by typing in the terminal window:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&amp;amp;nbsp;$ ./configure --enable-lang-all --enable-gtk2 --enable-cli&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Note: This only prepares/&amp;amp;#8203;configures installation.&lt;br /&gt;
#In order to install the application, type in the terminal window:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&amp;amp;nbsp;$ sudo make install&amp;lt;/code&amp;gt;&lt;br /&gt;
#Rubyripper should now be installed with your applications under &amp;lt;code&amp;gt;Applications -&amp;gt; Sound &amp;amp; Video&amp;lt;/code&amp;gt;&lt;br /&gt;
#If it runs according to your needs, yo may remove the temporary directory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes: If you have CD-ROM drive problems it is recommended you read [http://ubuntuforums.org/showpost.php?p=5529611&amp;amp;postcount=16 this] thread&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You can add or drop dependencies as you see fit. Some the Replaygain packages are not available in certain Ubuntu distros! i.e (64-bit distributions of Ubuntu)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Substitute &#039;x&#039; above with the latest version of Rubyripper&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You can run the command-line version of Rubyripper be navigating to the source directory and typing in &amp;lt;code&amp;gt;./rubyripper_cli.rb&amp;lt;/code&amp;gt; into the terminal&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Installation on Debian===&lt;br /&gt;
Rubyripper compiles and depedencies come packaged with Rarewares GNU / Debian Linux [http://www.rarewares.org/debian.php repository] &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: A guide will be written for installation on Debian once it becomes avaliable***&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
These screenshots are taken with the 0.5.5 release:&lt;br /&gt;
* [http://www.opendesktop.org/content/preview.php?preview=1&amp;amp;id=88595&amp;amp;file1=88595-1.png&amp;amp;file2=885952.png&amp;amp;file3=&amp;amp;name=Rubyripper&amp;amp;PHPSESSID=2419fd006ef409c1e96a34b45c34d5f2 Screenshot #1]&lt;br /&gt;
* [http://www.opendesktop.org/content/preview.php?preview=2&amp;amp;id=88595&amp;amp;file1=88595-1.png&amp;amp;file2=885952.png&amp;amp;file3=&amp;amp;name=Rubyripper&amp;amp;PHPSESSID=2419fd006ef409c1e96a34b45c34d5f2 Screenshot #2]&lt;br /&gt;
&lt;br /&gt;
== Known bugs &amp;amp; new features ==&lt;br /&gt;
Add an issue in the bugtracker to discuss any new feature requests: &lt;br /&gt;
* [http://code.google.com/p/rubyripper/issues/list Known bugs and new features]&lt;br /&gt;
&lt;br /&gt;
= Development API =&lt;br /&gt;
This section will give some technical information, which should be useful for interested developers. It will outline how the code is structured and what the API of Rubyripper codebase is for adding new user interfaces. Since version 0.2 it is quite simple to add new frontends to the current codebase. Currently there are CLI and GTK2 frontends. A Qt frontend or a Cocoa Mac OS frontend, should not be terribly difficult to implement. The developer won&#039;t implement this himself though, due to the fact that he is more interested in fine tuning the Rubyripper logic codebase.&lt;br /&gt;
&lt;br /&gt;
== Becoming a Rubyripper developer ==&lt;br /&gt;
To become a developer you should have:&lt;br /&gt;
* Some basic knowledge of the Ruby programming language. Read for instance the [http://www.ruby-doc.org/docs/ProgrammingRuby/ free online book], at least until the chapter &amp;quot;Until Trouble Strikes&amp;quot;. This is a somewhat dated version, but still perfectly usable. The lead developer doesn&#039;t use any new features, therefore it should be fine.&lt;br /&gt;
* Some basic knowledge of a GUI-toolkit in case you want to add a new frontend.&lt;br /&gt;
&lt;br /&gt;
SVN Checkout now possible.&amp;lt;br/&amp;gt;&lt;br /&gt;
Use: &amp;lt;code&amp;gt;$svn checkout http://rubyripper.googlecode.com/svn/trunk/ rubyripper &amp;lt;/code&amp;gt; to get the latest source code.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re interested in becoming a developer, please contact him at &#039;&#039;rubyripperdev@nospam@gmail.com&#039;&#039;. You can leave out the @nospam part.&lt;br /&gt;
&lt;br /&gt;
== Data files and class structures ==&lt;br /&gt;
The 0.5 release has three ruby files and one glade file included:&lt;br /&gt;
* &amp;lt;code&amp;gt;rr_lib.rb.&amp;lt;/code&amp;gt; This contains the Rubyripper codebase. It consists of five classes:&lt;br /&gt;
** &amp;lt;code&amp;gt;Gui_Support.&amp;lt;/code&amp;gt; This class handles all feedback communication with the user interface and is used a lot by the other classes (except Cddb). This is were log file is generated and the error analysis takes place.&lt;br /&gt;
** &amp;lt;code&amp;gt;Cddb.&amp;lt;/code&amp;gt; This class handles the freedb fetching. It uses the Freedb class (dependent on ruby-freedb) to get info about the disc. The server contact is handled in the Cddb class itself. Some problems of the Freedb class made it impossible to rely on it. The biggest problem with using Freedb class is that, it&#039;s using an old contact protocol and never gives away any information on the current year. This is the main reason why the Cddb class handles all server contact.&lt;br /&gt;
** &amp;lt;code&amp;gt;Secure_rip.&amp;lt;/code&amp;gt; As might be expected, all error correction logic is put in here.&lt;br /&gt;
** &amp;lt;code&amp;gt;Encode. &amp;lt;/code&amp;gt; As might be expected, this handles the encoding of the different formats supported.&lt;br /&gt;
** &amp;lt;code&amp;gt;Rubyripper.&amp;lt;/code&amp;gt; Handles the usage of the different classes. It also performs some logical checks before starting at all.&lt;br /&gt;
* &amp;lt;code&amp;gt;rubyripper_cli.rb.&amp;lt;/code&amp;gt; It has one class that contains the code for the command line interface frontend.&lt;br /&gt;
* &amp;lt;code&amp;gt;rubyripper_gtk.rb.M&amp;lt;/code&amp;gt; It has one class that contains the code for the GTK2 user interface frontend.&lt;br /&gt;
* &amp;lt;code&amp;gt;rubyripper.glade.&amp;lt;/code&amp;gt; This is a help file for the GTK interface. It&#039;s made with Glade, a program for designing user interfaces for GTK2.&lt;br /&gt;
&lt;br /&gt;
== Adding a new frontend ==&lt;br /&gt;
New frontends are encouraged and aren&#039;t difficult to make, once you know your GUI toolkit. Take for instance, the current GTK2 frontend, which consists of only 350 lines of code &#039;&#039;(+ the glade file, but this code is automatically created)&#039;&#039;&#039;. From a starting point it would be best to use the current GTK2 or CLI code and just plainly rewrite it for the other toolkit. The basic ideas should be more or less the same.&lt;br /&gt;
&lt;br /&gt;
The basic idea is that the GUI first presents the info of a Cddb instance. When the user wants to start, a new Rubyripper instance is started with all the settings in a Hash as a parameter. You can copy most of the code from the other user interfaces. The user interface should also have an update function. The update function is used as a communication channel for the Rubyripper instance.&lt;br /&gt;
&lt;br /&gt;
# Using a new thread for launching instances is an effective way of getting a responsive GUI.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://code.google.com/p/rubyripper/ Rubyripper] The official Google code website&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=38418 Hydrogenaudio forum thread] the first public release of Rubyripper&lt;br /&gt;
* [http://ubuntuforums.org/showthread.php?t=799621 Ubuntu 8.04] a thread that&#039;s consistently updated for installing Rubyripper in Ubuntu. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:CD Rippers]]&lt;/div&gt;</summary>
		<author><name>Peter0</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Converter:Custom_presets&amp;diff=19732</id>
		<title>Foobar2000:Converter:Custom presets</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Converter:Custom_presets&amp;diff=19732"/>
		<updated>2009-09-08T13:00:17Z</updated>

		<summary type="html">&lt;p&gt;Peter0: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Converter: Custom Presets =&lt;br /&gt;
[[Image:Foobar2000-Preferences-converter-custompresets.png|Converter: Custom preset editor]]&lt;br /&gt;
&lt;br /&gt;
== Encoder == &lt;br /&gt;
&lt;br /&gt;
File name of the command-line encoder binary.&lt;br /&gt;
&lt;br /&gt;
== Extension ==&lt;br /&gt;
&lt;br /&gt;
Extension of the file format, without the dot.&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
Command-line parameters to send to the encoder. Exact syntax depends on the encoder. Refer to encoder&#039;s documentation to find out exact parameters to use.&lt;br /&gt;
&lt;br /&gt;
There are three possible placeholders to be used in constructing the parameter string. Every occurance of a placeholder will be replaced by specific variable content during encoding:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;%d&amp;lt;/code&amp;gt; – will be replaced by the desired output file name&lt;br /&gt;
*&amp;lt;code&amp;gt;%r&amp;lt;/code&amp;gt; – will be replaced by a random number; used together with &amp;lt;code&amp;gt;oggenc&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;%s&amp;lt;/code&amp;gt; – will be replaced by the filename of a temporary created input wav-file&lt;br /&gt;
&lt;br /&gt;
Using &amp;lt;code&amp;gt;%s&amp;lt;/code&amp;gt; changes encoder control from pipe mode to temporary file mode; the progress bar progresses only during temporary file creation, but pauses while encoding.&lt;br /&gt;
&lt;br /&gt;
== Bit Depth Control ==&lt;br /&gt;
&lt;br /&gt;
These settings tell the Converter how to manage bit depths of data streams sent to the encoder. You should fill them according to encoder&#039;s documentation. If you&#039;re uncertain about highest available BPS mode, leave it at 16.&lt;br /&gt;
&lt;br /&gt;
Bit depth of the data stream sent to the encoder depends on various factors and will vary between different encoding scenarios - source: lossy/lossless, DSP or ReplayGain processing active, etc.&lt;br /&gt;
&lt;br /&gt;
== Display Info ==&lt;br /&gt;
&lt;br /&gt;
These settings control how this preset is shown on the preset list. They are entirely arbitrary and have no impact on the encoding process at all.&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
[[Foobar2000:Preferences:Converter|Preferences: Converter]]&lt;br /&gt;
&lt;br /&gt;
[[Foobar2000:Converter|Converter component]]&lt;/div&gt;</summary>
		<author><name>Peter0</name></author>
	</entry>
</feed>