-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Package: abcde
Version: 2.3.99-$Revision: 223 $

I have added support for generating toc files within abcde (using
cdrdao).  As part of this patch, it is also possible to generate a cue
file from the toc file.  Cue file generation has also been separated
from the do_discid procedure.  This allows the toc/cue file generation
(which can take a while if it's reading subcode info from the CD) to run
after the steps requiring user input (selection/editing of cddb data).

Using cdrdao to generate a toc file records additional data vs. using
the existing cuefile generation process (mkcue).  cdrdao extracts
CD-TEXT info (if present) and any indexing information present in the
subcode channels, where mkcue simply uses the disc's table of contents
to find track start points.

This patch also currently hard-codes the start point for ONETRACK rips
(ripping the entire CD to a flac file, with optional embedded cue file),
setting it to the start of the disc (frame zero) rather than the start
of track one (abcde default, which does not rip data discs with a pregap
before track 1).  This behavior requires the use of a modified toc2cue
program (patch attached) to create a cuefile that matches a flac file
ripped from the *ENTIRE* CD, and not just from the start of track 1.  I
realize this is likely not desirable for inclusion upstream...I am
including it here since I don't currently have time to properly add
track range support to abcde's onetrack mode, and hardcoding the start
works for what I think most people are doing with onetrack (ripping an
entire CD to a flac archive).

I've also attached my abcde.conf file for reference.  NOTE: The modified
toc2cue program is named toc3cue on my system, as reflected in my
abcde.conf file!

To rip a CD to a flac file with embedded cue file, generating toc and
cue files in the process, set CUEREADERSYNTAX=toc2cue in your
abcde.conf, and make sure your TOC2CUE= program generates an appropriate
cuefile.  Then I run:

  abcde -1 -a default,cue -o flac -t 0 -V

...you may want/need to use different switches, depending on your
abcde.conf file (mine is setup to rip ogg files by default, so I need
all the above switches).  Once you've ripped a CD to a flac file, you
can rip ogg (or whatever) from the flac file by using the -d switch:

  abcde -d /my/flacfile [<more_options>]

- --
Charles Steinkuehler
[EMAIL PROTECTED]

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.4 (MingW32)

iD8DBQFFHAT2enk4xp+mH40RAkEfAKDzOby3lGxEaGeAj/O476ulst2UhQCeIzcw
LkfOgaPLh4+Yq+LYW8cAoD8=
=gjfH
-----END PGP SIGNATURE-----
--- toc2cue.cc	2006-09-28 11:52:00.134573980 -0500
+++ toc3cue.cc	2006-09-28 11:52:00.164569393 -0500
@@ -286,6 +286,9 @@
     return 1;
   }
 
+  if (toc->catalogValid())
+    out << "CATALOG " << toc->catalog() << "\n";
+
   out << "FILE \"" << binFileName << "\" BINARY" << "\n";
 
   long offset = 0;
@@ -326,13 +329,18 @@
       out << "    FLAGS DCP\n";
     }
 
