Comment 52 for bug 195483

Revision history for this message
KennoVO (kenno-xs4all) wrote :

OK, this might be getting confusing. Just a summary for people who are new to this bug, and some suggestions for future directions:

- People initially filed this as a sound-juicer bug, while *at that time*, it was actually a gstreamer bug; the "lame" element, which was responsible for encoding mp3 files by interfacing with the LAME mp3 library, was misbehaving.
- Rather than attempting to fix the "lame" element, which was entirely based on incorrect assumptions, Sebastian Dröge created a brand new LAME interface named "lamemp3enc", which is simple to use and in line with the LAME developer's UI guidelines.
http://lame.sourceforge.net/lame_ui_example.php
Around that time, I stopped following this bug, assuming that it would be fixed soon (I'm using RubyRipper with standalone lame for my own CD ripping purposes so I'm not directly affected).
- Now, more than a year later, "lamemp3enc" is indeed in gstreamer0.10-plugins-ugly-multiverse (which is good), but sound juicer still calls the obsolete and buggy "lame" element instead of "lamemp3enc" (which is inane).
- So, what we're looking at *right now* is a sound juicer bug (yes I consider a default setting that results in "data loss" - quality loss actually - a bug), and what we need is suggestions for default gstreamer pipe lines for sound-juicer.
- A good starting point for this would be hydrogeaudio.org - the guys over there are digital audio professionals and enthusiasts and they have done an incredible amount of ABX blind testing and debating to come up with recommendations for using lame.
http://wiki.hydrogenaudio.org/index.php?title=LAME
    * For what most people would call "CD quality", they recommend VBR qualities 0,1,2 or 3 (according to taste).
    * For "portable mp3 player quality", they recommend VBR qualities 4, 5 or 6
    * For "voice quality" they recommend ABR with a target bitrate lower than 100. The current juicer presets join the channels to mono when voice is selected, so in that case, a target bit rate of 56 seems sensible (ie. "lamemp3enc name=enc target=1 bitrate=56 mono=true" , thus mimicking "--preset voice" of standalone lame).
- How to implement this all depend on how much of these internals one would want to expose to the user. While I myself would very much enjoy juicer giving me the option to choose between VBR and ABR and set the quality/bitrate myself (as FiloSottile seems to suggest), juicer's design philosophy seem to be to keep it simple and stupid. In that case picking one "CD quality" preset, one "portable mp3 player" preset, and one "voice" preset would be the way to go.
- Finally, the sound juicer devs (or whoever makes up these defaults) seem to be biased towards lower bitrates/qualities; the current "CD quality" preset attempts to use VBR quality 6, in which most people could clearly hear the artifacts giving good enough listening conditions.
- Anyway, to stay totally in line with juicer's design philosophy (however objectionable this may be), my final recommendation would be to use FiloSottile's "audio/x-raw-int,rate=44100,channels=2 ! ... ! xingmux ! id3v2mux" with the following lamemp3enc lines:
"CD quality": lamemp3enc name=enc target=0 quality=2
"portable mp3 player quality": lamemp3enc name=enc target=0 quality=6
"voice quality": lamemp3enc name=enc target=1 bitrate=56 mono=true

PS: I don't know why it would be needed to specify name=enc but it won't hurt and a lot of people are doing it, so it might be good for something.