<?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=Icheyne</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=Icheyne"/>
	<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Special:Contributions/Icheyne"/>
	<updated>2026-04-29T18:16:47Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Replay_Gain&amp;diff=21831</id>
		<title>Replay Gain</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Replay_Gain&amp;diff=21831"/>
		<updated>2010-08-04T11:11:52Z</updated>

		<summary type="html">&lt;p&gt;Icheyne: /* Portable devices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Replay Gain&#039;&#039;&#039; is the name of a technique invented to achieve the same playback volume of audio files. It specifies the reference level of 89dB and an algorithm to measure the &#039;&#039;&#039;perceived&#039;&#039;&#039; loudness of audio data.&lt;br /&gt;
&lt;br /&gt;
Replay Gain allows the loudness of each song within a collection of songs to be consistent. This is called &#039;Track Gain&#039;, or &#039;Radio Gain&#039; in earlier parlance. It also allows the loudness of a specific sub-collection (an &amp;quot;album&amp;quot;) to be consistent with the rest of the collection, while allowing the dynamics from song to song on the album to remain intact. This is called &#039;Album Gain&#039;, or &#039;Audiophile Gain&#039; in earlier parlance. This is usually important when listening to classical music albums, because quiet tracks need to remain a certain degree quieter than the louder ones.&lt;br /&gt;
&lt;br /&gt;
Replay Gain is different from [[Normalization|peak normalization]]. Peak normalization merely ensures that the peak amplitude reaches a certain level. This does not ensure equal loudness. The Replay Gain technique measures the &#039;&#039;effective power&#039;&#039; of the waveform (i.e. the RMS power after applying an &amp;quot;equal loudness contour&amp;quot;), and then adjusts the amplitude of the waveform accordingly. The result is that Replay Gained waveforms are usually more uniformly amplified then peak-normalized waveforms.&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
There are different Replay Gain implementations, each with its own uses and strength. Most use [[metadata]] to indicate the level of the volume change that the player should make. Some modify the audio data itself, and optionally use metadata as well. There are advantages and disadvantages to both methods.&lt;br /&gt;
&lt;br /&gt;
In the metadata method, information on both types of Replay Gain (Track Gain and Album Gain) can be stored. The volume-change information can be very precise. If audio data was also changed, the metadata can contain &amp;quot;undo&amp;quot; info. Not all audio players/decoders know how to read and use Replay Gain information stored in metadata. And there&#039;s no standard for where and how Replay Gain info is stored; each implementation uses different formats and puts the info in different locations.&lt;br /&gt;
&lt;br /&gt;
In the audio data method, the file&#039;s actual audio data is modified so that its natural/default playback volume is at the target level. In this scenario, only one type of Replay Gain (Track Gain or Album Gain) can be applied. If no &amp;quot;undo&amp;quot; info is saved somewhere, it may not be possible to restore the original audio data. Limitations of the audio file format may prevent precise (finely tuned) gain adjustments with this method. For example, MP3 and AAC files can only be losslessly modified in 1.5 dB steps. Depending on the audio file format, the process may also be lossy in the sense that it could irreversibly push a signal above the format&#039;s maximum amplitude (resulting in clipping) or below the minimum (resulting in silence).&lt;br /&gt;
&lt;br /&gt;
=== MP3Gain ===&lt;br /&gt;
[[MP3Gain]] is an implementation of Replay Gain. It can be used to just analyze files &amp;amp; recommend changes or to also modify the gain. If modifying the gain, it always modifies the audio data. It can add somewhat precise metadata, including undo info. The gain can be modified to any target dB, or it can be changed by a specified amount. For balance correction, user-specified changes can even be made on just one channel in simple L/R stereo-mode files (not joint stereo).&lt;br /&gt;
&lt;br /&gt;
* Format: [[MP3]]&lt;br /&gt;
* Method: Audio + Meta, or Audio only&lt;br /&gt;
* Limitations: Audio data modifications are limited to 1.5dB steps, may become irreversible (however, that&#039;s a very rare condition; see the [http://www.hydrogenaudio.org/forums/lofiversion/index.php/t34154.html &amp;quot;mp3gain is NOT lossless&amp;quot; forum thread])&lt;br /&gt;
* http://mp3gain.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
=== AACGain ===&lt;br /&gt;
[[AACGain]] is a modified version of MP3Gain that works on both MP3 and AAC files.&lt;br /&gt;
&lt;br /&gt;
* Format: [[MP3]], [[AAC]] (with or without MP4 container)&lt;br /&gt;
* Method: Audio + Meta, or Audio only&lt;br /&gt;
* Limitations: Limited to 1.5dB steps mode, may become irreversible (same caveat as for MP3Gain)&lt;br /&gt;
* http://altosdesign.com/aacgain/&lt;br /&gt;
&lt;br /&gt;
=== [[LAME]] ===&lt;br /&gt;
* Method: Header ([http://gabriel.mp3-tech.org/mp3infotag.html mp3infotag])&lt;br /&gt;
* Notes:&lt;br /&gt;
** Tags added during encoding; not supported by any player yet; Track Gain only&lt;br /&gt;
** Replay Gaining MP3&#039;s are usually done using MP3Gain (see [[Replay Gain#MP3Gain|above]]) or [[Replay Gain#foobar2000 Replay Gain scanner|foobar2000]]&lt;br /&gt;
* http://lame.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
=== [[Musepack]] Replay Gain ===&lt;br /&gt;
* Method: Header (similar to Meta data method)&lt;br /&gt;
* Notes: Replay Gain values are stored in the header and Replay Gain is part of the Musepack specifications; therefore any Musepack decoder that does not support Replay Gain can be considered broken.&lt;br /&gt;
* http://www.musepack.net/&lt;br /&gt;
&lt;br /&gt;
=== VorbisGain ===&lt;br /&gt;
* Format: (Ogg) [[Vorbis]]&lt;br /&gt;
* Method: Meta (in [[Vorbis comment]])&lt;br /&gt;
* http://www.sjeng.org/vorbisgain.html&lt;br /&gt;
** new compiles of VorbisGain at [http://www.rarewares.org/ogg.html www.rarewares.org]&lt;br /&gt;
:&#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039; Andavari has provided a very useful script to integrate VorbisGain, which is a CLI tool, into Windows Explorer. Please (Ogg) [[Vorbis#Replay Gain|check this section]].&lt;br /&gt;
&lt;br /&gt;
=== FLAC / METAFLAC ===&lt;br /&gt;
* Format: [[Free Lossless Audio Codec|FLAC]]&lt;br /&gt;
* Method: Meta (in [[Vorbis comment]])&lt;br /&gt;
* http://flac.sf.net&lt;br /&gt;
&lt;br /&gt;
=== WavPack / WVGAIN ===&lt;br /&gt;
* Format: [[WavPack]]&lt;br /&gt;
* Method: Meta (in [[APEv2]] tag)&lt;br /&gt;
* http://www.wavpack.com&lt;br /&gt;
&lt;br /&gt;
=== Wavegain ===&lt;br /&gt;
* Format: waveform&lt;br /&gt;
* Method: Audio&lt;br /&gt;
* Limitations: Irreversible&lt;br /&gt;
* http://www.rarewares.org/files/others/wavegain.zip&lt;br /&gt;
&lt;br /&gt;
=== [[foobar2000]] Replay Gain scanner ===&lt;br /&gt;
* Format:&lt;br /&gt;
** [[MP3]]: Values written to [[ID3v2]] (default) or [[APEv2]] tags.&lt;br /&gt;
** [[Musepack]]: Values written to header.&lt;br /&gt;
** (Ogg) [[Vorbis]]: Values written to [[Vorbis comment]].&lt;br /&gt;
** [[WavPack]]: Values written to [[APEv2]] tags.&lt;br /&gt;
** [[AAC]]: Values written to [[APEv2]] tags.&lt;br /&gt;
** [[MP4]]: Uses its own iTunes-compatible tagging system (though iTunes does not support Replay Gain).&lt;br /&gt;
** [[Free Lossless Audio Codec|FLAC]]: Values written to [[Vorbis comment]].&lt;br /&gt;
** [[APE]]: Values written to [[APEv2]] tags.&lt;br /&gt;
** Modules ([[MOD]] etc.): Optionally saved into [[APEv2]] tags.&lt;br /&gt;
&lt;br /&gt;
* http://foobar2000.org&lt;br /&gt;
&lt;br /&gt;
=== [[MediaMonkey]] ===&lt;br /&gt;
* Format:&lt;br /&gt;
** [[MP3]]: Values written to [[APEv2]] or [[ID3v2]] tags.&lt;br /&gt;
** (Ogg) [[Vorbis]]: Values written to [[Vorbis comment]].&lt;br /&gt;
** [[WMA]]: Values stored in MediaMonkey&#039;s MDB database.&lt;br /&gt;
** [[Free Lossless Audio Codec|FLAC]]: Values written to [[Vorbis comment]].&lt;br /&gt;
** [[APE]]: Values written to [[APEv2]] tags.&lt;br /&gt;
** [[WAV]]: Values stored in MediaMonkey&#039;s MDB database.&lt;br /&gt;
** [[MPC]]: Internal gain Structure.&lt;br /&gt;
* In addition to tags, all Replay Gain values are also stored in MediaMonkey&#039;s MDB database&lt;br /&gt;
* Does not support Album/Audiophile Replay Gain (Added to new [[MediaMonkey]] version 3&lt;br /&gt;
* Also capable of (irreversibly) changing the volume of MP3 tracks, similar to [[MP3Gain]]&lt;br /&gt;
* http://www.mediamonkey.com&lt;br /&gt;
&lt;br /&gt;
=== [[Winamp]] Replay Gain scanner===&lt;br /&gt;
* Format:&lt;br /&gt;
** [[MP3]]: Values written to [[ID3v2]] tags.&lt;br /&gt;
** (Ogg) [[Vorbis]]: Values written to [[Vorbis comment]].&lt;br /&gt;
** [[WMA]]: Values stored in Windows Media Audio tags.&lt;br /&gt;
** [[Free Lossless Audio Codec|FLAC]]: Values written to [[Vorbis comment]].&lt;br /&gt;
** [[APE]]: Values written to [[APEv2]] tags.&lt;br /&gt;
** [[AAC]]: Values written to [[APEv2]] tags.&lt;br /&gt;
** [[MP4]]&lt;br /&gt;
** [[TAK]]: Values written to [[APEv2]] tags.&lt;br /&gt;
* Support Album/Track Gain&lt;br /&gt;
&lt;br /&gt;
== Players support ==&lt;br /&gt;
Replay Gain being present in the specs of FLAC, Musepack, and APE formats, any player that support those formats usually support Replay Gain.&lt;br /&gt;
&lt;br /&gt;
The situation with MP3 is rather different, as it was not part of the MP3 specs. The APEv2 tags metadata implementation is somewhat becoming the de-facto standard.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
* [[foobar2000]] supports Replay Gain in all possible aspects.&lt;br /&gt;
* [[Winamp]] supports Replay Gain in album or track mode.&lt;br /&gt;
* [[MediaMonkey]] supports track Replay Gain only&lt;br /&gt;
* [[XMPlay]] recently implemented Replay Gain&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;...and probably others.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* [[XMMS]]. Reads Replay Gain from [[Free Lossless Audio Codec|FLAC]], [[Musepack]], (Ogg) [[Vorbis]] ..&lt;br /&gt;
:For [[MP3]], use the CVS version of the [http://xmms-mad.sourceforge.net/ xmms-mad] mp3 plugin (it&#039;s not yet released as binary, furthermore not available in distribs&#039; versions for now. Meanwhile binaries are available here: [http://perso.crans.org/~krempp/xmms-mad/ custom binaries])&lt;br /&gt;
* [[amarok]]. By using the amarok-script [http://kde-apps.org/content/show.php?content=26073 Replay Gain]&lt;br /&gt;
:And possibly others, since [http://developer.kde.org/~wheeler/taglib.html TagLib] added support for [[APEv2]] tags in [[MP3]] files, players using this library (like [[amaroK]] and [[JuK]]) might support that kind of Replay Gain tags in the near future.&lt;br /&gt;
* [http://www.sacredchao.net/quodlibet Quod Libet] reads Replay Gain from (Ogg) [[Vorbis]], [[MP3]], [[Free Lossless Audio Codec|FLAC]], and [[Musepack]].&lt;br /&gt;
:Requires support to be enabled (via the appropriate python bindings and libraries) for the above formats. Does not support Replay Gain values stored in [[APEv2]] tags in [[MP3]]s. Replay Gain values are stored in RVA2 id3v2.4 frames. See the [http://www.sacredchao.net/quodlibet/wiki/Development/ID3Notes Quod Libet RVA2 / Replay Gain notes].&lt;br /&gt;
* [http://www.musicpd.org/ Music Player Daemon] (MPD) reads Replay Gain from (Ogg) [[Vorbis]], [[Free Lossless Audio Codec|FLAC]], and [[Musepack]].&lt;br /&gt;
:foobar2000-style TXXX frames in [[MP3]]s are also supported in the latest development releases.&lt;br /&gt;
* [http://www.mplayerhq.hu/ MPlayer]. Mplayer support for Replay Gain is codec dependent.&lt;br /&gt;
:Codecs that are known to support Replay Gain: vorbis&lt;br /&gt;
:Because of this, you need to prioritize the codecs that support it, or choose it individually on the command line.  To add it to the command line, add an -ac [codec] option after each file that you want to choose the codec for, or at the beginning to make it apply to all files listed.  To prioritize the codecs by default, list them in a line in mplayer.conf:&lt;br /&gt;
 ac=[codec],[othercodec],vorbis,mad,&lt;br /&gt;
&lt;br /&gt;
=== Portable devices ===&lt;br /&gt;
[http://www.rockbox.org/ Rockbox] supports Replay Gain (in album or track mode) for most formats, including  WMA, MP1/2/3, AAC, ALAC, Musepack, Monkey&#039;s Audio, Wavpack, FLAC and Vorbis.  &amp;lt;br&amp;gt;Note that Replay Gain is only supported when using the respective codec&#039;s native tagging format.  For example:  Replay Gain stored in APEv2 tags is not supported for MP3, rather ID3v2.x tags are expected.&lt;br /&gt;
&lt;br /&gt;
Sandisk Sansa Fuze with firmware 1.02.26 and 2.02.26&lt;br /&gt;
&lt;br /&gt;
Sandisk Sansa Clip+&lt;br /&gt;
&lt;br /&gt;
The iPod features &#039;&#039;Soundcheck&#039;&#039;, which seems to produce roughly the same normalization gains as Replay Gain, but doesn&#039;t provide an Album Gain.&lt;br /&gt;
&lt;br /&gt;
=== Hi-Fi ===&lt;br /&gt;
Slim Devices a company owned by Logitech Inc, supports Replay Gain on both of their hi-end audiophile players, known as the [[Slim Devices Transporter|Transporter]] and the [[Slim Devices Squeezebox|Squeezebox]].&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://replaygain.hydrogenaudio.org Original Replay Gain website]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Replay_Gain Replay Gain] at Wikipedia&lt;br /&gt;
* [http://www.bobulous.org.uk/misc/Replay-Gain.html Replay Gain using foobar2000] (how to use Replay Gain in Windows using foobar2000).&lt;br /&gt;
* [http://www.bobulous.org.uk/misc/Replay-Gain-in-Linux.html Replay Gain in Linux] (how to use Replay Gain in Linux using foobar2000 and Wine, or using metaflac or vorbisgain).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:Metadata]]&lt;/div&gt;</summary>
		<author><name>Icheyne</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Rubyripper&amp;diff=16303</id>
		<title>Rubyripper</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Rubyripper&amp;diff=16303"/>
		<updated>2007-01-22T22:15:23Z</updated>

		<summary type="html">&lt;p&gt;Icheyne: Added the debian package name for ruby-libglade2&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.3&lt;br /&gt;
| preview_release = n/a&lt;br /&gt;
| operating_system = Linux&lt;br /&gt;
| use = Digital Audio Extraction&lt;br /&gt;
| license = GPL &lt;br /&gt;
| website = [http://rubyforge.org/projects/rubyripper/ Rubyforge Website] &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Introduction= &lt;br /&gt;
&lt;br /&gt;
Rubyripper is a digital audio extraction algorithm that uses [[cdparanoia]] 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. &lt;br /&gt;
&lt;br /&gt;
It&#039;s currently available for Linux, BSD should work but is untested. OS X can be supported in the near future if some tester stands up. The source (same as executable) is published under the GPL license.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;UPDATE: New version 0.3 was released on 4 December 2006.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;UPDATE: New version 0.2 was released on 4 August 2006.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;UPDATE: New version 0.1.1 was released on 12 February 2006.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;UPDATE: New version 0.1.0 was released on 5 November 2005.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Features== &lt;br /&gt;
&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;
&lt;br /&gt;
Rubyripper correction mechanism goes beyond that of [[cdparanoia]]. Every track gets ripped at least twice and is byte compared with the &#039;&#039;Ruby cmp&#039;&#039; 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 erronous read of an underlying ripper will produce random results. This seems so far to be correct. A possibility still exists that with randomn results the same result will be wrong. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If the full 1,000 bytes are erronous, than a false repair seems to be highly unlikely since there are &amp;lt;math&amp;gt;1000 \times 256&amp;lt;/math&amp;gt; possibilities in theory. (As a byte consists of 8 bits, 2&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;=256). This would need an infinite amount of trials to match. 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;3 \times 256&amp;lt;/math&amp;gt; possibilities within each of these bytes, really 2 bits could be a problem. This reduces the possibilities to &amp;lt;math&amp;gt;3 \times 2 \times 2 = 12&amp;lt;/math&amp;gt; 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?&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;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 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.&lt;br /&gt;
&lt;br /&gt;
==Installation== &lt;br /&gt;
&lt;br /&gt;
Make sure to have &#039;&#039;cd-discid&#039;&#039;, &#039;&#039;ruby-libglade2&#039;&#039; (&#039;&#039;libglade2-ruby&#039;&#039;) 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://rubyforge.org/frs/?group_id=1284&amp;amp;release_id=8282&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 a terminal Rubyripper should now tell which dependency it&#039;s missing.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
These screenshots are taken with the 0.3 release:&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/0.3/cddb-info.png The Cddb-info tab]&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/0.3/codecs.png The Codecs tab]&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/0.3/other-settings.png The Other settings tab]&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/0.3/ripping-settings.png The Ripping settings tab]&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/0.3/status-window.png The status window]&lt;br /&gt;
&lt;br /&gt;
==Suggestions for next version==&lt;br /&gt;
* &amp;lt;none&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Known Bugs==&lt;br /&gt;
* http://code.google.com/p/rubyripper/issues/list&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. He 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;
&amp;lt;br&amp;gt;&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. He 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 ready, 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.2 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;
== Mac OS/X support==&lt;br /&gt;
Since the lead developer doesn&#039;t have a Mac, he cannot test anything. Therefore support from someone who knows Mac OS/X [[core audio]] very well and can test any code if needed is a necessity. The main differences with Mac OS/X and Linux support are:&lt;br /&gt;
&lt;br /&gt;
* Audio cd&#039;s may have to be unmounted before they can be ripped.&lt;br /&gt;
* Linux doesn&#039;t mount audio cd&#039;s at all.&lt;br /&gt;
* In [[cdparanoia]] an option to set the cdrom device is missing, which is there in Linux.&lt;br /&gt;
&lt;br /&gt;
=Development progress=&lt;br /&gt;
This section was added in order to figure out the right way to implement features into Rubyripper. &lt;br /&gt;
Currently work is being done on:&lt;br /&gt;
* Reworking the &amp;lt;code&amp;gt;Secure_rip&amp;lt;/code&amp;gt; class to allow partial reripping of tracks with problems. This will be a time savior for hard to rip cd&#039;s, however the implementation is not so simple. Now that 0.3 version is released, work has already started on this. The mininum ripping size will be +/- 2,5 MB to prevent cache problems.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://rubyforge.org/projects/rubyripper/ Rubyripper] the official Rubyforge 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;
&lt;br /&gt;
&lt;br /&gt;
[[Category:CD Rippers]]&lt;/div&gt;</summary>
		<author><name>Icheyne</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Rubyripper&amp;diff=16144</id>
		<title>Rubyripper</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Rubyripper&amp;diff=16144"/>
		<updated>2006-12-19T16:10:25Z</updated>

		<summary type="html">&lt;p&gt;Icheyne: updated infobox&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.3&lt;br /&gt;
| preview_release = n/a&lt;br /&gt;
| operating_system = Linux&lt;br /&gt;
| use = Digital Audio Extraction&lt;br /&gt;
| license = GPL &lt;br /&gt;
| website = [http://rubyforge.org/projects/rubyripper/ Rubyforge Website] &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Introduction= &lt;br /&gt;
&lt;br /&gt;
Rubyripper is a digital audio extraction algorithm that uses [[cdparanoia]] 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. &lt;br /&gt;
&lt;br /&gt;
It&#039;s currently available for Linux, BSD should work but is untested. OS X can be supported in the near future if some tester stands up. The source (same as executable) is published under the GPL license.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;UPDATE: New version 0.3 was released on 4 December 2006.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;UPDATE: New version 0.2 was released on 4 August 2006.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;UPDATE: New version 0.1.1 was released on 12 February 2006.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;UPDATE: New version 0.1.0 was released on 5 November 2005.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Features== &lt;br /&gt;
&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;
&lt;br /&gt;
Rubyripper correction mechanism goes beyond that of [[cdparanoia]]. Every track gets ripped at least twice and is byte compared with the &#039;&#039;Ruby cmp&#039;&#039; 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 erronous read of an underlying ripper will produce random results. This seems so far to be correct. A possibility still exists that with randomn results the same result will be wrong. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If the full 1,000 bytes are erronous, than a false repair seems to be highly unlikely since there are &amp;lt;math&amp;gt;1000 \times 256&amp;lt;/math&amp;gt; possibilities in theory. (As a byte consists of 8 bits, 2&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;=256). This would need an infinite amount of trials to match. 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;3 \times 256&amp;lt;/math&amp;gt; possibilities within each of these bytes, really 2 bits could be a problem. This reduces the possibilities to &amp;lt;math&amp;gt;3 \times 2 \times 2 = 12&amp;lt;/math&amp;gt; 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?&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;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 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.&lt;br /&gt;
&lt;br /&gt;
==Installation== &lt;br /&gt;
&lt;br /&gt;
Make sure to have &#039;&#039;cd-discid&#039;&#039;, &#039;&#039;ruby-libglade2&#039;&#039; 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://rubyforge.org/frs/?group_id=1284&amp;amp;release_id=8282&lt;br /&gt;
&lt;br /&gt;
See the README file for installation instructions or just type: make install&lt;br /&gt;
&lt;br /&gt;
If Rubyripper doesn&#039;t start make sure the dependencies are ok. When launched from a terminal rubyripper should now tell which dependency it&#039;s missing.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
These screenshots are taken with the 0.3 release:&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/0.3/cddb-info.png The Cddb-info tab]&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/0.3/codecs.png The Codecs tab]&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/0.3/other-settings.png The Other settings tab]&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/0.3/ripping-settings.png The Ripping settings tab]&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/0.3/status-window.png The status window]&lt;br /&gt;
&lt;br /&gt;
==Suggestions for next version==&lt;br /&gt;
* &amp;lt;none&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Known Bugs==&lt;br /&gt;
* http://code.google.com/p/rubyripper/issues/list&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. He 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;
&amp;lt;br&amp;gt;&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. He 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 ready, 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.2 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. This is used as a communication channel of 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;
== Mac OS/X support==&lt;br /&gt;
Since the lead developer doesn&#039;t have a Mac, he cannot test anything. Therefore support from someone who knows Mac OS/X [[core audio]] very well and can test any code if needed is a necessity. The main differences with Mac OS/X and Linux support are:&lt;br /&gt;
&lt;br /&gt;
* Audio cd&#039;s may have to be unmounted before they can be ripped.&lt;br /&gt;
* Linux doesn&#039;t mount audio cd&#039;s at all.&lt;br /&gt;
* In [[cdparanoia]] an option to set the cdrom device is missing, which is there in Linux.&lt;br /&gt;
&lt;br /&gt;
=Development progress=&lt;br /&gt;
This section was added in order to figure out the right way to implement features into Rubyripper. &lt;br /&gt;
Currently work is being done on:&lt;br /&gt;
* Reworking the &amp;lt;code&amp;gt;Secure_rip&amp;lt;/code&amp;gt; class to allow partial reripping of tracks with problems. This will be a time savior for hard to rip cd&#039;s, however the implementation is not so simple. Now that 0.3 version is released, work has already started on this. The mininum ripping size will be +/- 2,5 MB to prevent cache problems.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://rubyforge.org/projects/rubyripper/ Rubyripper] the official Rubyforge 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;
&lt;br /&gt;
&lt;br /&gt;
[[Category:CD Rippers]]&lt;/div&gt;</summary>
		<author><name>Icheyne</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Rubyripper&amp;diff=16143</id>
		<title>Rubyripper</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Rubyripper&amp;diff=16143"/>
		<updated>2006-12-19T16:09:30Z</updated>

		<summary type="html">&lt;p&gt;Icheyne: updated infobox&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.3&lt;br /&gt;
| operating_system = Linux&lt;br /&gt;
| use = Digital Audio Extraction&lt;br /&gt;
| license = GPL &lt;br /&gt;
| website = [http://rubyforge.org/projects/rubyripper/ Rubyforge Website] &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Introduction= &lt;br /&gt;
&lt;br /&gt;
Rubyripper is a digital audio extraction algorithm that uses [[cdparanoia]] 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. &lt;br /&gt;
&lt;br /&gt;
It&#039;s currently available for Linux, BSD should work but is untested. OS X can be supported in the near future if some tester stands up. The source (same as executable) is published under the GPL license.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;UPDATE: New version 0.3 was released on 4 December 2006.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;UPDATE: New version 0.2 was released on 4 August 2006.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;UPDATE: New version 0.1.1 was released on 12 February 2006.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;UPDATE: New version 0.1.0 was released on 5 November 2005.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Features== &lt;br /&gt;
&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;
&lt;br /&gt;
Rubyripper correction mechanism goes beyond that of [[cdparanoia]]. Every track gets ripped at least twice and is byte compared with the &#039;&#039;Ruby cmp&#039;&#039; 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 erronous read of an underlying ripper will produce random results. This seems so far to be correct. A possibility still exists that with randomn results the same result will be wrong. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If the full 1,000 bytes are erronous, than a false repair seems to be highly unlikely since there are &amp;lt;math&amp;gt;1000 \times 256&amp;lt;/math&amp;gt; possibilities in theory. (As a byte consists of 8 bits, 2&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;=256). This would need an infinite amount of trials to match. 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;3 \times 256&amp;lt;/math&amp;gt; possibilities within each of these bytes, really 2 bits could be a problem. This reduces the possibilities to &amp;lt;math&amp;gt;3 \times 2 \times 2 = 12&amp;lt;/math&amp;gt; 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?&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;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 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.&lt;br /&gt;
&lt;br /&gt;
==Installation== &lt;br /&gt;
&lt;br /&gt;
Make sure to have &#039;&#039;cd-discid&#039;&#039;, &#039;&#039;ruby-libglade2&#039;&#039; 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://rubyforge.org/frs/?group_id=1284&amp;amp;release_id=8282&lt;br /&gt;
&lt;br /&gt;
See the README file for installation instructions or just type: make install&lt;br /&gt;
&lt;br /&gt;
If Rubyripper doesn&#039;t start make sure the dependencies are ok. When launched from a terminal rubyripper should now tell which dependency it&#039;s missing.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
These screenshots are taken with the 0.3 release:&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/0.3/cddb-info.png The Cddb-info tab]&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/0.3/codecs.png The Codecs tab]&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/0.3/other-settings.png The Other settings tab]&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/0.3/ripping-settings.png The Ripping settings tab]&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/0.3/status-window.png The status window]&lt;br /&gt;
&lt;br /&gt;
==Suggestions for next version==&lt;br /&gt;
* &amp;lt;none&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Known Bugs==&lt;br /&gt;
* http://code.google.com/p/rubyripper/issues/list&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. He 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;
&amp;lt;br&amp;gt;&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. He 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 ready, 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.2 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. This is used as a communication channel of 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;
== Mac OS/X support==&lt;br /&gt;
Since the lead developer doesn&#039;t have a Mac, he cannot test anything. Therefore support from someone who knows Mac OS/X [[core audio]] very well and can test any code if needed is a necessity. The main differences with Mac OS/X and Linux support are:&lt;br /&gt;
&lt;br /&gt;
* Audio cd&#039;s may have to be unmounted before they can be ripped.&lt;br /&gt;
* Linux doesn&#039;t mount audio cd&#039;s at all.&lt;br /&gt;
* In [[cdparanoia]] an option to set the cdrom device is missing, which is there in Linux.&lt;br /&gt;
&lt;br /&gt;
=Development progress=&lt;br /&gt;
This section was added in order to figure out the right way to implement features into Rubyripper. &lt;br /&gt;
Currently work is being done on:&lt;br /&gt;
* Reworking the &amp;lt;code&amp;gt;Secure_rip&amp;lt;/code&amp;gt; class to allow partial reripping of tracks with problems. This will be a time savior for hard to rip cd&#039;s, however the implementation is not so simple. Now that 0.3 version is released, work has already started on this. The mininum ripping size will be +/- 2,5 MB to prevent cache problems.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://rubyforge.org/projects/rubyripper/ Rubyripper] the official Rubyforge 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;
&lt;br /&gt;
&lt;br /&gt;
[[Category:CD Rippers]]&lt;/div&gt;</summary>
		<author><name>Icheyne</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Rubyripper_Debian_and_Ubuntu_Based_Distro_Installation&amp;diff=15788</id>
		<title>Rubyripper Debian and Ubuntu Based Distro Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Rubyripper_Debian_and_Ubuntu_Based_Distro_Installation&amp;diff=15788"/>
		<updated>2006-12-05T19:16:57Z</updated>

		<summary type="html">&lt;p&gt;Icheyne: Out of date since v0.3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Icheyne</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Rubyripper&amp;diff=15787</id>
		<title>Rubyripper</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Rubyripper&amp;diff=15787"/>
		<updated>2006-12-05T19:15:45Z</updated>

		<summary type="html">&lt;p&gt;Icheyne: Ubuntu installation instructions are unnecessary since v0.3&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.2&lt;br /&gt;
| preview_release = 0.1.1&lt;br /&gt;
| operating_system = Linux&lt;br /&gt;
| use = Digital Audio Extraction&lt;br /&gt;
| license = GPL &lt;br /&gt;
| website = [http://rubyforge.org/projects/rubyripper/ Rubyforge Website] &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Introduction= &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
It&#039;s currently available for Linux, BSD should work but is untested. OS X can be supported in the near future if some tester stands up. The source (same as executable) is published under the GPL license.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;UPDATE: New version 0.3 was released on 4 December 2006.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;UPDATE: New version 0.2 was released on 4 August 2006.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;UPDATE: New version 0.1.1 was released on 12 February 2006.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;UPDATE: New version 0.1.0 was released on 5 November 2005.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Features== &lt;br /&gt;
&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;
&lt;br /&gt;
Rubyripper correction mechanism goes beyond that of [[cdparanoia]]. Every track gets ripped at least twice and is byte compared with the &#039;&#039;Ruby cmp&#039;&#039; 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 erronous read of an underlying ripper will produce random results. This seems so far to be correct. A possibility still exists that with randomn results the same result will be wrong. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If the full 1,000 bytes are erronous, than a false repair seems to be highly unlikely since there are &amp;lt;math&amp;gt;1000 \times 256&amp;lt;/math&amp;gt; possibilities in theory. (As a byte consists of 8 bits, 2&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;=256). This would need an infinite amount of trials to match. 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;3 \times 256&amp;lt;/math&amp;gt; possibilities within each of these bytes, really 2 bits could be a problem. This reduces the possibilities to &amp;lt;math&amp;gt;3 \times 2 \times 2 = 12&amp;lt;/math&amp;gt; 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?&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;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 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.&lt;br /&gt;
&lt;br /&gt;
==Installation== &lt;br /&gt;
&lt;br /&gt;
Make sure to have &#039;&#039;cd-discid&#039;&#039;, &#039;&#039;ruby-libglade2&#039;&#039; 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://rubyforge.org/frs/?group_id=1284&amp;amp;release_id=8282&lt;br /&gt;
&lt;br /&gt;
See the README file for installation instructions or just type: make install&lt;br /&gt;
&lt;br /&gt;
If Rubyripper doesn&#039;t start make sure the dependencies are ok. When launched from a terminal rubyripper should now tell which dependency it&#039;s missing.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
The theme used in the screenshots is GTK-Qt-theme.&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/Cddb-info_GTK-QT-theme.png The Cddb-info tab]&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/Codecs_GTK-QT-theme.png The Codecs tab]&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/Other-settings_GTK-QT-theme.png The Other settings tab]&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/Ripping-settings_GTK-QT-theme.png The Ripping settings tab]&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/Status_GTK-QT-theme.png The status tab]&lt;br /&gt;
&lt;br /&gt;
==Suggestions for next version==&lt;br /&gt;
Please post any ideas, bugs or wishes at the Google bug tracker.&lt;br /&gt;
* http://code.google.com/p/rubyripper/issues/list&lt;br /&gt;
&lt;br /&gt;
==Known Bugs==&lt;br /&gt;
* &amp;lt;none&amp;gt;&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. He 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;
&amp;lt;br&amp;gt;&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. He 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 ready, 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.2 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. And 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. This is used as a communication channel of 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;
== Mac OS/X support==&lt;br /&gt;
Since the lead developer doesn&#039;t have a Mac, he cannot test anything. Therefore support from someone who knows Mac OS/X [[core audio]] very well and can test any code if needed is a necessity. The main differences with Mac OS/X and Linux support are:&lt;br /&gt;
&lt;br /&gt;
* Audio cd&#039;s may have to be unmounted before they can be ripped.&lt;br /&gt;
* Linux doesn&#039;t mount audio cd&#039;s at all.&lt;br /&gt;
* In [[cdparanoia]] an option to set the cdrom device is missing, which is there in Linux.&lt;br /&gt;
&lt;br /&gt;
=Development progress=&lt;br /&gt;
This section was added in order to figure out the right way to implement features into Rubyripper. &lt;br /&gt;
Currently work is being done on:&lt;br /&gt;
* The tracklist presentation. Someone on the forums suggested, the interface isn&#039;t perfect. It was improved by opening the main window with a fixed size. The tracklist becomes scrollable, if it is to large too fit. Screenshots:&lt;br /&gt;
** [http://b-woudstra.speedlinq.nl/screenshots/track_selection1.png New tracklist loading 1]&lt;br /&gt;
** [http://b-woudstra.speedlinq.nl/screenshots/track_selection2.png New tracklist loading 2]&lt;br /&gt;
* A separate status window was added, instead of a tab. This can be seen in the previous screenshots. &lt;br /&gt;
* He also removed the status bars and the status tab from the main view. They were moved to a separate ripping window, like [[EAC]]. The task that is being decided upon is, which buttons should remain visible. If you have any ideas how to improve the GUI shown in the next screenshot, feel free to share your opinion!&lt;br /&gt;
** [http://b-woudstra.speedlinq.nl/screenshots/status_window.png New separate status window]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://rubyforge.org/projects/rubyripper/ Rubyripper] the official Rubyforge 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;
&lt;br /&gt;
&lt;br /&gt;
[[Category:CD Rippers]]&lt;/div&gt;</summary>
		<author><name>Icheyne</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=User_talk:Icheyne&amp;diff=15680</id>
		<title>User talk:Icheyne</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=User_talk:Icheyne&amp;diff=15680"/>
		<updated>2006-11-29T14:45:18Z</updated>

		<summary type="html">&lt;p&gt;Icheyne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Blog== &lt;br /&gt;
Cool I like your blog there a lot of interesting topics there. --[[User:HotshotGG|HotshotGG]] 18:03, 28 Nov 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
Thanks Hotshot. Your user page is interesting too. --[[User:Icheyne|Icheyne]] 08:45, 29 November 2006 (CST)&lt;/div&gt;</summary>
		<author><name>Icheyne</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=User_talk:HotshotGG&amp;diff=15677</id>
		<title>User talk:HotshotGG</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=User_talk:HotshotGG&amp;diff=15677"/>
		<updated>2006-11-29T09:48:36Z</updated>

		<summary type="html">&lt;p&gt;Icheyne: hi&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Thanks for clearing up my pages. I like your bio and taste in music... --[[User:Icheyne|Icheyne]] 03:48, 29 November 2006 (CST)&lt;br /&gt;
&lt;br /&gt;
2006-04-06 22h43 Norz: Hi! Best wishes to you &amp;amp; Vorbis! :)&lt;br /&gt;
&lt;br /&gt;
==Deletion Articles==&lt;br /&gt;
&lt;br /&gt;
So, my templates that the community has mostly used and help give an overview of articles are &amp;quot;stupid&amp;quot;. Okay, fair game. The articles [[Ableton Live]], [[Ardour]]... are stupid. Stop making them.&lt;br /&gt;
&lt;br /&gt;
Polite, isn&#039;t it? {{User:Elliottmobile/sig2}} 03:22, 2 October 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
They are &amp;quot;stupid&amp;quot; in a sense that HA does no co-exist on the large scale that wikipedia does. Some of your templates are useful, but we have no use for your templates and the fact that you wish to enforce them on others. This is the only way you are making contributions to the wiki. Quite frankly it&#039;s annoying our wiki editors, my self included. Maybe you care to actually write some pages? yes? When Beto contributed the Software Infobox to the community he did it out of necessity. HA does not run things in the same manner the way wikipedia does. It&#039;s based upon the best interest of the community at hand. Are References necessary for pages? yes? can we expand the wiki based upon the particular interest of the community as a whole? yes? we can. Do we need to strictly enforce rules on a grand scale? no.  There are only four to five dedicated user that make contributions to our wiki anyhow do the due to the time needed and the technical skills required to translate complicated matters into plain english.  --[[User:HotshotGG|HotshotGG]] 16:19, 2 October 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
[http://wiki.hydrogenaudio.org/index.php?title=Special%3AContributions&amp;amp;offset=0&amp;amp;limit=50&amp;amp;target=Elliottmobile&amp;amp;namespace=0 A list of all my article-only contributions.] All I contribute is templates, now? {{User:Elliottmobile/sig2}} 14:59, 2 October 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
You are just moving stuff around and maintaining things from what I can tell by those edits. You are just contributing to the templates/maintenence nothing else. If you are only job is police the wiki like, such expect to recieve more critisism. You single handledly violated the wiki policy anyway, by interjecting personal opinion into a page that was unecessary. Save your opionions for your own personal user page and respect other people space. Once you have done so I will be a little more polite. I think a few others would agree. --[[User:HotshotGG|HotshotGG]] 17:25 2 October 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
#That was before policy even existed here.&lt;br /&gt;
#Point me to the mystical &amp;quot;few others&amp;quot; you talk about, please.&lt;br /&gt;
{{User:Elliottmobile/sig2}} 06:02, 3 October 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
Canar for example. It&#039;s very simple stay off my case and don&#039;t violate your own policies. --[[User:HotshotGG|HotshotGG]] 16:26, 4 October 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
Apart from you, there&#039;s Canar. So, other, not others. {{User:Elliottmobile/sig2}} 03:41, 4 October 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
I am through aruging about this, but the bottom line is you don&#039;t run this wiki. Jan is the only adminstrator here in charge of it. Stop being a pompous asshole acting like you do. It&#039;s a community wiki. --[[User:HotshotGG|HotshotGG]] 16:19, 6 October 2006 (CDT)&lt;br /&gt;
:But isn&#039;t it funny how you force your viewpoint, contradicting yourself? Community wiki, indeed. {{User:Elliottmobile/sig2}} 06:03, 7 October 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
I don&#039;t force my viewpoints on anyway. If they agree with me then it stands.  I reserve that right, because I make major conntributions. If they don&#039;t agree with me they can fix or adjust the pages. Jan reserves that right too, he&#039;s the admin. Populean reserves that right as well, because he is a major contributer. You don&#039;t deserve any right, because you haven&#039;t made any significant contributions, you violate your own policies, and you edit this wiki like it&#039;s your own. You make more work for everyone else. --[[User:HotshotGG|HotshotGG]] 14:06, 8 October 2006 (CDT)&lt;/div&gt;</summary>
		<author><name>Icheyne</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=User:Icheyne&amp;diff=15675</id>
		<title>User:Icheyne</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=User:Icheyne&amp;diff=15675"/>
		<updated>2006-11-28T21:44:42Z</updated>

		<summary type="html">&lt;p&gt;Icheyne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Iain Cheyne&lt;br /&gt;
&lt;br /&gt;
http://cheyne.net/blog&lt;/div&gt;</summary>
		<author><name>Icheyne</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Rubyripper_Debian_and_Ubuntu_Based_Distro_Installation&amp;diff=15674</id>
		<title>Rubyripper Debian and Ubuntu Based Distro Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Rubyripper_Debian_and_Ubuntu_Based_Distro_Installation&amp;diff=15674"/>
		<updated>2006-11-28T21:41:37Z</updated>

		<summary type="html">&lt;p&gt;Icheyne: /* Development Version */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Repositories ==&lt;br /&gt;