+    if (trun->isrcValid() )
+      out << "    ISRC " << trun->isrc() << "\n";
+
     const SubTrack *strun;
     SubTrackIterator stitr(trun);
     int pregap = 0;
 
     for (strun = stitr.first(); strun != NULL; strun = stitr.next()) {
       if (strun->TrackData::type() == TrackData::ZERODATA) {
-	out << "    PREGAP " << trun->start().str() << "\n";
+//	out << "    PREGAP " << trun->start().str() << "\n";
+	out << "    INDEX 00 00:00:00\n";
+	offset += trun->start().lba();
 	pregap = 1;
       }
       else {
--- abcde.svn	2006-09-28 11:41:31.480734913 -0500
+++ abcde.svn.toc	2006-09-28 11:44:28.203700281 -0500
@@ -1363,6 +1363,38 @@
 					fi
 					;;
 			esac
+			# Lets move the toc file
+			if TOCFILE=$(checkstatus tocfile) >/dev/null ; then 
+				if [ -r "$ABCDETEMPDIR/$TOCFILE" ]; then
+					if checkstatus movetoc-$OUTPUT; then :; else
+						# Silence the Copying output since it overlaps with encoding processes...
+						#run_command '' vecho "Copying toc file to its destination directory..."
+						if checkstatus onetrack >/dev/null ; then
+							case $OUTPUT in
+								wav)
+									if [ "$DOCLEAN" != "y" ] && [ "$FORCE" != "y" ]; then
+										# We dont have the dir, since it was not created before.
+										:
+									else
+										run_command movetoc-$OUTPUT cp "$ABCDETEMPDIR/$TOCFILE" "$OUTPUTDIR/$OUTPUTFILE.toc"
+									fi
+									;;
+								# NOTE: Creating a toc file with the 3-char-extension files is to comply with
+								# http://brianvictor.tripod.com/mp3cue.htm#details
+								[a-z0-9][a-z0-9][a-z0-9])
+									run_command movetoc-$OUTPUT cp "$ABCDETEMPDIR/$TOCFILE" "$OUTPUTDIR/$OUTPUTFILE.toc"
+									;;
+								*)
+									run_command movetoc-$OUTPUT cp "$ABCDETEMPDIR/$TOCFILE" "$OUTPUTDIR/$OUTPUTFILE.$OUTPUT.toc"
+									;;
+							esac
+						else
+							run_command movetoc-$OUTPUT cp "$ABCDETEMPDIR/$TOCFILE" "$OUTPUTFILEDIR/$TOCFILE"
+						fi
+						echo movetoc-$OUTPUT >> "$ABCDETEMPDIR/status"
+					fi
+				fi
+			fi
 			# Lets move the cue file
 			if CUEFILE=$(checkstatus cuefile) >/dev/null ; then 
 				if [ -r "$ABCDETEMPDIR/$CUEFILE" ]; then
@@ -1894,6 +1926,22 @@
 		# Store the abcde version in the status file.
 		echo "abcde-version=$VERSION" >> "$ABCDETEMPDIR/status"
 	fi
+}
+
+do_toc()
+{
+	if [ X"$DOTOC" = "Xy" -a X"$WEHAVEACD" = "Xy" ]; then
+		if checkstatus tocfile > /dev/null 2>&1 ; then :; else
+			TOCFILE=toc-$(echo "$TRACKINFO" | cut -f1 -d' ').txt
+			if $TOCREADER $TOCREADEROPTS "$CDROM" "$ABCDETEMPDIR/$TOCFILE"; then
+				echo tocfile=$TOCFILE >> "$ABCDETEMPDIR/status"
+			fi
+		fi
+	fi
+}
+
+do_cue()
+{
 	if [ X"$DOCUE" = "Xy" -a X"$WEHAVEACD" = "Xy" ]; then
 		if checkstatus cuefile > /dev/null 2>&1 ; then :; else
 			CUEFILE=cue-$(echo "$TRACKINFO" | cut -f1 -d' ').txt
@@ -1907,13 +1955,28 @@
 					fi
 					;;
 				*)
-					if $CUEREADER $CUEREADEROPTS > "$ABCDETEMPDIR/$CUEFILE"; then
-						echo cuefile=$CUEFILE >> "$ABCDETEMPDIR/status"
-					else
-						log warning "reading the CUE sheet is still considered experimental"
-						log warning "and there was a problem with the CD reading. abcde will continue,"
-						log warning "but consider reporting the problem to the abcde author"
-					fi
+					case $CUEREADERSYNTAX in
+						default|mkcue)
+							if $CUEREADER $CUEREADEROPTS > "$ABCDETEMPDIR/$CUEFILE"; then
+								echo cuefile=$CUEFILE >> "$ABCDETEMPDIR/status"
+							else
+								log warning "reading the CUE sheet is still considered experimental"
+								log warning "and there was a problem with the CD reading. abcde will continue,"
+								log warning "but consider reporting the problem to the abcde author"
+							fi
+							;;
+						toc2cue)
+							if TOCFILE="$ABCDETEMPDIR"/$(checkstatus tocfile); then
+								if $CUEREADER $CUEREADEROPTS "$TOCFILE" "$ABCDETEMPDIR/$CUEFILE"; then
+									echo cuefile=$CUEFILE >> "$ABCDETEMPDIR/status"
+								else
+									log warning "toc to cuesheet conversion failed."
+								fi
+							else
+								log warning "cuesheet conversion failed: cannot read toc file."
+							fi
+							;;
+					esac
 					;;
 			esac
 		fi
