Monday, 12 November 2012

How-to: Change Sound Juicer and Rhythmbox Audio Preferences


How-to: Change Sound Juicer and Rhythmbox Audio PreferencesAnother fill-in required to address the audio output presets in Ubuntu. If you use Sound Juicer (aka CD Extractor) or Rhythmbox music player to output audio in various formats, you may be wondering where the options have gone.

In Edit - Preferences, the Settings button is either greyed out or missing completely. So there is no user control to adjust encoding for ogg, mp3, mp4. If you're lucky, the output list will have a couple of standard options - but for most of us, .mp3 output at a preset 32kbps is not much use!

Everyone involved in Ubuntu development is aware of this known bug.This has been going on since 11.10, and is only now being addressed. In the meantime, what about a work-round? What we're looking for are working GEP's and PRS' - Gstreamer Encoder Profiles and PRe-Sets.


Thanks to Conor Curran (cjcurran) on Launchpad, currently the only way to get rhythmbox to use a new Lame preset, is to first create the preset.

Conor thoughtfully provides an MP3 encoding preset to be used for Ubuntu 12.10 (242 bytes, text/plain), which does work in 11.10 and 12.04.

If you drop this preset file in ~/.gstreamer-1.0/presets/GstLameMP3Enc.prs, that's half the job done.

The proposal is to ship the preset in 13.04 so it ends up /usr/share/gstreamer-0.10/presets/ and reference it's name in the rhythmbox.gep. There is also an updated rhythmbox.gep file which references this preset.

The .prs file looks like this:

[_presets_]
element-name=GstLameMP3Enc
version=0.10.36

[12:04-default]
name=lamemp3enc0
perfect-timestamp=false
hard-resync=false
tolerance=40000000
target=Quality
bitrate=192
cbr=false
quality=2
encoding-engine-quality=Standard
mono=false


While this is no replacement for the semi-GUI interface we had before (you still had to enter a text string for the settings, remember), changing presets is as easy as editing a text file.

It looks like it should be version specific, but you can change the preset name "12:04-default" to anything you want in both the .gep file and .prs, it doesn't really matter what, I went with "MP3-high" (no quotes). That stops Rhythmbox from complaining about a missing decoder.

This give you the option of adjusting the encoding by altering the settings. If target is set to quality in the .psr, you will get Varbiable Bit Rate (VBR). I think the quality=2 is fine, averaging out around 192kbps

However, you might go for target =Bitrate to get a constant bit rate file.

In which case, setting the bitrate= line to either 96 or even 64 gives the VBR algorithm an absolute lower limit, which gives VBR some room to do it's thing

Adding a Profile is pretty straight forward, so editing the .psr as needed or even adding an additional profile or two is easily done in the text file. RC

For completeness, the Rhythmbox GEP file looks like this

[GStreamer Encoding Target]
name = rhythmbox
category = muh
description = Common encoding profiles for Rhythmbox

[profile-mp3]
name = mp3
description = MPEG Layer 3 Audio
format = application/x-id3
type = container

[streamprofile-mp3-1]
parent = mp3
type = audio
preset=12:04-default
format = audio/mpeg, mpegversion=1, layer=3
presence = 1

[profile-oggvorbis]
name = oggvorbis
description = Ogg Vorbis
format = application/ogg
type = container

[streamprofile-oggvorbis-1]
parent = oggvorbis
type = audio
format = audio/x-vorbis
presence = 1

[profile-flac]
name = flac
description = FLAC
format = audio/x-flac
type = audio

[profile-m4a]
name = m4a
description = MPEG 4 Audio
format = video/quicktime, variant=iso
type = container

[streamprofile-m4a-1]
parent = m4a
type = audio
format = audio/mpeg, mpegversion=4, stream-format=raw
presence = 1

2 comments:

  1. It wasn't clear from your posting how Sound Juicer gets the profiles that it uses. Does it use the same system as rhythmbox? In other words, if I setup a rhythmbox GEP file and the .prs file, and then use Sound Juicer to rip a CD, will it use this profile?

    ReplyDelete
  2. Sound-Juicer uses its own GEP file.
    You will need to edit this too.

    usr/share/sound-juicer/rythymbox.gep

    ReplyDelete

At least try to be nice, it won't kill you...