--- Begin Message ---
Package: abcde
Version: 2.3.4-1
Severity: normal
Tags: patch
Hi! Currently batch mode normalization also enables lame's --nogap
option. This is very very very bad for those of us who encode
variable-bit-rate mp3s, because --nogap disables the Xing tag, which is
required by mp3 players so they can figure out the track length of the
file. Without the Xing tag the reported track lengths in most players
are waaaayyyyy off and are more or less random.
The included patches separate the concepts of batch normalization and
gapless encoding, and include a warning about the use of --nogap.
Please let me know if these are or are not satisfactory, and thanks for
the great program,
Brian
-- System Information:
Debian Release: testing/unstable
APT prefers unstable
APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.12portege
Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1)
Versions of packages abcde depends on:
ii cd-discid 0.9-1 CDDB DiscID utility
ii cdparanoia 3a9.8-11 An audio extraction tool for sampl
ii flac 1.1.2-3 Free Lossless Audio Codec - comman
ii lame 3.96.1-1 LAME Ain't an MP3 Encoder
ii vorbis-tools 1.0.1-1.5 Several Ogg Vorbis Tools
ii wget 1.10.1-1 retrieves files from the web
abcde recommends no packages.
-- no debconf information
--- abcde.orig 2005-09-30 22:47:00.000000000 -0700
+++ abcde 2005-10-01 00:44:05.000000000 -0700
@@ -22,7 +22,7 @@
echo "-a <action1[,action2]...>"
echo " Actions to perform
(cddb,read,normalize,encode,tag,move,playlist,clean)"
#echo "-A Experimental actions (retag, transcode)"
-echo "-b Batch mode: enable album normalization and nogap encoding"
+echo "-b Enable batch normalization"
echo "-c <file>"
echo " Specify a configuration file (overrides system and user config
files)"
echo "-C <discid#>"
@@ -31,6 +31,10 @@
echo " Specify CDROM device to grab"
echo "-D Debugging mode (equivalent to sh -x abcde)"
echo "-e Erase encoded track information from status file"
+echo "-G Enable --nogap encoding when using the 'lame' mp3 encoder."
+echo " WARNING: lame's --nogap disables the Xing mp3 tag. This tag is
required"
+echo " for mp3 players to correctly display track lengths when playing"
+echo " variable-bit-rate mp3 files."
echo "-h This help information"
#echo "-i Tag files while encoding, when possible (local only) -NWY-"
echo "-j <#> Number of encoder processes to run at once (localhost)"
@@ -562,13 +566,13 @@
done
}
-# do_batch_encode
+# do_nogap_encode
# variables used:
# OUTPUTTYPE, {FOO}ENCODERSYNTAX, ENCNICE, ENCODER, ENCODEROPTS
-do_batch_encode ()
+do_nogap_encode()
{
# The commands here don't go through run_command because they're never
supposed to be silenced
- echo "Batch encoding tracks: $TRACKQUEUE"
+ echo "Encoding gapless tracks: $TRACKQUEUE"
OUTPUT=$(echo $OUTPUTTYPE | grep "mp3" )
case "$OUTPUT" in
mp3)
@@ -584,7 +588,7 @@
nice $ENCNICE $MP3ENCODER $MP3ENCODEROPTS --nogap
$TRACKFILES
RETURN=$?
if [ "$RETURN" != "0" ]; then
- echo "batch-encode: $ENCODER returned code
$RETURN" >> errors
+ echo "nogap-encode: $ENCODER returned code
$RETURN" >> errors
else
for UTRACKNUM in $TRACKQUEUE
do
@@ -2083,6 +2087,8 @@
CDDBCOPYLOCAL="n"
CDDBLOCALDIR="$HOME/.cddb"
CDDBUSELOCAL="n"
+BATCHNORM="n"
+NOGAP="n"
# If using scsi devices, cdda2wav needs a CDROMID, instead of a device node
# i.e. CDROMID="1,0,0"
@@ -2248,13 +2254,13 @@
fi
# Parse command line options
-#while getopts 1a:bc:C:d:Dhj:klLnNo:pr:S:t:T:vVx opt ; do
-while getopts 1a:bc:C:d:Dehj:klLmMnNo:pPr:RS:t:T:vVxw:W: opt ; do
+#while getopts 1a:bc:C:d:DGhj:klLnNo:pr:S:t:T:vVx opt ; do
+while getopts 1a:bc:C:d:DeGhj:klLmMnNo:pPr:RS:t:T:vVxw:W: opt ; do
case "$opt" in
1) ONETRACK=y ;;
a) ACTIONS="$OPTARG" ;;
A) EXPACTIONS="$OPTARG";;
- b) BATCH=y ;;
+ b) BATCHNORM=y ;;
c) if [ -e "$OPTARG" ] ; then . "$OPTARG" ; else echo "abcde
error: config file \"$OPTARG\" cannot be found." >&2 ; exit 1 ; fi ;;
C) DISCID="${OPTARG#abcde.}" ;;
d) CDROM="$OPTARG" ;;
@@ -2263,6 +2269,7 @@
h) usage; exit ;;
e) ERASEENCODEDSTATUS=y ;;
# f) FORCECDDBUSELOCAL=y ;;
+ G) NOGAP=y ;;
i) INLINETAG=y ;;
j) MAXPROCS="$OPTARG" ;;
k) KEEPWAVS=y ;;
@@ -2314,9 +2321,9 @@
*) echo "abcde error: $CDROMREADERSYNTAX does not support
ONETRACK mode"
exit 1 ;;
esac
- if [ "$BATCH" = "y" ]; then
- echo "abcde error: BATCH mode is not compatible with ONETRACK
mode"
- BATCH=n
+ if [ "$BATCHNORM" = "y" ] || [ "$NOGAP" = "y" ] ; then
+ echo "abcde error: BATCHNORM and/or NOGAP modes are not
compatible with ONETRACK mode"
+ exit 1
fi
# It does not matter how many tracks we want. In ONETRACK mode we grab
them all
# FIXME # allow ranges of tracks to be selected for onetrack ripping
@@ -2464,6 +2471,12 @@
;;
esac
+# can't combine these currently...
+if [ "$BATCHNORM" = "n" ] && [ "$NOGAP" = "y" ]; then
+ echo "abcde warning: currently only batch normalization is supported
when"
+ echo " lame's --nogap option is used. Normalization
disabled."
+fi
+
# Allow -o OUTPUT(1):OPTIONS(1),...,OUTPUT(N):OPTIONS(N) mode of operation
if echo "$OUTPUTTYPE" | grep ":" > /dev/null 2>&1 ; then
for OUTPUT in $(echo $OUTPUTTYPE | tr , \ ); do
@@ -2806,7 +2819,7 @@
fi
fi
fi
- if [ "$BATCH" = "y" ]; then
+ if [ "$BATCHNORM" = "y" ] || [ "$NOGAP" = "y" ]; then
:
else
echo NEXTTRACK # Get the encoder machine churning again
@@ -2832,7 +2845,7 @@
fi
# All tracks read, start encoding.
-if [ "$BATCH" = "y" ] || [ "$ONETRACK" = "y" ]; then
+if [ "$BATCHNORM" = "y" ] || [ "$NOGAP" = "y" ] || [ "$ONETRACK" = "y" ]; then
echo NEXTTRACK
fi
@@ -2889,19 +2902,19 @@
#
#) | (
-# In batch mode, we want all tracks to be read first.
-if [ "$BATCH" = "y" ]; then
+# In batch or nogap mode, we want all tracks to be read first.
+if [ "$BATCHNORM" = "y" ] || [ "$NOGAP" = "y" ]; then
read GOAHEAD # For blocking - will contain either "NO" or "NEXTTRACK"
if [ "$GOAHEAD" = "NO" ]; then break; fi
for LASTTRACK in $TRACKQUEUE; do :; done
if checkstatus readtrack-$LASTTRACK; then
- if [ "$DONORMALIZE" = "y" ]; then
+ if [ "$DONORMALIZE" = "y" ] && [ "$BATCHNORM" = "y" ]; then
if checkstatus normalizetrack-$LASTTRACK; then :; else
do_batch_normalize; fi
if checkerrors batch-normalize; then exit; fi
fi
- if [ "$DOENCODE" = "y" ]; then
- if checkstatus encodetrack-$LASTTRACK; then :; else
do_batch_encode; fi
- if checkerrors batch-encode; then exit; fi
+ if [ "$DOENCODE" = "y" ] && [ "$NOGAP" = "y" ]; then
+ if checkstatus encodetrack-$LASTTRACK; then :; else
do_nogap_encode; fi
+ if checkerrors nogap-encode; then exit; fi
fi
fi
fi
--- abcde.1.orig 2005-10-01 00:51:48.000000000 -0700
+++ abcde.1 2005-10-01 00:51:31.000000000 -0700
@@ -46,7 +46,7 @@
do all actions except normalize and playlist.
.TP
.B \-b
-Enable batch mode normalization. See the BATCH configuration variable.
+Enable batch mode normalization. See the BATCHNORM configuration variable.
.TP
.B \-c [filename]
Specifies an additional configuration file to parse. Configuration options
@@ -66,6 +66,11 @@
Capture debugging information (you'll want to redirect this \- try 'abcde \-D
2>logfile')
.TP
+.B \-G
+Enable lame's --nogap option. See the NOGAP variable. WARNING: lame's --nogap
+disables the Xing mp3 tag. This tag is required for mp3 players to correctly
+display track lengths when playing variable-bit-rate mp3 files.
+.TP
.B \-h
Get help information.
.TP
@@ -335,10 +340,15 @@
entire CD. Use only if your system is low on space and cannot encode as
quickly as it can read.
.TP
-.B BATCH
+.B BATCHNORM
If set to y, enables batch mode normalization, which preserves relative
-volume differences between tracks of an album. Also enables nogap encoding
-when using the \'lame\' encoder.
+volume differences between tracks of an album.
+.TP
+.B NOGAP
+If set to y, enables lame's --nogap option. WARNING: lame's --nogap
+disables the Xing mp3 tag. This tag is required for mp3 players to
+correctly display track lengths when playing variable-bit-rate mp3
+files.
.TP
.B PLAYLISTFORMAT
Specifies the format for completed playlist filenames. Works like the
--- End Message ---