@@ -2662,7 +2725,8 @@
 			cdparanoia) 
 				#XX FIXME XX
 				# Add a variable to check if tracks are provided in command line and if not, use "0-" to rip the tracks
-				READTRACKNUMS="$FIRSTTRACK-$LASTTRACK" ;;
+				#READTRACKNUMS="$FIRSTTRACK-$LASTTRACK" ;;
+				READTRACKNUMS="[00:00:00.00]-$LASTRACK" ;;
 			cdda2wav) READTRACKNUMS="$FIRSTTRACK+$LASTTRACK" ;;
 			*) echo "abcde error: $CDROMREADERSYNTAX does not support ONETRACK mode"
 				exit 1 ;;
@@ -2876,6 +2940,7 @@
 AACENCODERSYNTAX=default
 NORMALIZERSYNTAX=default
 CUEREADERSYNTAX=default
+TOCREADERSYNTAX=default
 
 OUTPUTFORMAT='${ARTISTFILE}-${ALBUMFILE}/${TRACKNUM}.${TRACKFILE}'
 # Use the following VAOUTPUTFORMAT to revert to 2.0.x VA format:
@@ -2949,8 +3014,9 @@
 VORBISGAIN=vorbisgain
 MP3GAIN=mp3gain
 MPPGAIN=replaygain
+CDRDAO=cdrdao
+TOC2CUE=toc2cue
 MKCUE=mkcue
-MKTOC=cdrdao
 DIFF=diff
 CUE2DISCID=builtin
 
@@ -3250,12 +3316,14 @@
 DOPLAYLIST=n
 DOCLEAN=n
 DOCUE=n
+DOTOC=n
 
 for ACTION in $(echo $ACTIONS | tr , \ )
 do
 	case $ACTION in
 		default) DOCDDB=y; DOREAD=y; DOENCODE=y; DOTAG=y; DOMOVE=y; DOCLEAN=y;;
 		cue) DOCUE=y ; MAKECUEFILE=y ;;
+		toc) DOTOC=y ;;
 		cddb) DOCDDB=y;;
 		read) DOREAD=y;;
 		normalize) DONORMALIZE=y; DOREAD=y;;
@@ -3565,12 +3633,23 @@
 	NOGAP=n
 fi
 
+# Options for TOC reader
+case "$TOCREADERSYNTAX" in
+	default|cdrdao)
+		TOCREADEROPTS="read-toc --device"
+		TOCREADER="$CDRDAO"
+		;;
+esac
+
 # Options for mkcue
 case "$CUEREADERSYNTAX" in
 	default|mkcue)
 		CUEREADEROPTS="${CDROM}"
 		CUEREADER="$MKCUE"
 		;;
+	toc2cue)
+		CUEREADEROPTS=""
+		CUEREADER="$TOC2CUE"
 esac
 
 # which information retrieval tool are we using?
@@ -3620,8 +3699,13 @@
 fi
 if [ "$DOCUE" = "y" ]; then
 	NEEDCUEREADER=y
+	if [ "$CUEREADERSYNTAX" = "toc2cue" ]; then
+		DOTOC=y
+	fi
+fi
+if [ "$DOTOC" = "y" ]; then
+	NEEDTOCREADER=y
 fi
-
 if [ X"$CDSPEEDVALUE" != "X" ] && [ "$DOREAD" = "y" ]; then
 	case "$CDROMREADERSYNTAX" in
 		cdparanoia|debug) CDROMREADEROPTS="$CDPARANOIAOPTS -S $CDSPEEDVALUE" ;;
@@ -3689,8 +3773,8 @@
 	${NEEDNORMALIZER+$NORMALIZER} ${NEEDEJECT+$EJECT} \
 	${NEEDDISKTOOL+disktool} ${NEEDCDSPEED+$CDSPEED} \
 	${NEEDVORBISGAIN+$VORBISGAIN} ${NEEDMP3GAIN+$MP3GAIN} \