Add [http://ubuntuguide.org/wiki/Ubuntu_Edgy#How_to_add_extra_repositories extra repositories]&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;## Christian Marillat&#039;s Mult-Media Repository for Unstable&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;deb http://www.debian-multimedia.org sid main&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;## Christian Marillat&#039;s Mult-Media Repository for Unstable - Experimental Staging&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;deb http://www.debian-multimedia.org experimental main&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;## RareWares/Debian Multi-Media Repository for Unstable - Experimental Staging&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;deb http://www.rarewares.org/debian/packages/experimental/ ./&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Then you need to import Christian Marillat&#039;s authentication key&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys 1F41B907 | sudo apt-key add -&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stable Version Install ==&lt;br /&gt;
&lt;br /&gt;
; Update and then install Rubyripper&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo apt-get install rubyripper&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Run Rubyripper&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;rubyripper_gtk2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Version ==&lt;br /&gt;
&lt;br /&gt;
; Open a console and type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get install libfreedb-ruby libglade2-ruby lame cd-discid&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Download the files&lt;br /&gt;
&lt;br /&gt;
http://rubyripper.googlecode.com/svn/trunk/&lt;br /&gt;
&lt;br /&gt;
; Run from directory&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;cd &amp;lt;download_dir&amp;gt; (Go to the directory where you saved the downloaded archive)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;chmod +x *.rb (Make all .rb files executable)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;./rubyripper_gtk.rb (Launch gtk2 user interface)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;./rubyripper_cli.rb (Launch command line user interface)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==External links== &lt;br /&gt;
* [http://www.rarewares.org/debian/packages/unstable/rubyripper_0.2-0rarewares1_i386.deb Debian Package] unstable Debian compile of Rubyripper.&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Icheyne</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Rubyripper_Debian_and_Ubuntu_Based_Distro_Installation&amp;diff=15673</id>
		<title>Rubyripper Debian and Ubuntu Based Distro Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Rubyripper_Debian_and_Ubuntu_Based_Distro_Installation&amp;diff=15673"/>
		<updated>2006-11-28T21:40:36Z</updated>

		<summary type="html">&lt;p&gt;Icheyne: /* Stable Version Install */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Repositories ==&lt;br /&gt;
Add [http://ubuntuguide.org/wiki/Ubuntu_Edgy#How_to_add_extra_repositories extra repositories]&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;## Christian Marillat&#039;s Mult-Media Repository for Unstable&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;deb http://www.debian-multimedia.org sid main&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;## Christian Marillat&#039;s Mult-Media Repository for Unstable - Experimental Staging&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;deb http://www.debian-multimedia.org experimental main&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;## RareWares/Debian Multi-Media Repository for Unstable - Experimental Staging&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;deb http://www.rarewares.org/debian/packages/experimental/ ./&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Then you need to import Christian Marillat&#039;s authentication key&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys 1F41B907 | sudo apt-key add -&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stable Version Install ==&lt;br /&gt;
&lt;br /&gt;
; Update and then install Rubyripper&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo apt-get install rubyripper&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Run Rubyripper&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;rubyripper_gtk2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Version ==&lt;br /&gt;
&lt;br /&gt;
; Open a console and type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get install libfreedb-ruby libglade2-ruby lame cd-discid&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Download the files&lt;br /&gt;
&lt;br /&gt;
http://rubyripper.googlecode.com/svn/trunk/&lt;br /&gt;
&lt;br /&gt;
; Run from directory&lt;br /&gt;
&lt;br /&gt;
* Make the files rubyripper_gtk2 and rubyripper_cli executable (&amp;lt;code&amp;gt;chmod +x &amp;lt;filename&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;./rubyripper_gtk2.rb&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;./rubyripper_cli.rb&amp;lt;/code&amp;gt; can be used to launch each&lt;br /&gt;
* &amp;lt;code&amp;gt;ruby rubyripper_gtk2.rb&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ruby rubyripper_cli.rb should also work&lt;br /&gt;
&lt;br /&gt;
==External links== &lt;br /&gt;
* [http://www.rarewares.org/debian/packages/unstable/rubyripper_0.2-0rarewares1_i386.deb Debian Package] unstable Debian compile of Rubyripper.&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Icheyne</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Rubyripper_Debian_and_Ubuntu_Based_Distro_Installation&amp;diff=15672</id>
		<title>Rubyripper Debian and Ubuntu Based Distro Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Rubyripper_Debian_and_Ubuntu_Based_Distro_Installation&amp;diff=15672"/>
		<updated>2006-11-28T21:40:18Z</updated>

		<summary type="html">&lt;p&gt;Icheyne: /* Repositories */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Repositories ==&lt;br /&gt;
Add [http://ubuntuguide.org/wiki/Ubuntu_Edgy#How_to_add_extra_repositories extra repositories]&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;## Christian Marillat&#039;s Mult-Media Repository for Unstable&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;deb http://www.debian-multimedia.org sid main&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;## Christian Marillat&#039;s Mult-Media Repository for Unstable - Experimental Staging&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;deb http://www.debian-multimedia.org experimental main&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;## RareWares/Debian Multi-Media Repository for Unstable - Experimental Staging&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;deb http://www.rarewares.org/debian/packages/experimental/ ./&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Then you need to import Christian Marillat&#039;s authentication key&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys 1F41B907 | sudo apt-key add -&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stable Version Install ==&lt;br /&gt;
&lt;br /&gt;
; Update and then install Rubyripper&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get install rubyripper&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Run Rubyripper&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;rubyripper_gtk2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Version ==&lt;br /&gt;
&lt;br /&gt;
; Open a console and type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get install libfreedb-ruby libglade2-ruby lame cd-discid&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Download the files&lt;br /&gt;
&lt;br /&gt;
http://rubyripper.googlecode.com/svn/trunk/&lt;br /&gt;
&lt;br /&gt;
; Run from directory&lt;br /&gt;
&lt;br /&gt;
* Make the files rubyripper_gtk2 and rubyripper_cli executable (&amp;lt;code&amp;gt;chmod +x &amp;lt;filename&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;./rubyripper_gtk2.rb&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;./rubyripper_cli.rb&amp;lt;/code&amp;gt; can be used to launch each&lt;br /&gt;
* &amp;lt;code&amp;gt;ruby rubyripper_gtk2.rb&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ruby rubyripper_cli.rb should also work&lt;br /&gt;
&lt;br /&gt;
==External links== &lt;br /&gt;
* [http://www.rarewares.org/debian/packages/unstable/rubyripper_0.2-0rarewares1_i386.deb Debian Package] unstable Debian compile of Rubyripper.&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Icheyne</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Rubyripper_Debian_and_Ubuntu_Based_Distro_Installation&amp;diff=15671</id>
		<title>Rubyripper Debian and Ubuntu Based Distro Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Rubyripper_Debian_and_Ubuntu_Based_Distro_Installation&amp;diff=15671"/>
		<updated>2006-11-28T21:38:13Z</updated>

		<summary type="html">&lt;p&gt;Icheyne: Improved&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Repositories ==&lt;br /&gt;
Add [http://ubuntuguide.org/wiki/Ubuntu_Edgy#How_to_add_extra_repositories extra repositories]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;## Christian Marillat&#039;s Mult-Media Repository for Unstable&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;deb http://www.debian-multimedia.org sid main&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;## Christian Marillat&#039;s Mult-Media Repository for Unstable - Experimental Staging&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;deb http://www.debian-multimedia.org experimental main&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;## RareWares/Debian Multi-Media Repository for Unstable - Experimental Staging&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;deb http://www.rarewares.org/debian/packages/experimental/ ./&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Then you need to import Christian Marillat&#039;s authentication key&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys 1F41B907 | sudo apt-key add -&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stable Version Install ==&lt;br /&gt;
&lt;br /&gt;
; Update and then install Rubyripper&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get install rubyripper&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Run Rubyripper&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;rubyripper_gtk2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Version ==&lt;br /&gt;
&lt;br /&gt;
; Open a console and type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get install libfreedb-ruby libglade2-ruby lame cd-discid&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Download the files&lt;br /&gt;
&lt;br /&gt;
http://rubyripper.googlecode.com/svn/trunk/&lt;br /&gt;
&lt;br /&gt;
; Run from directory&lt;br /&gt;
&lt;br /&gt;
* Make the files rubyripper_gtk2 and rubyripper_cli executable (&amp;lt;code&amp;gt;chmod +x &amp;lt;filename&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;./rubyripper_gtk2.rb&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;./rubyripper_cli.rb&amp;lt;/code&amp;gt; can be used to launch each&lt;br /&gt;
* &amp;lt;code&amp;gt;ruby rubyripper_gtk2.rb&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ruby rubyripper_cli.rb should also work&lt;br /&gt;
&lt;br /&gt;
==External links== &lt;br /&gt;
* [http://www.rarewares.org/debian/packages/unstable/rubyripper_0.2-0rarewares1_i386.deb Debian Package] unstable Debian compile of Rubyripper.&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Icheyne</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=User:Icheyne&amp;diff=15670</id>
		<title>User:Icheyne</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=User:Icheyne&amp;diff=15670"/>
		<updated>2006-11-28T15:07:32Z</updated>

		<summary type="html">&lt;p&gt;Icheyne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Iain Cheyne&lt;br /&gt;
http://cheyne.net/blog&lt;/div&gt;</summary>
		<author><name>Icheyne</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Rubyripper_Debian_and_Ubuntu_Based_Distro_Installation&amp;diff=15653</id>
		<title>Rubyripper Debian and Ubuntu Based Distro Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Rubyripper_Debian_and_Ubuntu_Based_Distro_Installation&amp;diff=15653"/>
		<updated>2006-11-27T22:20:37Z</updated>

		<summary type="html">&lt;p&gt;Icheyne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;;  First open edit your sources.list file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;sudo cp -p /etc/apt/sources.list /etc/apt/sources.list_backup&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;sudo nano /etc/apt/sources.list&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;  Then paste (Shift+Insert) the following at the bottom of sources.list&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;## Christian Marillat&#039;s Mult-Media Repository for Unstable&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;deb http://www.debian-multimedia.org sid main&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;## Christian Marillat&#039;s Mult-Media Repository for Unstable - Experimental Staging&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;deb http://www.debian-multimedia.org experimental main&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;## RareWares/Debian Multi-Media Repository for Unstable - Experimental Staging&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;deb http://www.rarewares.org/debian/packages/experimental/ ./&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Then save the file (Ctrl+x) and exit.&lt;br /&gt;
&lt;br /&gt;
; Then you need to import Christian Marillat&#039;s authentication key&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys 1F41B907 | sudo apt-key add -&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Then update and install Rubyripper&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;sudo apt-get update&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;sudo apt-get install rubyripper&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Then run Rubyripper&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;rubyripper_gtk2&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Icheyne</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Rubyripper_Debian_and_Ubuntu_Based_Distro_Installation&amp;diff=15652</id>
		<title>Rubyripper Debian and Ubuntu Based Distro Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Rubyripper_Debian_and_Ubuntu_Based_Distro_Installation&amp;diff=15652"/>
		<updated>2006-11-27T22:20:14Z</updated>

		<summary type="html">&lt;p&gt;Icheyne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;;  First open edit your sources.list file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;sudo cp -p /etc/apt/sources.list /etc/apt/sources.list_backup&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;sudo nano /etc/apt/sources.list&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;  Then paste (Shift+Insert) the following at the bottom of sources.list&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;## Christian Marillat&#039;s Mult-Media Repository for Unstable&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;deb http://www.debian-multimedia.org sid main&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;## Christian Marillat&#039;s Mult-Media Repository for Unstable - Experimental Staging&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;deb http://www.debian-multimedia.org experimental main&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;## RareWares/Debian Multi-Media Repository for Unstable - Experimental Staging&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;deb http://www.rarewares.org/debian/packages/experimental/ ./&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then save the file (Ctrl+x) and exit.&lt;br /&gt;
&lt;br /&gt;
; Then you need to import Christian Marillat&#039;s authentication key&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys 1F41B907 | sudo apt-key add -&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Then update and install Rubyripper&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;sudo apt-get update&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;sudo apt-get install rubyripper&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Then run Rubyripper&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;rubyripper_gtk2&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Icheyne</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Rubyripper_Debian_and_Ubuntu_Based_Distro_Installation&amp;diff=15651</id>
		<title>Rubyripper Debian and Ubuntu Based Distro Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Rubyripper_Debian_and_Ubuntu_Based_Distro_Installation&amp;diff=15651"/>
		<updated>2006-11-27T22:19:44Z</updated>

		<summary type="html">&lt;p&gt;Icheyne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;;  First open edit your sources.list file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;sudo cp -p /etc/apt/sources.list /etc/apt/sources.list_backup&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;sudo nano /etc/apt/sources.list&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;  Then paste (Shift+Insert) the following at the bottom of sources.list&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;## Christian Marillat&#039;s Mult-Media Repository for Unstable&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;deb http://www.debian-multimedia.org sid main&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;## Christian Marillat&#039;s Mult-Media Repository for Unstable - Experimental Staging&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;deb http://www.debian-multimedia.org experimental main&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;## RareWares/Debian Multi-Media Repository for Unstable - Experimental Staging&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;deb http://www.rarewares.org/debian/packages/experimental/ ./&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then save the file (Ctrl+x) and exit.&lt;br /&gt;
&lt;br /&gt;
; Then you need to import Christian Marillat&#039;s authentication key&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys 1F41B907 | sudo apt-key add -&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Then update and install Rubyripper&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;sudo apt-get update&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;sudo apt-get install rubyripper&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Then run Rubyripper&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;rubyripper_gtk2&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Icheyne</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Rubyripper&amp;diff=15650</id>
		<title>Rubyripper</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Rubyripper&amp;diff=15650"/>
		<updated>2006-11-27T21:58:38Z</updated>

		<summary type="html">&lt;p&gt;Icheyne: /* Installation */ Debian instructions&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.2&lt;br /&gt;
| preview_release = 0.1.1&lt;br /&gt;
| operating_system = Linux&lt;br /&gt;
| use = Digital Audio Extraction&lt;br /&gt;
| license = GPL &lt;br /&gt;
| website = [http://rubyforge.org/projects/rubyripper/ Rubyforge Website] &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Introduction= &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
It&#039;s currently available for Linux (partial BSD support). OS X will most likely be supported in the near future. The source (same as executable) is published under the GPL license.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;UPDATE: New version 0.2 was released on 4 August 2006.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;UPDATE: New version 0.1.1 was released on 12 February 2006.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;UPDATE: New version 0.1.0 was released on 5 November 2005.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Features== &lt;br /&gt;
&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;ruby-freedb&#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;
&lt;br /&gt;
Rubyripper correction mechanism goes beyond that of [[cdparanoia]]. Every track gets ripped at least twice and is byte compared with the &#039;&#039;Ruby cmp&#039;&#039; 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 erronous read of an underlying ripper will produce random results. This seems so far to be correct. A possibility still exists that with randomn results the same result will be wrong. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If the full 1,000 bytes are erronous, than a false repair seems to be highly unlikely since there are &amp;lt;math&amp;gt;1000 \times 256&amp;lt;/math&amp;gt; possibilities in theory. (As a byte consists of 8 bits, 2&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;=256). This would need an infinite amount of trials to match. 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;3 \times 256&amp;lt;/math&amp;gt; possibilities within each of these bytes, really 2 bits could be a problem. This reduces the possibilities to &amp;lt;math&amp;gt;3 \times 2 \times 2 = 12&amp;lt;/math&amp;gt; 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?&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;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 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.&lt;br /&gt;
&lt;br /&gt;
==Installation== &lt;br /&gt;
&lt;br /&gt;
Make sure to have &#039;&#039;ruby-freedb&#039;&#039;, &#039;&#039;ruby-libglade2&#039;&#039; and [[cdparanoia]] or cdda2wav 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://rubyforge.org/frs/?group_id=1284&amp;amp;release_id=6293&lt;br /&gt;
&lt;br /&gt;
Documentation of some of the ripping logic used can be found at: (somewhat dated)&amp;lt;br&amp;gt;&lt;br /&gt;
http://rubyforge.org/docman/view.php/1284/310/Rubyripper&#039;s%20ripping%20logic.pdf&lt;br /&gt;
&lt;br /&gt;
Currently there isn&#039;t an official installer available. Usage from a terminal or console: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;cd &amp;lt;download_dir&amp;gt; (Go to the directory where you saved the downloaded archive)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;tar xfj &amp;lt;filename_download&amp;gt; (Unpack the archive)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;cd rubyripper-&amp;lt;version&amp;gt; (Move into the just unpacked directory)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;chmod +x *.rb (Make all .rb files executable)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;./rubyripper_gtk.rb (Launch gtk2 user interface)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;./rubyripper_cli.rb (Launch command line user interface)&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 a terminal rubyripper should now tell which dependency it&#039;s missing.&lt;br /&gt;
&lt;br /&gt;
[[Debian- and Ubuntu-Based Distro Installation Instructions]]&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
The theme used in the screenshots is GTK-Qt-theme.&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/Cddb-info_GTK-QT-theme.png The Cddb-info tab]&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/Codecs_GTK-QT-theme.png The Codecs tab]&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/Other-settings_GTK-QT-theme.png The Other settings tab]&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/Ripping-settings_GTK-QT-theme.png The Ripping settings tab]&lt;br /&gt;
* [http://b-woudstra.speedlinq.nl/screenshots/Status_GTK-QT-theme.png The status tab]&lt;br /&gt;
&lt;br /&gt;
==Suggestions for next version==&lt;br /&gt;
* Try to rip only parts that contain errors to save time&lt;br /&gt;
* Erronous parts should be matched more than once&lt;br /&gt;
* OS X support. The only developer needs some help, he does not have a Mac. A Mac user could help to get the cli-version working. A ruby programmer could help to make the GUI for OS X. The lead developer would be glad to add support for this task.&lt;br /&gt;
* Let the user choose which freedb hit he/she will use&lt;br /&gt;
&lt;br /&gt;
==Known Bugs==&lt;br /&gt;
*If the first trial of a track has a different size than the second track, it assumes that the size of the first track is right. We don&#039;t know that for sure.&lt;br /&gt;
&lt;br /&gt;
&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. He 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;
&amp;lt;br&amp;gt;&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. He 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 ready, 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.2 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 shouldn&#039;t be difficult to make. 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;. Being the only lead developer, the hope is you will be consistent with the current GTK2 interface design. If there are valid reasons to make any adjustments, please consult with him first. From a starting point it would be best to use the current GTK2 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;
What requirements would code for a new GUI have to work correctly with the Rubyripper codebase?&lt;br /&gt;
# Load the Rubyripper codebase -&amp;gt; &amp;lt;code&amp;gt;&#039;require ./rr_lib.rb&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Make a class of the GUI code, we will later pass this to the Rubyripper codebase.&lt;br /&gt;
# Get info from the user which cdrom should be used (load it from &amp;lt;code&amp;gt;$HOME/rubyripper_settings&amp;lt;/code&amp;gt; if it exists)&lt;br /&gt;
# Start a new instance of Cddb class -&amp;gt; @instance = Cddb.new(cdrom &amp;lt;string&amp;gt;, self &amp;lt;class&amp;gt;, multiple_freedb_hits? &amp;lt;bool&amp;gt;, verbose? &amp;lt;bool&amp;gt;)&lt;br /&gt;
# Test if @instance.disc_ok &amp;lt;bool&amp;gt; is true. If so, you can use @instance.track_numbers &amp;lt;int&amp;gt; and @instance.tracks_length &amp;lt;string&amp;gt; to update the amount and playlength of the tracks into the GUI. Also start @instance.make_internet_contact()&lt;br /&gt;
# Test if @instance.internet_ok &amp;lt;bool&amp;gt; is true. If so, update the info of @instance.artist &amp;lt;string&amp;gt;, @instance.album &amp;lt;string&amp;gt;, @instance.year &amp;lt;string&amp;gt;, @instance.genre &amp;lt;string&amp;gt; and tracklist &amp;lt;array_of_strings&amp;gt; in the GUI.&lt;br /&gt;
# As soon as the user wants to start the ripping process, start a new instance of the Rubyripper class. This is done by passing the settings Hash as an argument. &#039;&#039;(In other languages sometimes called a dictionary)&#039;&#039;&lt;br /&gt;
# The hash should contain all settings: &amp;lt;code&amp;gt;&lt;br /&gt;
#* @settings[&#039;instance&#039;] = the Gui instance -&amp;gt; self&lt;br /&gt;
#* @settings[&#039;cd_info&#039;] = the Cddb instance -&amp;gt; @instance&lt;br /&gt;
#* @settings[&#039;verbose&#039;] = bool&lt;br /&gt;
#* @settings[&#039;debug&#039;] = bool&lt;br /&gt;
#* @settings[&#039;flac&#039;] = bool&lt;br /&gt;
#* @settings[&#039;vorbis&#039;] = bool&lt;br /&gt;
#* @settings[&#039;mp3&#039;] = bool&lt;br /&gt;
#* @settings[&#039;wav&#039;] = bool&lt;br /&gt;
#* @settings[&#039;flacsettings&#039;] = string&lt;br /&gt;
#* @settings[&#039;vorbissettings&#039;] = string&lt;br /&gt;
#* @settings[&#039;mp3settings&#039;] = string&lt;br /&gt;
#* @settings[&#039;playlist&#039;] = bool (m3u playlist wanted?)&lt;br /&gt;
#* @settings[&#039;use_threading&#039;] = bool (ripping and encoding don&#039;t wait for each other)&lt;br /&gt;
#* @settings[&#039;ripper&#039;] = string (cdda2wav or cdparanoia)&lt;br /&gt;
#* @settings[&#039;rippersettings&#039;] = string or false&lt;br /&gt;
#* @settings[&#039;max_tries&#039;] = int&lt;br /&gt;
#* @settings[&#039;cdrom&#039;] = string (same as the one passed to Cddb instance)&lt;br /&gt;
#* @settings[&#039;offset&#039;] = int&lt;br /&gt;
#* @settings[&#039;temp_dir&#039;] = string	&lt;br /&gt;
#* @settings[&#039;destination_dir&#039;] = string&lt;br /&gt;
#* @settings[&#039;save_log&#039;] = bool&lt;br /&gt;
#* @settings[&#039;tracklist&#039;] = array of integers (which tracks should be ripped) &amp;lt;/code&amp;gt;&lt;br /&gt;
# All communication back to the GUI happens via the update function, that should be in the GUI, accepting two parameters: modus &amp;lt;string&amp;gt; and value &amp;lt;can be anything, dependent on the modus&amp;gt;. Notice that this is a great ruby feature! The different modus are:&lt;br /&gt;
#* &amp;lt;code&amp;gt;ripping_progress&amp;lt;/code&amp;gt;. value is a float. &amp;lt;math&amp;gt;100 % = 1.0. &amp;lt;/math&amp;gt; Used to update the progress bar.&lt;br /&gt;
#* &amp;lt;code&amp;gt;encoding_progress&amp;lt;/code&amp;gt;. value is a float. &amp;lt;math&amp;gt;100 % = 1.0.&amp;lt;/math&amp;gt; Used to update the progress bar.&lt;br /&gt;
#* &amp;lt;code&amp;gt;log_change&amp;lt;/code&amp;gt;. value is a string. Used to update the status screen.&lt;br /&gt;
#* &amp;lt;code&amp;gt;track_finished.&amp;lt;/code&amp;gt; value is an integer. Used to deselect the track in the GUI.&lt;br /&gt;
#* &amp;lt;code&amp;gt;finished.&amp;lt;/code&amp;gt; value is not important. This means that the ripping and encoding are finished. Used to unlock the GUI-buttons.&lt;br /&gt;
#* &amp;lt;code&amp;gt;error.&amp;lt;/code&amp;gt; value is a string. Used to bring up a popup window with the error message.&lt;br /&gt;
#* &amp;lt;code&amp;gt;cddb_hit.&amp;lt;/code&amp;gt; value is an array of strings with the multiple hits. Return the index of the array.&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;
== Mac OS/X support==&lt;br /&gt;
Since the lead developer doesn&#039;t have a Mac, he cannot test anything. Therefore support from someone who knows Mac OS/X [[core audio]] very well and can test any code if needed is a necessity. The main differences with Mac OS/X and Linux support are:&lt;br /&gt;
&lt;br /&gt;
* Audio cd&#039;s may have to be unmounted before they can be ripped.&lt;br /&gt;
* Linux doesn&#039;t mount audio cd&#039;s at all.&lt;br /&gt;
* In [[cdparanoia]] an option to set the cdrom device is missing, which is there in Linux.&lt;br /&gt;
&lt;br /&gt;
=Development progress=&lt;br /&gt;
This section was added in order to figure out the right way to implement features into Rubyripper. &lt;br /&gt;
Currently work is being done on:&lt;br /&gt;
* The tracklist presentation. Someone on the forums suggested, the interface isn&#039;t perfect. It was improved by opening the main window with a fixed size. The tracklist becomes scrollable, if it is to large too fit. Screenshots:&lt;br /&gt;
** [http://b-woudstra.speedlinq.nl/screenshots/track_selection1.png New tracklist loading 1]&lt;br /&gt;
** [http://b-woudstra.speedlinq.nl/screenshots/track_selection2.png New tracklist loading 2]&lt;br /&gt;
* A separate status window was added, instead of a tab. This can be seen in the previous screenshots. &lt;br /&gt;
* He also removed the status bars and the status tab from the main view. They were moved to a separate ripping window, like [[EAC]]. The task that is being decided upon is, which buttons should remain visible. If you have any ideas how to improve the GUI shown in the next screenshot, feel free to share your opinion!&lt;br /&gt;
** [http://b-woudstra.speedlinq.nl/screenshots/status_window.png New separate status window]&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://rubyforge.org/projects/rubyripper/ Rubyripper] the official Rubyforge website&lt;br /&gt;
* [http://www.rarewares.org/debian/packages/unstable/rubyripper_0.2-0rarewares1_i386.deb Debian Package] unstable Debian compile of Rubyripper. &lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=38418 Hydrogenaudio forum thread] the first public release of Rubyripper&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:CD Rippers]]&lt;/div&gt;</summary>
		<author><name>Icheyne</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Cdparanoia&amp;diff=15648</id>
		<title>Cdparanoia</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Cdparanoia&amp;diff=15648"/>
		<updated>2006-11-27T13:06:19Z</updated>

		<summary type="html">&lt;p&gt;Icheyne: /* Linux */ removed more obsure rippers!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Software Infobox&lt;br /&gt;
| name = cdparanoia III&lt;br /&gt;
| screenshot = &lt;br /&gt;
| caption = fully featured CD ripping library&lt;br /&gt;
| maintainer = [http://en.wikipedia.org/wiki/Chris_Montgomery Christopher Montgomery] &lt;br /&gt;
| stable_release = 9.8 &lt;br /&gt;
| preview_release = 10.0p  &lt;br /&gt;
| operating_system = Windows, Mac OS/X, Linux/BSD&lt;br /&gt;
| use = Extraction Library API&lt;br /&gt;
| license = GPL&lt;br /&gt;
| website = http://www.xiph.org/paranoia/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
What is cdparanoia? &#039;&#039;&#039;cdparanoia&#039;&#039;&#039; is a bit different than most other CD-DA extration tools. It contains few-to-no &#039;&#039;&#039;extra&#039;&#039;&#039; features (&amp;quot;Too many features spoil the broth&amp;quot;) , concentrating only on the ripping process and knowing as much as possible about the hardware performing it. cdparanoia will read correct, rock-solid audio data from inexpensive drives prone to misalignment, frame jitter, and loss of streaming during atomic reads. cdparanoia will also read and repair data from CDs that have been damaged in some way using interpolation and padding sectors with silence or 0 bytes.  &lt;br /&gt;
&lt;br /&gt;
cdparanoia is more or less the only secure ripper available for the Linux operating system.&lt;br /&gt;
&lt;br /&gt;
==Revisions== &lt;br /&gt;
There have been series of bugfixes to cdparanoia, which date back to 9.8 release in 2001. Many of them include, pre-gap detection, buffering patches, kernel interface changes (CD-ROM routines), and support for [http://sg.torque.net/sg/sg_io.html SG_IO] (application/SCSI commands). These were done in preperation for the stable 10.0 release. This is the last release before cdparanoia IV, which will not be backwards compatible.&lt;br /&gt;
&lt;br /&gt;
==Ripping methods==&lt;br /&gt;
Some GUI&#039;s (like [[CDex]]) and the main command-line interface, allow you to control the type of extraction method that cdparanoia performs. There are several modes that can be used as specified by the user. &lt;br /&gt;
&lt;br /&gt;
* Full, Paranoia &lt;br /&gt;
* Overlap &lt;br /&gt;
* No Verify&lt;br /&gt;
* No Sratch Detection &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;note: this is a work in progress&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==CD Ripping software== &lt;br /&gt;
This is a list of Digital Audio Extraction tools, which use libparanoia by platform: &lt;br /&gt;
=== Windows ===&lt;br /&gt;
* [[CDex]]&lt;br /&gt;
&lt;br /&gt;
=== Mac OS/X ===&lt;br /&gt;
* [[Max]] (custom port)&lt;br /&gt;
* [[FireStarter FX]] (for ripping)&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* [[abcde]] (command-line based)&lt;br /&gt;
* [[Grip]] &lt;br /&gt;
* [[Rubyripper]] - custom port.&lt;br /&gt;
* [[X-CD-Roast]] - for ripping.&lt;br /&gt;
* [http://sourceforge.net/projects/ripperx/ ripperX] an X front end for cdparanoia and the 8Hz-mp3 MPEG encoder. Rips directly from CD to MPEG layer 3.&lt;br /&gt;
* [http://cdrdao.sourceforge.net/ CDRDAO] the original disk-at-once burning tool for Linux/UNIX.&lt;br /&gt;
* [http://www.icefox.net/programs/?program=KAudioCreator KAudioCreator]&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://www.xiph.org/paranoia/ cdparanoia homepage] official xiph.org page of the libparanoia tools.&lt;br /&gt;
* [http://www.xiph.org/paranoia/manual.html user manual] includes a description of using cdparanoia from the command-line. &lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=47850&amp;amp;hl= cdparanoia 10.0] pre-release thread.&lt;br /&gt;
*  Many Linux CD rippers [http://freshmeat.net/search/?q=cdparanoia&amp;amp;section=projects depend on cdparanoia]&lt;br /&gt;
[[Category:CD Rippers]]&lt;/div&gt;</summary>
		<author><name>Icheyne</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Cdparanoia&amp;diff=15647</id>
		<title>Cdparanoia</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Cdparanoia&amp;diff=15647"/>
		<updated>2006-11-27T13:00:58Z</updated>

		<summary type="html">&lt;p&gt;Icheyne: /* Linux */  added link to freshmeat search for Linux rippers that depend on cdparanoia&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Software Infobox&lt;br /&gt;
| name = cdparanoia III&lt;br /&gt;
| screenshot = &lt;br /&gt;
| caption = fully featured CD ripping library&lt;br /&gt;
| maintainer = [http://en.wikipedia.org/wiki/Chris_Montgomery Christopher Montgomery] &lt;br /&gt;
| stable_release = 9.8 &lt;br /&gt;
| preview_release = 10.0p  &lt;br /&gt;
| operating_system = Windows, Mac OS/X, Linux/BSD&lt;br /&gt;
| use = Extraction Library API&lt;br /&gt;
| license = GPL&lt;br /&gt;
| website = http://www.xiph.org/paranoia/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
What is cdparanoia? &#039;&#039;&#039;cdparanoia&#039;&#039;&#039; is a bit different than most other CD-DA extration tools. It contains few-to-no &#039;&#039;&#039;extra&#039;&#039;&#039; features (&amp;quot;Too many features spoil the broth&amp;quot;) , concentrating only on the ripping process and knowing as much as possible about the hardware performing it. cdparanoia will read correct, rock-solid audio data from inexpensive drives prone to misalignment, frame jitter, and loss of streaming during atomic reads. cdparanoia will also read and repair data from CDs that have been damaged in some way using interpolation and padding sectors with silence or 0 bytes.  &lt;br /&gt;
&lt;br /&gt;
cdparanoia is more or less the only secure ripper available for the Linux operating system.&lt;br /&gt;
&lt;br /&gt;
==Revisions== &lt;br /&gt;
There have been series of bugfixes to cdparanoia, which date back to 9.8 release in 2001. Many of them include, pre-gap detection, buffering patches, kernel interface changes (CD-ROM routines), and support for [http://sg.torque.net/sg/sg_io.html SG_IO] (application/SCSI commands). These were done in preperation for the stable 10.0 release. This is the last release before cdparanoia IV, which will not be backwards compatible.&lt;br /&gt;
&lt;br /&gt;
==Ripping methods==&lt;br /&gt;
Some GUI&#039;s (like [[CDex]]) and the main command-line interface, allow you to control the type of extraction method that cdparanoia performs. There are several modes that can be used as specified by the user. &lt;br /&gt;
&lt;br /&gt;
* Full, Paranoia &lt;br /&gt;
* Overlap &lt;br /&gt;
* No Verify&lt;br /&gt;
* No Sratch Detection &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;note: this is a work in progress&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==CD Ripping software== &lt;br /&gt;
This is a list of Digital Audio Extraction tools, which use libparanoia by platform: &lt;br /&gt;
=== Windows ===&lt;br /&gt;
* [[CDex]]&lt;br /&gt;
&lt;br /&gt;
=== Mac OS/X ===&lt;br /&gt;
* [[Max]] (custom port)&lt;br /&gt;
* [[FireStarter FX]] (for ripping)&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* [[abcde]] (command-line based)&lt;br /&gt;
* [[Grip]] &lt;br /&gt;
* [[Rubyripper]] - custom port.&lt;br /&gt;
* [[X-CD-Roast]] - for ripping.&lt;br /&gt;
* [http://tcvp.sf.net/ TCVP] a video and music player and CD ripper.&lt;br /&gt;
* [http://userpage.fu-berlin.de/~mbayer/tools/dekagen.html dekagen] dekagen is a BASH script that automates the ripping, encoding, and naming of music data that comes from CD and will be saved in Ogg Vorbis files, using programs like cdparanoia, and oggenc.&lt;br /&gt;
* [http://sourceforge.net/projects/ripperx/ ripperX] an X front end for cdparanoia and the 8Hz-mp3 MPEG encoder. Rips directly from CD to MPEG layer 3.&lt;br /&gt;
* [http://cdrdao.sourceforge.net/ CDRDAO] the original disk-at-once burning tool for Linux/UNIX.&lt;br /&gt;
* [http://www.icefox.net/programs/?program=KAudioCreator KAudioCreator]&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://www.xiph.org/paranoia/ cdparanoia homepage] official xiph.org page of the libparanoia tools.&lt;br /&gt;
* [http://www.xiph.org/paranoia/manual.html user manual] includes a description of using cdparanoia from the command-line. &lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=47850&amp;amp;hl= cdparanoia 10.0] pre-release thread.&lt;br /&gt;
*  Many Linux CD rippers [http://freshmeat.net/search/?q=cdparanoia&amp;amp;section=projects depend on cdparanoia]&lt;br /&gt;
[[Category:CD Rippers]]&lt;/div&gt;</summary>
		<author><name>Icheyne</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Cdparanoia&amp;diff=15646</id>
		<title>Cdparanoia</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Cdparanoia&amp;diff=15646"/>
		<updated>2006-11-27T12:59:03Z</updated>

		<summary type="html">&lt;p&gt;Icheyne: /* Linux */  added link to freshmeat search for Linux rippers that depend on cdparanoia&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Software Infobox&lt;br /&gt;
| name = cdparanoia III&lt;br /&gt;
| screenshot = &lt;br /&gt;
| caption = fully featured CD ripping library&lt;br /&gt;
| maintainer = [http://en.wikipedia.org/wiki/Chris_Montgomery Christopher Montgomery] &lt;br /&gt;
| stable_release = 9.8 &lt;br /&gt;
| preview_release = 10.0p  &lt;br /&gt;
| operating_system = Windows, Mac OS/X, Linux/BSD&lt;br /&gt;
| use = Extraction Library API&lt;br /&gt;
| license = GPL&lt;br /&gt;
| website = http://www.xiph.org/paranoia/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
What is cdparanoia? &#039;&#039;&#039;cdparanoia&#039;&#039;&#039; is a bit different than most other CD-DA extration tools. It contains few-to-no &#039;&#039;&#039;extra&#039;&#039;&#039; features (&amp;quot;Too many features spoil the broth&amp;quot;) , concentrating only on the ripping process and knowing as much as possible about the hardware performing it. cdparanoia will read correct, rock-solid audio data from inexpensive drives prone to misalignment, frame jitter, and loss of streaming during atomic reads. cdparanoia will also read and repair data from CDs that have been damaged in some way using interpolation and padding sectors with silence or 0 bytes.  &lt;br /&gt;
&lt;br /&gt;
cdparanoia is more or less the only secure ripper available for the Linux operating system.&lt;br /&gt;
&lt;br /&gt;
==Revisions== &lt;br /&gt;
There have been series of bugfixes to cdparanoia, which date back to 9.8 release in 2001. Many of them include, pre-gap detection, buffering patches, kernel interface changes (CD-ROM routines), and support for [http://sg.torque.net/sg/sg_io.html SG_IO] (application/SCSI commands). These were done in preperation for the stable 10.0 release. This is the last release before cdparanoia IV, which will not be backwards compatible.&lt;br /&gt;
&lt;br /&gt;
==Ripping methods==&lt;br /&gt;
Some GUI&#039;s (like [[CDex]]) and the main command-line interface, allow you to control the type of extraction method that cdparanoia performs. There are several modes that can be used as specified by the user. &lt;br /&gt;
&lt;br /&gt;
* Full, Paranoia &lt;br /&gt;
* Overlap &lt;br /&gt;
* No Verify&lt;br /&gt;
* No Sratch Detection &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;note: this is a work in progress&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==CD Ripping software== &lt;br /&gt;
This is a list of Digital Audio Extraction tools, which use libparanoia by platform: &lt;br /&gt;
=== Windows ===&lt;br /&gt;
* [[CDex]]&lt;br /&gt;
&lt;br /&gt;
=== Mac OS/X ===&lt;br /&gt;
* [[Max]] (custom port)&lt;br /&gt;
* [[FireStarter FX]] (for ripping)&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* [[abcde]] (command-line based)&lt;br /&gt;
* [[Grip]] &lt;br /&gt;
* [[Rubyripper]] - custom port.&lt;br /&gt;
* [[X-CD-Roast]] - for ripping.&lt;br /&gt;
* [http://tcvp.sf.net/ TCVP] a video and music player and CD ripper.&lt;br /&gt;
* [http://userpage.fu-berlin.de/~mbayer/tools/dekagen.html dekagen] dekagen is a BASH script that automates the ripping, encoding, and naming of music data that comes from CD and will be saved in Ogg Vorbis files, using programs like cdparanoia, and oggenc.&lt;br /&gt;
* [http://sourceforge.net/projects/ripperx/ ripperX] an X front end for cdparanoia and the 8Hz-mp3 MPEG encoder. Rips directly from CD to MPEG layer 3.&lt;br /&gt;
* [http://cdrdao.sourceforge.net/ CDRDAO] the original disk-at-once burning tool for Linux/UNIX.&lt;br /&gt;
* [http://www.icefox.net/programs/?program=KAudioCreator KAudioCreator]&lt;br /&gt;
* Many Linux CD rippers [depend on cdparanoia http://freshmeat.net/search/?q=cdparanoia&amp;amp;section=projects].&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://www.xiph.org/paranoia/ cdparanoia homepage] official xiph.org page of the libparanoia tools.&lt;br /&gt;
* [http://www.xiph.org/paranoia/manual.html user manual] includes a description of using cdparanoia from the command-line. &lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=47850&amp;amp;hl= cdparanoia 10.0] pre-release thread.&lt;br /&gt;
&lt;br /&gt;
[[Category:CD Rippers]]&lt;/div&gt;</summary>
		<author><name>Icheyne</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Cdparanoia&amp;diff=15643</id>
		<title>Cdparanoia</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Cdparanoia&amp;diff=15643"/>
		<updated>2006-11-27T12:33:50Z</updated>

		<summary type="html">&lt;p&gt;Icheyne: Added  KAudioCreator&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Software Infobox&lt;br /&gt;
| name = cdparanoia III&lt;br /&gt;
| screenshot = &lt;br /&gt;
| caption = fully featured CD ripping library&lt;br /&gt;
| maintainer = [http://en.wikipedia.org/wiki/Chris_Montgomery Christopher Montgomery] &lt;br /&gt;
| stable_release = 9.8 &lt;br /&gt;
| preview_release = 10.0p  &lt;br /&gt;
| operating_system = Windows, Mac OS/X, Linux/BSD&lt;br /&gt;
| use = Extraction Library API&lt;br /&gt;
| license = GPL&lt;br /&gt;
| website = http://www.xiph.org/paranoia/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
What is cdparanoia? &#039;&#039;&#039;cdparanoia&#039;&#039;&#039; is a bit different than most other CD-DA extration tools. It contains few-to-no &#039;&#039;&#039;extra&#039;&#039;&#039; features (&amp;quot;Too many features spoil the broth&amp;quot;) , concentrating only on the ripping process and knowing as much as possible about the hardware performing it. cdparanoia will read correct, rock-solid audio data from inexpensive drives prone to misalignment, frame jitter, and loss of streaming during atomic reads. cdparanoia will also read and repair data from CDs that have been damaged in some way using interpolation and padding sectors with silence or 0 bytes.  &lt;br /&gt;
&lt;br /&gt;
cdparanoia is more or less the only secure ripper available for the Linux operating system.&lt;br /&gt;
&lt;br /&gt;
==Revisions== &lt;br /&gt;
There have been series of bugfixes to cdparanoia, which date back to 9.8 release in 2001. Many of them include, pre-gap detection, buffering patches, kernel interface changes (CD-ROM routines), and support for [http://sg.torque.net/sg/sg_io.html SG_IO] (application/SCSI commands). These were done in preperation for the stable 10.0 release. This is the last release before cdparanoia IV, which will not be backwards compatible.&lt;br /&gt;
&lt;br /&gt;
==Ripping methods==&lt;br /&gt;
Some GUI&#039;s (like [[CDex]]) and the main command-line interface, allow you to control the type of extraction method that cdparanoia performs. There are several modes that can be used as specified by the user. &lt;br /&gt;
&lt;br /&gt;
* Full, Paranoia &lt;br /&gt;
* Overlap &lt;br /&gt;
* No Verify&lt;br /&gt;
* No Sratch Detection &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;note: this is a work in progress&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==CD Ripping software== &lt;br /&gt;
This is a list of Digital Audio Extraction tools, which use libparanoia by platform: &lt;br /&gt;
=== Windows ===&lt;br /&gt;
* [[CDex]]&lt;br /&gt;
&lt;br /&gt;
=== Mac OS/X ===&lt;br /&gt;
* [[Max]] (custom port)&lt;br /&gt;
* [[FireStarter FX]] (for ripping)&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* [[abcde]] (command-line based)&lt;br /&gt;
* [[Grip]] &lt;br /&gt;
* [[Rubyripper]] - custom port.&lt;br /&gt;
* [[X-CD-Roast]] - for ripping.&lt;br /&gt;
* [http://tcvp.sf.net/ TCVP] a video and music player and CD ripper.&lt;br /&gt;
* [http://userpage.fu-berlin.de/~mbayer/tools/dekagen.html dekagen] dekagen is a BASH script that automates the ripping, encoding, and naming of music data that comes from CD and will be saved in Ogg Vorbis files, using programs like cdparanoia, and oggenc.&lt;br /&gt;
* [http://sourceforge.net/projects/ripperx/ ripperX] an X front end for cdparanoia and the 8Hz-mp3 MPEG encoder. Rips directly from CD to MPEG layer 3.&lt;br /&gt;
* [http://cdrdao.sourceforge.net/ CDRDAO] the original disk-at-once burning tool for Linux/UNIX.&lt;br /&gt;
* [http://www.icefox.net/programs/?program=KAudioCreator KAudioCreator]&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://www.xiph.org/paranoia/ cdparanoia homepage] official xiph.org page of the libparanoia tools.&lt;br /&gt;
* [http://www.xiph.org/paranoia/manual.html user manual] includes a description of using cdparanoia from the command-line. &lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=47850&amp;amp;hl= cdparanoia 10.0] pre-release thread.&lt;br /&gt;
&lt;br /&gt;
[[Category:CD Rippers]]&lt;/div&gt;</summary>
		<author><name>Icheyne</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Cdparanoia&amp;diff=15642</id>
		<title>Cdparanoia</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Cdparanoia&amp;diff=15642"/>
		<updated>2006-11-27T11:31:53Z</updated>

		<summary type="html">&lt;p&gt;Icheyne: added Linux rippers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Software Infobox&lt;br /&gt;
| name = cdparanoia III&lt;br /&gt;
| screenshot = &lt;br /&gt;
| caption = fully featured CD ripping library&lt;br /&gt;
| maintainer = [http://en.wikipedia.org/wiki/Chris_Montgomery Christopher Montgomery] &lt;br /&gt;
| stable_release = 9.8 &lt;br /&gt;
| preview_release = 10.0p  &lt;br /&gt;
| operating_system = Windows, Mac OS/X, Linux/BSD&lt;br /&gt;
| use = Extraction Library API&lt;br /&gt;
| license = GPL&lt;br /&gt;
| website = http://www.xiph.org/paranoia/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
What is cdparanoia? &#039;&#039;&#039;cdparanoia&#039;&#039;&#039; is a bit different than most other CD-DA extration tools. It contains few-to-no &#039;&#039;&#039;extra&#039;&#039;&#039; features (&amp;quot;Too many features spoil the broth&amp;quot;) , concentrating only on the ripping process and knowing as much as possible about the hardware performing it. cdparanoia will read correct, rock-solid audio data from inexpensive drives prone to misalignment, frame jitter, and loss of streaming during atomic reads. cdparanoia will also read and repair data from CDs that have been damaged in some way using interpolation and padding sectors with silence or 0 bytes.  &lt;br /&gt;
&lt;br /&gt;
cdparanoia is more or less the only secure ripper available for the Linux operating system.&lt;br /&gt;
&lt;br /&gt;
==Revisions== &lt;br /&gt;
There have been series of bugfixes to cdparanoia, which date back to 9.8 release in 2001. Many of them include, pre-gap detection, buffering patches, kernel interface changes (CD-ROM routines), and support for [http://sg.torque.net/sg/sg_io.html SG_IO] (application/SCSI commands). These were done in preperation for the stable 10.0 release. This is the last release before cdparanoia IV, which will not be backwards compatible.&lt;br /&gt;
&lt;br /&gt;
==Ripping methods==&lt;br /&gt;
Some GUI&#039;s (like [[CDex]]) and the main command-line interface, allow you to control the type of extraction method that cdparanoia performs. There are several modes that can be used as specified by the user. &lt;br /&gt;
&lt;br /&gt;
* Full, Paranoia &lt;br /&gt;
* Overlap &lt;br /&gt;
* No Verify&lt;br /&gt;
* No Sratch Detection &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;note: this is a work in progress&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==CD Ripping software== &lt;br /&gt;
This is a list of Digital Audio Extraction tools, which use libparanoia by platform: &lt;br /&gt;
=== Windows ===&lt;br /&gt;
* [[CDex]]&lt;br /&gt;
&lt;br /&gt;
=== Mac OS/X ===&lt;br /&gt;
* [[Max]] (custom port)&lt;br /&gt;
* [[FireStarter FX]] (for ripping)&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* [[abcde]] (command-line based)&lt;br /&gt;
* [[Grip]] &lt;br /&gt;
* [[Rubyripper]] - custom port.&lt;br /&gt;
* [[X-CD-Roast]] - for ripping.&lt;br /&gt;
* [http://tcvp.sf.net/ TCVP] a video and music player and CD ripper.&lt;br /&gt;
* [http://userpage.fu-berlin.de/~mbayer/tools/dekagen.html dekagen] dekagen is a BASH script that automates the ripping, encoding, and naming of music data that comes from CD and will be saved in Ogg Vorbis files, using programs like cdparanoia, and oggenc.&lt;br /&gt;
* [http://sourceforge.net/projects/ripperx/ ripperX] an X front end for cdparanoia and the 8Hz-mp3 MPEG encoder. Rips directly from CD to MPEG layer 3.&lt;br /&gt;
* [http://cdrdao.sourceforge.net/ CDRDAO] the original disk-at-once burning tool for Linux/UNIX.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://www.xiph.org/paranoia/ cdparanoia homepage] official xiph.org page of the libparanoia tools.&lt;br /&gt;
* [http://www.xiph.org/paranoia/manual.html user manual] includes a description of using cdparanoia from the command-line. &lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=47850&amp;amp;hl= cdparanoia 10.0] pre-release thread.&lt;br /&gt;
&lt;br /&gt;
[[Category:CD Rippers]]&lt;/div&gt;</summary>
		<author><name>Icheyne</name></author>
	</entry>
</feed>