#!/bin/bash # burn a CD from one or more FLAC files #TODO: option to do "cdrdao simulate" instead of "write"? COMMAND=write #TODO: option to normalize the wav files? if [ $# -eq 0 ]; then echo "Need at least one FLAC file" exit 127 fi # use a tmp dir for the cdda and toc files BURNFLAC_TMP=`mktemp -d -p /tmp burnflac.XXXXXX` #echo $BURNFLAC_TMP # counter for the wav files i=0 TOC_FILE="$BURNFLAC_TMP/cdda.toc" echo "CD_DA" > $TOC_FILE # shift off the arguments one by one while [ $# -gt 0 ]; do let i=$i+1 FLAC_FILE=$1 WAV_FILE="$BURNFLAC_TMP/cdda-$i.wav" shift if [ ! -r $FLAC_FILE ]; then echo "$FLAC_FILE not found" exit 192 fi CUESHEET=$(metaflac --export-cuesheet-to - $FLAC_FILE 2> /dev/null) if [[ -z $CUESHEET ]]; then # no cuesheet in the FLAC file # fake up a one-track TOC file cat <> $TOC_FILE TRACK AUDIO FILE "$WAV_FILE" 0 END else # substitute the wav filename for the flac filename echo "$CUESHEET" \ | perl -pe'BEGIN { $wav = shift; } s/\".*?\" FLAC/$wav WAVE/' "$WAV_FILE" \ | cue2toc - \ | sed s/CD_DA// \ >> $TOC_FILE fi flac -d -o $WAV_FILE $FLAC_FILE done cdrdao $COMMAND --eject $TOC_FILE rm -rf $BURNFLAC_TMP