-	${NEEDMPPGAIN+$MPPGAIN} ${NEEDCUEREADER+$CUEREADER} \
-	${NEEDCUE2DISCID+$CUE2DISCID}
+	${NEEDMPPGAIN+$MPPGAIN} ${NEEDTOCREADER+$TOCREADER} \
+	${NEEDCUEREADER+$CUEREADER} ${NEEDCUE2DISCID+$CUE2DISCID}
 do
 	checkexec "$X"
 done
@@ -3771,6 +3855,14 @@
 	eval "$($CDDBTOOL parse "$CDDBDATA")"
 fi
 
+if [ X"$DOTOC" = "Xy" ]; then
+	do_toc
+fi
+
+if [ X"$DOCUE" = "Xy" ]; then
+	do_cue
+fi
+
 # Before reading tracks, we set the speed of the device
 
 if [ X"$CDSPEEDVALUE" != "X" ]; then
# System defaults for abcde version 2.2.x
# Nothing in this file is uncommented by default.
# 
# If you wish to override these system-wide settings, create your own
# .abcde.conf file in your home directory.

# CDDB options

# If you wish to use a different CDDB server, edit this line.
# If you just wanted to use a proxy server, just set your http_proxy
# environment variable - wget will use it correctly.
#CDDBURL="http://freedb.freedb.org/~cddb/cddb.cgi";
#CDDBURL="http://freedb2.org:80/~cddb/cddb.cgi";
CDDBURL="http://us.freedb.org:80/~cddb/cddb.cgi";

# The CDDB protocol level.
# Right now 5 is latin1 output and 6 is UTF8 encoding.
#CDDBPROTO=6

# The CDDB protocol requires hello information, including a valid username
# and hostname. If you feel paranoid about giving away such info, edit this
# line - the format is [EMAIL PROTECTED]
#HELLOINFO="[EMAIL PROTECTED]"

# This controls the email address CDDB changes are submitted to.
[EMAIL PROTECTED]

# The following options control whether or not fetched CDDB entries
# are cached locally in $CDDBLOCALDIR
#CDDBCOPYLOCAL="n"
#CDDBLOCALDIR="$HOME/.cddb"
#CDDBLOCALRECURSIVE="n"

# If NOSUBMIT is set to y, then abcde will never prompt asking if you
# wish to submit your edited cddb file.
#NOSUBMIT=n

# If NOCDDBQUERY is set to y, then abcde will never even try to access
# the CDDB server; running abcde will automatically drop you into a
# blank cddb file to edit at your leisure.  This is the same as the
# -n option.  NOCDDBQUERY=y implies NOSUBMIT=y.
#NOCDDBQUERY=n

# Select here if you want to use the locally stored CDDB entries.
# This is useful if you do a lot of editing to those CDDB entries. 
# Also, other tools like Grip store CDDB entries under $HOME/.cddb,
# so they can be reused when ripping CDs.
#CDDBUSELOCAL="n"

# List, separated with a comma, the fields we want the parsing function to
# output. Defaults to YEAR and GENRE, for a complete list of fields provided by
# CDDB.
# The fields are not case sensitive. Actually, "y,g" will work as fine as "Y,G"
# or "YEAR, GENRE"
#SHOWCDDBFIELDS=year,genre

# Specify the style of encoder to use here - 
# oggenc, vorbize - for OGGENCODERSYNTAX
# lame, gogo, bladeenc, l3enc, xingmp3enc, mp3enc - for MP3ENCODERSYNTAX
# flac - the only supported for FLACENCODERSYNTAX at the moment
# speexenc - the only encoder for SPEEXENCODERSYNTAX
# mppenc - encoder for MPPENCODERSYNTAX
# default is a valid option for oggenc, lame, flac, speexenc and mppenc.
# Currently this affects the default location of the binary, the variable
# to pick encoder command-line options from, and where the options are
# given.
#MP3ENCODERSYNTAX=default
MP3ENCODERSYNTAX=toolame
#OGGENCODERSYNTAX=default
#FLACENCODERSYNTAX=default
#SPEEXENCODERSYNTAX=default
#MPPENCODERSYNTAX=default
#AACENCODERSYNTAX=default

