[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[abcde] Patch for FLAC support (including track comments)




Howdy all,

Here's a patch against the Debian package of abcde-2.0.3-1 which enables
FLAC support (the Free Lossless audio Codec).

It is based on an earlier patch by Ben Konrath, but adds support for
vorbis comments using the 'metaflac' tool.

I hope support for FLAC can make it into the official abcde package;
it's an ideal way to archive audio CDs without information loss, for
later processing into whatever lossy codec is useful, or just for
playing straight from the FLAC.

-- 
 \     "We demand rigidly defined areas of doubt and uncertainty!"  -- |
  `\     Vroomfondel, _The Hitch-Hiker's Guide To The Galaxy_, Douglas |
_o__)                                                            Adams |
bignose@zip.com.au  F'print 9CFE12B0 791A4267 887F520C B7AC2E51 BD41714B


-- Attached file included as plaintext by Listar --

diff -ruN abcde-2.0.3.debian/abcde abcde-2.0.3/abcde
--- abcde-2.0.3.debian/abcde	2002-01-28 16:44:02.000000000 +1100
+++ abcde-2.0.3/abcde	2002-11-26 12:57:26.000000000 +1100
@@ -6,7 +6,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-# 
+#
 # Copyright for this work is to expire January 1, 2010, after which it
 # shall be public domain.
 
@@ -27,7 +27,7 @@
 echo "-l    Use low disk space algorithm"
 echo "-n    No lookup. Don't query CDDB, just create and use template"
 echo "-N    Noninteractive. Never prompt for anything"
-echo "-o    Output file type - either \"ogg\" or \"mp3\""
+echo "-o    Output file type - one of \"ogg\", \"flac\" or \"mp3\""
 echo "-r    [host1,host2...] Also encode on these remote hosts"
 echo "-x    Eject CD after all tracks are read"
 echo "Tracks is a space-delimited list of tracks to grab."
@@ -144,7 +144,7 @@
 {
 	FR="$1"
 	TO="$2"
-	
+
 	case "$TO" in
 	/*) ;; # No processing is needed for absolute paths
 	*)
@@ -161,7 +161,7 @@
 			TO="../$TO"
 		done
 	esac
-	
+
 	echo $TO
 }
 
@@ -221,7 +221,8 @@
 {
 	COMMENTOUTPUT="$(eval echo ${COMMENT})"
 	run_command '' echo "Tagging track $1 of $TRACKS: $TRACKNAME..."
-	if [ "$OUTPUTTYPE" = "mp3" ]; then
+	case "$OUTPUTTYPE" in
+	mp3)
 		# Amazingly, id3 and id3v2 have identical -a, -A, -c, -t, and -T switches
 		# ...except id3v2's -c is completely broken (there's a bug in id3lib
 		# v3.7.x keeping -c from being properly implemented)
@@ -232,7 +233,8 @@
 			run_command tagtrack-$1 $TAGGER $TAGGEROPTS -c "$COMMENTOUTPUT" \
 				-A "$DALBUM" -a "$TRACKARTIST" -t "$TRACKNAME" -T "$1" "$ABCDETEMPDIR/track$1.$OUTPUTTYPE"
 		fi
-	else
+		;;
+	ogg)
 		# vorbiscomment can't do in-place modification, mv the file first
 		if [ -f "$ABCDETEMPDIR/track$1.$OUTPUTTYPE" -a ! -f "$ABCDETEMPDIR/track$1.uncommented.$OUTPUTTYPE" ]; then
 			mv "$ABCDETEMPDIR/track$1.$OUTPUTTYPE" "$ABCDETEMPDIR/track$1.uncommented.$OUTPUTTYPE"
@@ -254,7 +256,24 @@
 		else
 			mv "$ABCDETEMPDIR/track$1.uncommented.$OUTPUTTYPE" "$ABCDETEMPDIR/track$1.$OUTPUTTYPE"
 		fi
-	fi
+		;;
+	flac)
+		VCOPT_ARTIST=--set-vc-field="ARTIST=$TRACKARTIST"
+		VCOPT_ALBUM=--set-vc-field="ALBUM=$DALBUM"
+		VCOPT_TITLE=--set-vc-field="TITLE=$TRACKNAME"
+		VCOPT_TRACKNUMBER=--set-vc-field="TRACKNUMBER=$1"
+		run_command tagtrack-$1 $METAFLAC $METAFLACOPTS \
+			"$VCOPT_ARTIST" \
+			"$VCOPT_ALBUM" \
+			"$VCOPT_TITLE" \
+			"$VCOPT_TRACKNUMBER" \
+			"$ABCDETEMPDIR/track$1.$OUTPUTTYPE"
+		;;
+	*)
+		# no tagging for this output type, fake it
+		run_command tagtrack-$1 $NULLCMD
+		;;
+	esac
 }
 
 # do_encode [tracknumber] [hostname]
@@ -295,6 +314,21 @@
 			;;
 		esac
 		;;
+	flac)
+		case "$2" in
+		%local*%)
+			case "$ENCODERSYNTAX" in
+			flac) run_command encodetrack-$1 nice $ENCNICE $ENCODER $ENCODEROPTS -o "$OUT" "$IN" ;;
+			esac
+			;;
+		*)
+			run_command encodetrack-$1 $DISTMP3 $DISTMP3OPTS "$2" "$IN" "$OUT" >/dev/null 2>&1
+			;;
+		esac
+		;;
+	*)
+		echo "abcde error: Invalid OUTPUTTYPE defined" >&2
+		;;
 	esac
 	# Only remove .wav if the encoding succeeded
 	if checkerrors encodetrack-$1; then :; else
@@ -310,7 +344,7 @@
 do_move ()
 {
 	# Create ALBUMFILE, ARTISTFILE, TRACKFILE
-	# Munge filenames as follows: 
+	# Munge filenames as follows:
 	# ' ' -> '_'
 	# '/' -> '_'
 	# ''' -> ''
@@ -336,7 +370,7 @@
 # do_playlist
 # Create the playlist if wanted
 # Variables used:
-# PLAYLISTFORMAT, PLAYLISTDATAPREFIX, OUTPUTDIR, 
+# PLAYLISTFORMAT, PLAYLISTDATAPREFIX, OUTPUTDIR,
 do_playlist ()
 {
 	# Create a playlist file for the playlist data to go into, wiping it out if
@@ -389,13 +423,13 @@
 	else
 		TRACKINFO=$(cat "$WAVOUTPUTDIR/abcde.$DISCID/discid")
 	fi
-	
+
 	# Get a full enumeration of tracks, sort it, and put it in the TRACKQUEUE.
 	# This needs to be done now because a section of the resuming code will need
 	# it later.
-	
+
 	TRACKS=$(echo $TRACKINFO | cut -f2 -d' ')
-	
+
 	if [ -z "$TRACKQUEUE" ]; then
 		echo -n "Grabbing entire CD - tracks: "
 		X=0
@@ -411,7 +445,7 @@
 		TRACKQUEUE=$(echo $TRACKQUEUE | sed 's-[^0-9 ]--g' | tr ' ' '\n' | grep -v ^$ | sort -n | uniq | tr '\n' ' ' | sed 's- $--g')
 		echo Grabbing tracks: "$TRACKQUEUE"
 	fi
-	
+
 	for LASTTRACK in $TRACKQUEUE; do :; done
 	# get the number of digits to pad TRACKNUM with - we'll use this later
 	TRACKNUMPADDING=$(echo -n $LASTTRACK | wc -c | tr -d ' ')
@@ -420,7 +454,7 @@
 
 	# We have the discid, create a temp directory after it to store all the temp
 	# info
-	
+
 	ABCDETEMPDIR="$WAVOUTPUTDIR/abcde.$(echo $TRACKINFO | cut -f1 -d' ')"
 	if [ -e "$ABCDETEMPDIR" ]; then
 		echo -n "abcde: attempting to resume from $ABCDETEMPDIR"
@@ -488,7 +522,7 @@
 		fi
 		cat /dev/null > "$ABCDETEMPDIR/status"
 	fi
-	
+
 	# Create the discid file
 	echo "$TRACKINFO" > "$ABCDETEMPDIR/discid"
 
@@ -605,7 +639,7 @@
 			if [ "$(wc -l < $ABCDETEMPDIR/cddbquery | tr -d ' ')" -eq 3 ]; then
 				echo "One ${IN}exact match:" >> "$ABCDETEMPDIR/cddbchoices"
 				tail +2 "$ABCDETEMPDIR/cddbquery" | head -1 >> "$ABCDETEMPDIR/cddbchoices"
-	                        echo cddb-choice=1 >> "$ABCDETEMPDIR/status"
+				echo cddb-choice=1 >> "$ABCDETEMPDIR/status"
 			else
 				echo "Multiple ${IN}exact matches:" >> "$ABCDETEMPDIR/cddbchoices"
 			fi
@@ -628,7 +662,7 @@
 			done )
 			CDDBCHOICES=$(expr $(cat "$ABCDETEMPDIR/cddbquery" | wc -l) - 2)
 			;;
-		esac	
+		esac
 		echo "cddb-readcomplete" >> "$ABCDETEMPDIR/status"
 	fi
 }
@@ -674,13 +708,13 @@
 					# It's all going to fit in one page, cat it
 					cat "$ABCDETEMPDIR/cddbchoices" >&2
 				fi
-		
+
 				# I'll take CDDB read #3 for $400, Alex
 				echo -n "Which entry would you like abcde to use? [1-$CDDBCHOICES]: " >&2
 				read CDDBCHOICE
 				# Make sure we get a valid choice
 				CDCHOICENUM=$(echo $CDDBCHOICE | xargs printf %d 2>/dev/null)
-			        while [ $CDCHOICENUM -lt 1 ] || [ $CDCHOICENUM -gt $CDDBCHOICES ]; do
+				while [ $CDCHOICENUM -lt 1 ] || [ $CDCHOICENUM -gt $CDDBCHOICES ]; do
 					echo "Invalid selection. Please choose a number between 1 and $CDDBCHOICES." >&2
 					echo -n "Selection [1-$CDDBCHOICES]: " >&2
 					read CDDBCHOICE
@@ -701,14 +735,14 @@
 			echo "cddb-choice=1" >> "$ABCDETEMPDIR/status"
 		fi
 	fi
-	
+
 	# sanity check
 	if checkstatus cddb-choice >/dev/null; then :; else
 		echo "abcde: internal error: cddb-choice not recorded." >&2
 		exit 1
 	fi
 	CDDBDATA="$ABCDETEMPDIR/cddbread.$(checkstatus cddb-choice)"
-	
+
 	echo -n "Edit selected CDDB data? [y/n] (n): " >&2
 	if [ "$INTERACTIVE" = "y" ]; then
 		read EDITCDDB
@@ -739,7 +773,7 @@
 		if [ -w "$CDDBDATA~" ]; then
 			rm -f "$CDDBDATA~"
 		fi
-	fi	
+	fi
 
 	# Some heuristics first. Look at Disc Title, and if it starts with
 	# "Various", then we'll assume Various Artists
@@ -816,11 +850,11 @@
 	fi
 	echo "variousartists=$VARIOUSARTISTS" >> "$ABCDETEMPDIR/status"
 	echo "variousartiststyle=$VARIOUSARTISTSTYLE" >> "$ABCDETEMPDIR/status"
-	
+
 	if [ "$UNINTENTIONALLY_ANGER_THE_FREEDB_PEOPLE" = "y" ]; then
 		# This works but does not have the necessary error checking
 		# yet. If you are familiar with the CDDB spec
-		# (see http://www.freedb.org/src/latest/DBFORMAT) 
+		# (see http://www.freedb.org/src/latest/DBFORMAT)
 		# and can create an error-free entry on your own, then put
 		# UNINTENTIONALLY_ANGER_THE_FREEDB_PEOPLE=y in your
 		# abcde.conf to enable it. Put CDDBSUBMIT=email@address in
@@ -848,7 +882,7 @@
 }
 
 # do_cdread [tracknumber]
-# 
+#
 do_cdread ()
 {
 	# The commands here don't go through run_command because they're never supposed to be silenced
@@ -872,7 +906,7 @@
 	if [ "$RETURN" != "0" ]; then
 		# Thank goodness errors is only machine-parseable up to the
 		# first colon, otherwise this woulda sucked
-                echo "readtrack-$UTRACKNUM: $CDROMREADER returned code $RETURN" >> "$ABCDETEMPDIR/errors"
+		echo "readtrack-$UTRACKNUM: $CDROMREADER returned code $RETURN" >> "$ABCDETEMPDIR/errors"
 		return $RETURN
 	else
 		echo readtrack-$UTRACKNUM >> "$ABCDETEMPDIR/status"
@@ -901,6 +935,7 @@
 VARIOUSARTISTSTYLE=forward
 
 # program paths - defaults to checking your $PATH
+NULLCMD=true
 LAME=lame
 GOGO=gogo
 BLADEENC=bladeenc
@@ -909,8 +944,10 @@
 MP3ENC=mp3enc
 VORBIZE=vorbize
 OGGENC=oggenc
+FLAC=flac
 ID3=id3
 ID3V2=id3v2
+METAFLAC=metaflac
 CDPARANOIA=cdparanoia
 CDDA2WAV=cdda2wav
 WGET=wget
@@ -929,8 +966,10 @@
 MP3ENCOPTS=
 VORBIZEOPTS=
 OGGENCOPTS=
+FLACOPTS=
 ID3OPTS=
 ID3V2OPTS=
+METAFLACOPTS=
 CDPARANOIAOPTS=
 CDDA2WAVOPTS=
 WGETOPTS=
@@ -1007,7 +1046,7 @@
 	# Range parsing code courtesy of Vincent Ho
 	RSTART=$(echo $1 | cut -f1 -d-)
 	REND=$(echo $1 | cut -f2 -d-)
-	if [ "$RSTART" = "$REND" ]; then 
+	if [ "$RSTART" = "$REND" ]; then
 		NEWTRACKS="$RSTART"
 	else
 		NEWTRACKS=$(seq -s ' ' $RSTART $REND)
@@ -1029,13 +1068,23 @@
 		;;
 esac
 
-# If nothing has been specified, use oggenc for oggs and lame for mp3s
+# If nothing has been specified, use oggenc for oggs, lame for mp3s and flac
+# for flacs
 if [ "$ENCODERSYNTAX" = "default" ]; then
-	if [ "$OUTPUTTYPE" = "ogg" ]; then
+	case "$OUTPUTTYPE" in
+	ogg)
 		ENCODERSYNTAX=oggenc
-	else
+		;;
+	mp3)
 		ENCODERSYNTAX=lame
-	fi
+		;;
+	flac)
+		ENCODERSYNTAX=flac
+		;;
+	*)
+		echo "abcde error: Invalid OUTPUTTYPE defined" >&2
+		;;
+	esac
 fi
 
 # decide which encoder
@@ -1072,6 +1121,10 @@
 		ENCODEROPTS="$OGGENCOPTS"
 		ENCODER="$OGGENC"
 		;;
+	flac)
+		ENCODEROPTS="$FLACOPTS"
+		ENCODER="$FLAC"
+		;;
 esac
 
 # and which tagger
@@ -1095,9 +1148,22 @@
 
 
 # Don't check for stuff if it's not needed
-if [ "$REMOTEHOSTS" ]; then NEEDDISTMP3=y; fi	
-if [ "$OUTPUTTYPE" = "mp3" ]; then NEEDTAGGER=y; fi
-if [ "$OUTPUTTYPE" = "ogg" ]; then NEEDCOMMENTER=y; fi
+if [ "$REMOTEHOSTS" ]; then NEEDDISTMP3=y; fi
+
+# some output types support tagging/commenting, some don't
+case "$OUTPUTTYPE" in
+mp3)
+	NEEDTAGGER=y
+	;;
+ogg)
+	NEEDCOMMENTER=y
+	;;
+flac)
+	NEEDCOMMENTER=y
+	;;
+*)
+	;;
+esac
 
 # Make sure a buncha things exist
 for X in $CDROMREADER $CDDISCID ${NEEDTAGGER+$TAGGER} $ENCODER $WGET \
@@ -1111,7 +1177,7 @@
 	elif [ ! -x $(which $X) ]; then
 		echo "abcde error: $X is not executable." >&2
 		exit 1
-	fi 
+	fi
 done
 
 CDROMREADER="$CDROMREADER $CDROMREADEROPTS"
@@ -1246,7 +1312,7 @@
 	# Set TRACKNUM, TRACKNAME
 	if [ -e "$CDDBDATA" ]; then
 		TRACKNUM=$(printf %0.${TRACKNUMPADDING}d ${UTRACKNUM})
-	        CDDBTRACKNUM=$(expr $UTRACKNUM - 1)
+		CDDBTRACKNUM=$(expr $UTRACKNUM - 1)
 		TRACKNAME=$(grep ^TTITLE$CDDBTRACKNUM= "$CDDBDATA" | head -1 | cut -f2 -d= | tr -d \[:cntrl:\])
 		splitvarious
 	fi
@@ -1311,3 +1377,5 @@
 fi
 )
 exit 0
+
+# vim: noet
diff -ruN abcde-2.0.3.debian/abcde.1 abcde-2.0.3/abcde.1
--- abcde-2.0.3.debian/abcde.1	2001-08-21 11:22:33.000000000 +1000
+++ abcde-2.0.3/abcde.1	2002-11-25 18:28:42.000000000 +1100
@@ -1,6 +1,6 @@
 .TH ABCDE 1
 .SH NAME
-abcde \- Grab an entire CD and compress it to Ogg or MP3 format.
+abcde \- Grab an entire CD and compress it to Ogg Vorbis, FLAC or MP3 format.
 .SH SYNOPSIS
 .B abcde
 .I [options] [tracks]
@@ -9,8 +9,8 @@
 tagging or commenting it, is very involved.
 .BR abcde
 is designed to automate this. It will take an entire CD and convert it into
-a compressed audio format - Ogg Vorbis or MPEG Audio Layer III. With one
-command, it will:
+a compressed audio format - Ogg Vorbis, Free Lossless Audio Codec or MPEG
+Audio Layer III. With one command, it will:
 .TP
 .B *
 Do a CDDB query over the Internet to look up your CD
@@ -19,7 +19,7 @@
 Grab a track from your CD
 .TP
 .B *
-Compress it to Ogg or MP3 format
+Compress it to Ogg Vorbis, FLAC or MP3 format
 .TP
 .B *
 Comment or ID3 tag it
@@ -66,7 +66,7 @@
 Use the low-diskspace algorithm. See the LOWDISK configuration variable.
 .TP
 .B \-o [filetype]
-Select output type. Can be either "ogg" or "mp3". See the OUTPUTTYPE
+Select output type. Can be one of "ogg", "flac" or "mp3". See the OUTPUTTYPE
 configuration variable.
 .TP
 .B \-r [hosts...]
@@ -85,11 +85,11 @@
 will process the entire CD. Accepts ranges of track numbers -
 "abcde 1-5 7 9" will process tracks 1, 2, 3, 4, 5, 7, and 9.
 .SH OUTPUT
-Each track is, by default, placed in a separate file named after the track
-in a subdirectory named after the artist under the current directory. Each
-file is given an extension identifying its compression format, '.ogg'
-or '.mp3'. This can be modified using the OUTPUTFORMAT and VAOUTPUTFORMAT
-variables in your abcde.conf.
+Each track is, by default, placed in a separate file named after the
+track in a subdirectory named after the artist under the current
+directory. Each file is given an extension identifying its compression
+format, '.ogg', '.flac' or '.mp3'. This can be modified using the
+OUTPUTFORMAT and VAOUTPUTFORMAT variables in your abcde.conf.
 .SH CONFIGURATION
 abcde sources two configuration files on startup - /etc/abcde.conf and
 $HOME/.abcde.conf, in that order. Here is a list of options abcde recognizes:
@@ -98,11 +98,12 @@
 Specifies a server to use for CDDB lookups.
 .TP
 .B ENCODERSYNTAX
-Specifies the style of encoder to use. Valid options are \'oggenc\' (default
-for Ogg Vorbis), \'vorbize\', \'lame\' (default for MP3), \'gogo\', \'bladeenc\',
-\'l3enc\', and \'mp3enc\'. This affects the default location of the binary,
-the variable to pick encoder command-line options from, and where the options
-are given.
+Specifies the style of encoder to use. Valid options are \'oggenc\'
+(default for Ogg Vorbis), \'vorbize\', \'flac\' (default for flacs),
+\'lame\' (default for MP3), \'gogo\', \'bladeenc\', \'l3enc\', and
+\'mp3enc\'. This affects the default location of the binary, the
+variable to pick encoder command-line options from, and where the
+options are given.
 .TP
 .B HELLOINFO
 Specifies the Hello information to send to the CDDB server. The CDDB
@@ -118,17 +119,17 @@
 over 100MB for a machine that can encode music as fast as it can read it).
 .TP
 .B OUTPUTFORMAT
-Specifies the format for completed Ogg or MP3 filenames. Variables are included
-using standard shell syntax. Allowed variables are ALBUMFILE, ARTISTFILE,
-TRACKFILE, and TRACKNUM. Default is
+Specifies the format for completed Ogg, FLAC or MP3 filenames. Variables
+are included using standard shell syntax. Allowed variables are
+ALBUMFILE, ARTISTFILE, TRACKFILE, and TRACKNUM. Default is
 \'${ARTISTFILE}/${TRACKFILE}.${OUTPUTTYPE}\'.
 Make sure to use single quotes around this variable. TRACKNUM is
 automatically zero-padded.
 .TP
 .B OUTPUTTYPE
-Specifies the encoding format to output as well as the default extension and
-encoder. Defaults to "ogg". Valid settings are "ogg" (Ogg Vorbis) and "mp3"
-(MPEG-1 Audio Layer 3).
+Specifies the encoding format to output as well as the default extension
+and encoder. Defaults to "ogg". Valid settings are "ogg" (Ogg Vorbis),
+"flac" (Free Lossless Audio Codec) and "mp3" (MPEG-1 Audio Layer 3).
 .TP
 .B VAOUTPUTFORMAT
 Just like OUTPUTFORMAT but for Various Artists discs. Default is whatever
@@ -137,14 +138,14 @@
 .B PATHNAMES
 The following configuration file options specify the pathnames of their
 respective utilities: LAME, GOGO, BLADEENC, L3ENC, XINGMP3ENC, MP3ENC,
-VORBIZE, OGGENC, ID3, ID3V2, CDPARANOIA, CDDA2WAV, WGET, CDDISCID,
+VORBIZE, OGGENC, FLAC, ID3, ID3V2, CDPARANOIA, CDDA2WAV, WGET, CDDISCID,
 CDDBTOOL, EJECT, DISTMP3, and VORBISCOMMENT.
 .TP
 .B COMMAND-LINE OPTIONS
 If you wish to specify command-line options to any of the programs abcde
 uses, set the following configuration file options: LAMEOPTS, GOGOOPTS,
 BLADEENCOPTS, L3ENCOPTS, XINGMP3ENCOPTS, MP3ENCOPTS, VORBIZEOPTS,
-OGGENCOPTS, ID3OPTS, ID3V2OPTS, CDPARANOIAOPTS, CDDA2WAVOPTS, WGETOPTS,
+OGGENCOPTS, FLACOPTS, ID3OPTS, ID3V2OPTS, CDPARANOIAOPTS, CDDA2WAVOPTS, WGETOPTS,
 CDDBTOOLOPTS, EJECTOPTS, and DISTMP3OPTS.
 .TP
 .B MAXPROCS
@@ -172,7 +173,8 @@
 .B COMMENT
 Specifies a comment to embed in the ID3 or Ogg comment field of each
 finished track. Can be up to 28 characters long. Supports the same
-syntax as OUTPUTFORMAT. Does not currently support ID3v2.
+syntax as OUTPUTFORMAT. Does not currently support ID3v2 or the comment
+capabilities in FLAC version 1.0.4 and above.
 .TP
 .B REMOTEHOSTS
 Specifies a comma-delimited list of systems to use for remote encoding using
@@ -197,7 +199,7 @@
 abcde requires the following backend tools to work:
 .TP
 .B *
-An Ogg or MP3 Encoder (oggenc, vorbize, lame, gogo, bladeenc, l3enc, mp3enc)
+An Ogg, FLAC or MP3 Encoder (oggenc, vorbize, flac, lame, gogo, bladeenc, l3enc, mp3enc)
 .TP
 .B *
 An audio CD reading utility (cdparanoia, cdda2wav)
@@ -212,13 +214,22 @@
 (for MP3s) id3, an id3 tagging program.
 .TP
 .B *
+(for Oggs) vorbiscomment, an Ogg Vorbis commenting program.
+.TP
+.B *
+(for FLACs) metaflac, a FLAC metadata editing program.
+.TP
+.B *
 (optional) distmp3, a client/server for distributed mp3 encoding.
 .SH "SEE ALSO"
 .BR cdparanoia (1),
 .BR cdda2wav (1),
 .BR oggenc (1),
 .BR vorbize (1),
+.BR flac (1),
 .BR id3 (1),
+.BR vorbiscomment (1),
+.BR metaflac (1),
 .BR wget (1),
 .BR cd-discid (1),
 .BR distmp3 (1),
diff -ruN abcde-2.0.3.debian/abcde.conf abcde-2.0.3/abcde.conf
--- abcde-2.0.3.debian/abcde.conf	2002-01-21 13:35:31.000000000 +1100
+++ abcde-2.0.3/abcde.conf	2002-11-25 18:29:53.000000000 +1100
@@ -47,8 +47,10 @@
 #MP3ENC=mp3enc
 #VORBIZE=vorbize
 #OGGENC=oggenc
+#FLAC=flac
 #ID3=id3
 #ID3V2=id3v2
+#METAFLAC=metaflac
 #CDPARANOIA=cdparanoia
 #CDDA2WAV=cdda2wav
 #WGET=wget
@@ -67,8 +69,10 @@
 #MP3ENCOPTS=
 #VORBIZEOPTS=
 #OGGENCOPTS=
+#FLACOPTS=
 #ID3OPTS=
 #ID3V2OPTS=
+#METAFLACOPTS=
 #CDPARANOIAOPTS=
 #CDDA2WAVOPTS=
 #WGETOPTS=
@@ -106,7 +110,7 @@
 # you can specify that here
 #WAVOUTPUTDIR=`pwd`
 
-# OUTPUTTYPE can be either "ogg" or "mp3".
+# OUTPUTTYPE can be either "ogg", "mp3" or "flac".
 #OUTPUTTYPE=ogg
 
 # Output filename format - change this to reflect your inner desire to
Binary files abcde-2.0.3.debian/.abcde.swp and abcde-2.0.3/.abcde.swp differ
diff -ruN abcde-2.0.3.debian/debian/changelog abcde-2.0.3/debian/changelog
--- abcde-2.0.3.debian/debian/changelog	2002-11-25 11:40:57.000000000 +1100
+++ abcde-2.0.3/debian/changelog	2002-11-25 12:45:39.000000000 +1100
@@ -1,3 +1,9 @@
+abcde (2.0.3-1.flac) unstable; urgency=low
+
+  * Add FLAC support (reworked patch from <ben.konrath@utoronto.ca> )
+
+ -- Ben Finney <bignose@zip.com.au>  Mon, 25 Nov 2002 12:30:00 +1100
+
 abcde (2.0.3-1) unstable; urgency=low
 
   * The Fixed-Yet?-How-About-Now?-What-About-Now?-Now? Release
diff -ruN abcde-2.0.3.debian/debian/control abcde-2.0.3/debian/control
--- abcde-2.0.3.debian/debian/control	2002-11-25 11:40:57.000000000 +1100
+++ abcde-2.0.3/debian/control	2002-11-25 17:37:16.000000000 +1100
@@ -11,9 +11,9 @@
 Conflicts: cdgrab
 Replaces: cdgrab
 Provides: cdgrab
-Suggests: eject, distmp3, id3 (>= 0.12), id3v2
+Suggests: flac (>= 1.0.4), eject, distmp3, id3 (>= 0.12), id3v2
 Description: A Better CD Encoder
  A frontend program to cdparanoia, wget, cd-discid, id3, and your favorite
- Ogg or MP3 encoder (defaults to oggenc). Grabs an entire CD and converts
- each track to Ogg or MP3, then comments or ID3-tags each file, with one
- command.
+ Ogg, FLAC or MP3 encoder (defaults to oggenc). Grabs an entire CD and
+ converts each track to Ogg, FLAC or MP3, then comments or ID3-tags each
+ file, with one command.
diff -ruN abcde-2.0.3.debian/README abcde-2.0.3/README
--- abcde-2.0.3.debian/README	2001-08-16 08:23:59.000000000 +1000
+++ abcde-2.0.3/README	2002-11-25 12:27:08.000000000 +1100
@@ -1,16 +1,17 @@
 ABCDE
 =====
 abcde is a frontend command-line utility (actually, a shell script) that
-grabs tracks off a CD, encodes them to ogg or mp3 format, and tags them,
-all in one go.
+grabs tracks off a CD, encodes them to ogg, flac or mp3 format, and tags
+them, all in one go.
 
-Your finished Oggs/MP3's are, by default, stored in a subdirectory of the
-current directory (named after the artist) with a filename based on the
-track title. Spaces are replaced by underscores, and apostrophes and
-control codes are filtered out. Colons are replaced with an underscore and a
-hyphen. The end result usually looks like: Our_Lady_Peace/Supermans_Dead.mp3
-This filename munging is customizable - edit the mungefilename function in
-your abcde.conf to change it.
+Your finished Oggs/FLACs/MP3's are, by default, stored in a subdirectory
+of the current directory (named after the artist) with a filename based
+on the track title. Spaces are replaced by underscores, and apostrophes
+and control codes are filtered out. Colons are replaced with an
+underscore and a hyphen. The end result usually looks like:
+"Our_Lady_Peace/Supermans_Dead.mp3". This filename munging is
+customizable - edit the mungefilename function in your abcde.conf to
+change it.
 
 Need to go through an HTTP proxy for CDDB access? No problem, just export
 your http_proxy variable first so wget can see it.
@@ -43,7 +44,8 @@
 * -e doesn't exist anymore, abcde now presents you with all of the cddb data
   and asks you if you want to edit it. If you don't want to be asked,
   use -N or INTERACTIVE=n
-* The output type defaults to Ogg Vorbis. Specify -o mp3 or OUTPUTTYPE=mp3
+* The output type defaults to Ogg Vorbis. Specify -o flac or OUTPUTTYPE=flac
+  if you want non-lossy encoding with flac. Specify -o mp3 or OUTPUTTYPE=mp3
   if you still want to output mp3's.
 * -l 2 is now just -l, LOWDISK=2 should now be LOWDISK=y
 * -V and -v are gone, abcde will now prompt you if you'd like to use Various
@@ -59,7 +61,10 @@
 
 abcde requires the following backend tools to work:
 
-* An Ogg encoder (oggenc, the default, or vorbize) or:
+* An Ogg encoder (oggenc, the default, or vorbize)
+  You can get oggenc at: http://www.xiph.org/ogg/vorbis/download/
+* A flac encoder (flac)
+  You can get flac at: http://flac.sourceforge.net/
 * An MP3 encoder (lame, gogo, bladeenc, l3enc, etc). Any MP3 encoder that
   takes two filenames on the command line, one for input, one for output,
   will work.


To unsubscribe: echo unsubscribe | mail abcde-request@whimsica.lly.org