Share my script used to split music image file into indivdual track of wav or flac
OS: Debian/ununtu
Install necessary tool:
sudo apt-get clean
sudo apt-get update
sudo apt-get install -y shntool dos2unix enca flac ffmpeg
Convert
# output track in wav format
sudo split.sh CDImage.wav wav
# output track in flac format
sudo split.sh CDImage.wav flac
Split.sh
#/bin/bash
if [ $# -ne 2 ] && [ $# -ne 1 ]
then
echo "Usage: sudo split.sh FILE [DECODE]"
echo "Example: sudo split.sh CDImage wav"
echo " sudo split.sh CDImage flac"
echo " sudo split.sh CDImage.wav"
echo " sudo split.sh CDImage.wav flac"
echo " sudo split.sh CDImage"
echo "Note:"
echo " The Input Audio File = FILE.wav or FILE.flac or FILE.ape"
echo " DECODE = wav or flac (Output Audio Format)"
echo " The Input CUE File = FILE.cue"
exit
fi
BFILE=$1
if [ -f ${BFILE} ];then
AUDIO_FILE=${BFILE}
EXT=${BFILE##*.}
case $EXT in
"wav"|"WAV")
FORMAT="wav"
;;
"flac"|"FLAC")
FORMAT="flac"
;;
"ape"|"APE")
FORMAT="ape"
;;
esac
else if [ -f $BFILE.wav ];then
AUDIO_FILE=$BFILE.wav
FORMAT="wav"
else if [ -f $BFILE.flac ];then
AUDIO_FILE=$BFILE.flac
FORMAT="flac"
else if [ -f $BFILE.ape ];then
AUDIO_FILE=$BFILE.ape
FORMAT="ape"
else
echo "Not found audio file: $1.wav or $1.flac or $1.ape "
echo "Exit"
exit
fi
fi
fi
fi
if [ $# -ne 1 ];then
DECODE=$2
fi
if [ "A${DECODE}B" = "AB" ];then
DECODE="wav"
fi
if [ "A${FORMAT}B" = "AB" ];then
FORMAT="${DECODE}"
fi
if [ "A${DECODE}B" = "AapeB" ];then
DECODE="wav"
fi
echo "Audio File = ${AUDIO_FILE}"
echo "Input Format = ${FORMAT} "
echo "Output Format = ${DECODE} "
if [ "$FORMAT" = "ape" ]
then
echo -e "First, convert ape format to ${DECODE} format, waite a minute..."
DECODE_FILE=$BFILE.${DECODE}
#avconv -i "$AUDIO_FILE" "$DECODE_FILE"
ffmpeg -i "$AUDIO_FILE" "$DECODE_FILE"
AUDIO_FILE=$DECODE_FILE
CONVERT="true"
FORMAT="${DECODE}"
fi
#if [ ! "$DECODE" = "$FORMAT" ];then
#echo -e "First, convert ${FORMAT} format to ${DECODE} format, waite a
#minute..."
#DECODE_FILE=$BFILE.${DECODE}
#avconv -i "$AUDIO_FILE" "$DECODE_FILE"
#ffmpeg -i "$AUDIO_FILE" "$DECODE_FILE"
#AUDIO_FILE=$DECODE_FILE
#CONVERT="true"
#fi
CUE_FILE=$BFILE.cue
CUE_FILE_LINUX=$BFILE-linux.cue
if [ ! -f ${CUE_FILE} ];then
MY_DIR="`dirname ${BFILE}`"
MY_NAME="`basename ${BFILE}`"
MY_BASE="${MY_NAME%.*}"
CUE_FILE=${MY_DIR}/${MY_BASE}.cue
if [ ! -f ${CUE_FILE} ];then
echo "unable to find cue file of:"
echo " $BFILE.cue or ${CUE_FILE} "
exit
fi
fi
CODE="`enca ${CUE_FILE} |grep ";"|sed "s/.*; //"`"
echo "CODE=${CODE}"
echo iconv -f "${CODE}" -t utf8 "$CUE_FILE" -o "$CUE_FILE_LINUX"
iconv -f "${CODE}" -t utf8 "$CUE_FILE" -o "$CUE_FILE_LINUX"
dos2unix "$CUE_FILE_LINUX"
echo shntool split -t "%n-%t" -f "$CUE_FILE_LINUX" -o $DECODE "$AUDIO_FILE"
shntool split -t "%n-%t" -f "$CUE_FILE_LINUX" -o $DECODE "$AUDIO_FILE"
if [ "$CONVERT" = "true" ]
then
if [ ! "AB" = "A${DECODE_FILE}B" ];then
if [ -f ${DECODE_FILE} ];then
echo -e "Remove temporary flac file: $DECODE_FILE"
rm -f "$DECODE_FILE"
fi
fi
fi