# Specify the syntax of the normalize binary here - so far only 'normalize'
# is supported.
#NORMALIZERSYNTAX=default

# CD reader program to use - currently recognized options are 'cdparanoia',
# 'cdda2wav', 'dagrab', 'cddafs' (Mac OS X only) and 'flac'.
#CDROMREADERSYNTAX=cdparanoia

# CUE reader syntax for the CUE reader program to use.
# abcde supports 2 CUE modes: 'mkcue' and 'abcde.mkcue' so you can set the
# MKCUE variable accordingly. The 'abcde.mkcue' uses an internal
# implementation, without the need of an external program.
#CUEREADERSYNTAX=default
CUEREADERSYNTAX=toc2cue

# Specify the program to convert a CUE sheet back to a CD disc ID for CDDB 
queries.
# Select between '/path/to/cue2discid' (provided as an example) or
# 'abcde.cue2discid', implemented internaly.
CUE2DISCID=abcde.cue2discid

# Keep the wav files after encoding. Set it to "y" and remove "clean" from
# the list of default actions, since we purge the temp directory as default.
#KEEPWAVS=n

# Track padding: force abcde to pad tracks using 0, so every song uses a two
# digit entry. If set to "y", even a single song encoding outputs a file like
# 01.my_song.ext
#PADTRACKS=n
PADTRACKS=y

# Define if you want abcde to be non-interactive.
# Keep in mind that there is no way to deactivate it right now in the command
# line, so setting this option makes abcde to be always non-interactive.
#INTERACTIVE=n

# Specify 'nice'ness of the encoder, the CD reader and the distmp3 proc.
# This is a relative 'nice'ness (that is, if the parent process is at a
# nice level of 12, and the ENCNICE is set to 3, then the encoder will
# run with an absolute nice value of 15. Note also, that setting these
# to be empty will result in some default niceness increase (4 in tcsh
# and 10 using the bsdutils' nice).
#ENCNICE=10
#READNICE=10
#DISTMP3NICE=10

# Paths of programs to use
#LAME=lame
#TOOLAME=toolame
#GOGO=gogo
#BLADEENC=bladeenc
#L3ENC=l3enc
#XINGMP3ENC=xingmp3enc
#MP3ENC=mp3enc
#VORBIZE=vorbize
#OGGENC=oggenc
#FLAC=flac
#SPEEXENC=speexenc
#MPPENC=mppenc
#AACENC=faac

#ID3=id3
#ID3V2=id3v2
#CDPARANOIA=cdparanoia
#CDDA2WAV=cdda2wav
#CDDAFS=cp
#CDDISCID=cd-discid
#CDDBTOOL=cddb-tool
#EJECT=eject
#MD5SUM=md5sum
#DISTMP3=distmp3
#VORBISCOMMENT=vorbiscomment
#METAFLAC=metaflac
#NORMALIZE=normalize-audio
#CDSPEED=eject
#VORBISGAIN=vorbisgain
#CDRDAO=cdrdao
#TOC2CUE=toc2cue
TOC2CUE=toc3cue
#MKCUE=mkcue
MKCUE=abcde.mkcue
CUE2DISCID=abcde.cue2discid
#DIFF=diff

# Options to call programs with:

# If HTTPGET is modified, the HTTPGETOPTS options should also be defined 
# accordingly. If HTTPGET is changed, the default options will be set,
# if HTTPGETOPTS is empty or not defined.
#HTTPGET=wget
# for fetch (FreeBSD): HTTPGETOPTS="-q -o -"
# for wget: HTTPGETOPTS="-q -O -"
# for curl (MacOSX): HTTPGETOPTS="-f -s"
#HTTPGETOPTS="-q -O -"

# MP3:
#LAMEOPTS=
#TOOLAMEOPTS=
#GOGOOPTS=
#BLADEENCOPTS=
#L3ENCOPTS=
#XINGMP3ENCOPTS=
#MP3ENCOPTS=

# Ogg:
#VORBIZEOPTS=
OGGENCOPTS="-q 5"

# FLAC:
FLACOPTS="--best -S X"

# Speex:
#SPEEXENCOPTS=

# MPP/MP+ (Musepack):
# For the encoder options take a look at the manpage. Set them like this:
# MPPENCOPTS='--xtreme' if you wish to set more options then:
# MPPENCOPTS='--xtreme --skip 20 --fade 10'
#MPPENCOPTS=

# M4A/AAC
#AACENCOPTS=

#ID3OPTS=
#ID3V2OPTS=
CDPARANOIAOPTS="-O 30 --never-skip"
#CDDA2WAVOPTS=
#CDDAFSOPTS="-f"
#CDDBTOOLOPTS=
#EJECTOPTS=
#DISTMP3OPTS=
#NORMALIZEOPTS=
#CDSPEEDOPTS="-x"
#CDSPEEDVALUE=""
#MKCUEOPTS=""
#MKTOCOPTS=""
#DIFFOPTS=""
#VORBISCOMMENTOPTS="-R"
#METAFLACOPTS="--no-utf8-convert"
#DIFFOPTS=""

# Actions to take
# Comma-separated list of one or more of the following:
#  cddb,toc,cue,read,normalize,encode,tag,move,playlist,clean,default
#   encode implies read
#   normalize implies read
#   tag implies cddb,read,encode
#   move implies cddb,read,encode,tag
#   playlist implies cddb
# An action can be added to the "default" action by specifying it along with
# "default", without having to repeat the default ones:
#  ACTIONS=default,playlist
# The default action list (referenced as "default") is defined in the following
# comment:
#ACTIONS=cddb,read,encode,tag,move,clean

# CD device you want to read from
# It can be defined as a singletrack flac file, but since it might change from
# file to file it makes little sense to define it here.
#CDROM=/dev/cdrom
CDROM=/dev/cdrom
# If we are using the IDE bus, we need CDPARANOIACDROMBUS defined as "d"
# If we are using the ide-scsi emulation layer, we need to define a "g"
#CDPARANOIACDROMBUS="d"

# If you'd like to make a default location that overrides the current
# directory for putting mp3's, uncomment this.
#OUTPUTDIR=`pwd`
OUTPUTDIR=/home/charles/music

# Or if you'd just like to put the temporary .wav files somewhere else
# you can specify that here
#WAVOUTPUTDIR=`pwd`

# OUTPUTTYPE can be either "ogg", "mp3", "flac" or "spx", or a combination
# of them separated with ",": "ogg,mp3".
#OUTPUTTYPE=ogg
OUTPUTTYPE="ogg"

# Output filename format - change this to reflect your inner desire to
# organize things differently than everyone else :)
# You have the following variables at your disposal:
# OUTPUT, GENRE, ALBUMFILE, ARTISTFILE, TRACKFILE, and TRACKNUM.
# Make sure to single-quote this variable. abcde will automatically create
# the directory portion of this filename.
# NOTICE: OUTPUTTYPE has been deprecated in the OUTPUTFORMAT string.
# Since multiple-output was integrated we always append the file type
# to the files. Remove it from your user defined string if you are getting
# files like ".ogg.ogg".
#OUTPUTFORMAT='${ARTISTFILE}-${ALBUMFILE}/${TRACKNUM}.${TRACKFILE}'
OUTPUTFORMAT='${ARTISTFILE}/${ALBUMFILE}/${TRACKNUM}.${TRACKFILE}'

# Like OUTPUTFORMAT but for Various Artists discs.
#VAOUTPUTFORMAT='Various-${ALBUMFILE}/${TRACKNUM}.${ARTISTFILE}-${TRACKFILE}'
VAOUTPUTFORMAT='$(CSvadir)/${ALBUMFILE}/${TRACKNUM}.${ARTISTFILE} - 
${TRACKFILE}'

# Like OUTPUTFORMAT and VAOUTPUTFORMAT but for the ONEFILE rips.
ONETRACKOUTPUTFORMAT=$OUTPUTFORMAT
VAONETRACKOUTPUTFORMAT=$VAOUTPUTFORMAT

# Define how many encoders to run at once. This makes for huge speedups
# on SMP systems. Defaults to 1. Equivalent to -j.
#MAXPROCS=2

# Support for systems with low disk space:
# n:    Default parallelization (read entire CD in while encoding)
# y:    No parallelization (rip, encode, rip, encode...)
#LOWDISK=n

# If set to y, enables batch mode normalization, which preserves relative
# volume differences between tracks of an album. 
#BATCHNORM=n

# Enables nogap encoding when using the 'lame' encoder.
#NOGAP

# Set the playlist file location format. Uses the same variables and format
# as OUTPUTFORMAT. If the playlist is specified to be in a subdirectory, it
# will be created for you and the playlist will reference files from that
# subdirectory.
#PLAYLISTFORMAT='${ARTISTFILE}-${ALBUMFILE}.${OUTPUT}.m3u'
PLAYLISTFORMAT='${ARTISTFILE}/${ALBUMFILE}.${OUTPUT}.m3u'
# If you want to prefix every filename in a playlist with an arbitrary
# string (such as 'http://you/yourstuff/'), use this option
#PLAYLISTDATAPREFIX=''

#Like PLAYLIST{FORMAT,DATAPREFIX} but for Various Artists discs:
#VAPLAYLISTFORMAT='${ARTISTFILE}-${ALBUMFILE}.${OUTPUT}.m3u'
VAPLAYLISTFORMAT='$(CSvadir)/${ALBUMFILE}.${OUTPUT}.m3u'
#VAPLAYLISTDATAPREFIX=''

#This will give the playlist CR-LF line-endings, if set to "y".
#(some hardware players insist on CR-LF line-endings)
#DOSPLAYLIST=n

# Custom filename munging:
# By default, abcde will do the following to CDDB data to get a useful
# filename:
# * Translate colons to a space and a dash for Windows compatibility
# * Eat control characters, single quotes, and question marks
# * Translate spaces and forward slashes to underscores
# * Translate stars into pluses.
# To change that, redefine the mungefilename function.
# mungefilename receives the CDDB data (artist, track, title, whatever)
# as $1 and outputs it on stdout.
mungefilename ()
{
#       echo "$@" | sed s,:,\ -,g | tr \ /\* __+ | tr -d \'\"\?\[:cntrl:\]
        echo "$@" | sed s,:,\ -,g | tr /\* _+ | tr -d \'\"\?\[:cntrl:\]
}

# Custom genre munging:
# By default we just transform uppercase to lowercase. Not much of a fancy
# function, with not much use, but one can disable it or just turn the first
# Uppercase.
#mungegenre ()
#{
#       echo $CDGENRE | tr "[:upper:]" "[:lower:]"
#}


# CHARLES STEINKUEHLER
# Custom function to put Soundtracks in their own directory
CSvadir ()
{
        case ${GENRE} in
                soundtrack)     echo Soundtracks ;;
                *)              echo Various ;;
        esac
}

# Custom pre-read function
# By default it does nothing.
# You can set some things to get abcde function in better ways:
# * Close the CD tray using eject -t (if available in eject and supported by 
#   your CD device.
# * Set the CD speed. You can also use the built-in options, but you can also 
#   set it here. In Debian, eject -x and cdset -x do the job.
# KEEP IN MIND that executables included in pre_read must be in your $PATH or
# you have to define them with full /path/to/binary
# Uncomment and substitute the ":" with your commands.
#pre_read ()
#{
#:
#}

# Custom post-read function
# By default it does nothing.
# You can set some things to get abcde function in better ways:
# * Store a copy of the CD TOC.
# KEEP IN MIND that executables included in post_read must be in your $PATH or
# you have to define them with full /path/to/binary
# Uncomment and substitute the ":" with your commands.
#post_read ()
#{
#:
#}

# If you'd like to have abcde eject the cdrom after all the tracks have been
# read, uncomment the following line.
#EJECTCD=y
EJECTCD=y

# To encode on the remote machines foo, bar, baz, quux, and qiix, as well as
# on the local machine (requires distmp3 to be installed on local machine and
# distmp3host to be installed and running on all remote machines - see README)
#REMOTEHOSTS=foo,bar,baz,quux,qiix

# Set to obtain some information about actions happening in the background
# Useful if you have a slow network or CDDB servers seem unresponsive.
#EXTRAVERBOSE=n

Reply via email to