"Fossies" - the Fresh Open Source Software Archive

Member "burncdda-1.8.3/decodenorm.func" (17 May 2011, 8279 Bytes) of package /linux/privat/old/burncdda-1.8.3.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Bash source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 #!/usr/bin/env bash
    2 #------------------------------------------------------------------------------
    3 # burnCDDA is a shell script for burning Audio-CDs with
    4 # cdrdao and cdrecord.
    5 #
    6 # (C) 2001 by Thorsten Muehlfelder <thenktor@gmx.de>
    7 #
    8 # This program is free software; you can redistribute it and/or 
    9 # modify it under the terms of the GNU General Public License (version 2)
   10 # as published by the Free Software Foundation;
   11 # 
   12 # This program is distributed in the hope that it will be useful, 
   13 # but WITHOUT ANY WARRANTY; without even the implied warranty of 
   14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
   15 # GNU General Public License for more details. 
   16 # 
   17 # You should have received a copy of the GNU General Public License 
   18 # along with this program; if not, write to the Free Software 
   19 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 
   20 #------------------------------------------------------------------------------
   21 
   22 # errormessage of decodenorm
   23 function decerror()
   24 {
   25 DECERROR=$DECERROR+1
   26 echo -e "${RED}WARNING:${NOCOLOR} An error occurred!"
   27 echo -e "${BLUE}Press any key${NOCOLOR}"
   28 read -n1
   29 echo ""
   30 continue
   31 }
   32 
   33 
   34 # calculates length of single tracks and adds them to CDTIME
   35 function timecount()
   36 {
   37 FILESIZE=`ls -l "$1" | $GAWK '{print $5}'`
   38 FILETIME=($FILESIZE/176400)
   39 MINUTES=($FILETIME/60)
   40 SECONDS=`expr $FILETIME % 60`
   41 if [ $SECONDS -le 9 ]; then
   42     echo "Track Length: $MINUTES:0$SECONDS"
   43 else
   44     echo "Track Length: $MINUTES:$SECONDS"
   45 fi
   46 CDTIME=($CDTIME+$FILETIME)
   47 }
   48 
   49 
   50 # decode and normalize function
   51 function decodenorm()
   52 {
   53 mkdir "$IMGDIR/$WAVNAME"
   54 if [ $CDEXTRA = 1 ]; then
   55     mkdir "$IMGDIR/$WAVNAME/CD-EXTRA"
   56     echo "CD-Extra: yes" > "$IMGDIR/$WAVNAME/WAVINFO"
   57 else
   58     echo "CD-Extra: no" > "$IMGDIR/$WAVNAME/WAVINFO"
   59 fi
   60 if [ $NORMSET = 1 ]; then
   61     echo "Normalized: yes ($NORMAMP)" >> "$IMGDIR/$WAVNAME/WAVINFO"
   62 else
   63     echo "Normalized: no" >> "$IMGDIR/$WAVNAME/WAVINFO"
   64 fi
   65 # reset some variables
   66 N=0
   67 LN=1
   68 DECERROR=0
   69 NOTREADABLE=0
   70 CDTIME=0
   71 CDEXTRATSIZE=0
   72 while [ $LN -le $MAXLN ]; do
   73     LINE=`$HEAD -$LN "$PLAYLIST" | $TAIL -1 | $SED s/$'\r'//`
   74     # check if first character of the line is "#" and if yes skip the line
   75     EXTENDED=`echo "$LINE" | $HEAD -c 1`
   76     if [ "$EXTENDED" = "#" ]; then
   77         LN=$LN+1
   78         continue
   79     fi
   80     # correct some errors caused by drag and drop from the file manager
   81     FILEMANAGER=`echo "$LINE" | $HEAD -c 8`
   82     if [ "$FILEMANAGER" = "file:///" ]; then
   83         # use # instead of / as separator and substitude file:/// with /
   84         # substitude %20 with ' '
   85         # WARNING: there are many errors with special characters left
   86         # don't know how to fix it in a simple way
   87         LINE=`echo "$LINE" | $SED s#^file:///#/# | $SED s/%20/' '/g`
   88     fi
   89     echo "File: $LINE"
   90     # cut the part after the "." and set it as TYP
   91     TYP=`echo "$LINE" | $GAWK 'BEGIN { FS = "." } {if (NF > 1) print $NF}' | $TR [:upper:] [:lower:]`
   92     N=$N+1
   93     LN=$LN+1
   94     if [ $N -le 9 ]; then
   95         LL="0"
   96     else
   97         LL=""
   98     fi
   99     if [ -r "$LINE" ]; then
  100         # copy file to CD-EXTRA directory?
  101         if [ $CDEXTRA = 1 ]; then
  102             cp "$LINE" "$IMGDIR/$WAVNAME/CD-EXTRA/"
  103         fi
  104         # decode different file types
  105         if [ "$TYP" = "mp3" -a "$MPG321" != "NONE" ]; then
  106             echo "mpg321..."
  107             $NICE -n $NICELEVEL $MPG321 -q --wav "$IMGDIR/$WAVNAME/$WAVNAME.$LL$N.wav" "$LINE" || decerror
  108             echo "--> $WAVNAME.$LL$N.wav"
  109             if [ $NORMSET = 1 ]; then
  110                 echo "normalize..."
  111                 $NICE -n $NICELEVEL $NORMALIZE -q --amplitude=$NORMAMP "$IMGDIR/$WAVNAME/$WAVNAME.$LL$N.wav" || decerror
  112                 echo "--> $WAVNAME.$LL$N.wav was normalized to $NORMAMP"
  113             fi
  114             timecount "$IMGDIR/$WAVNAME/$WAVNAME.$LL$N.wav"
  115             echo -e "${GREEN} OK${NOCOLOR}"
  116         elif [ "$TYP" = "ogg" -a "$OGGDEC" != "NONE" ]; then
  117             echo "oggdec..."
  118             $NICE -n $NICELEVEL $OGGDEC -Q -o "$IMGDIR/$WAVNAME/$WAVNAME.$LL$N.wav" "$LINE" || decerror
  119             echo "--> $WAVNAME.$LL$N.wav"
  120             if [ $NORMSET = 1 ]; then
  121                 echo "normalize..."
  122                 $NICE -n $NICELEVEL $NORMALIZE -q --amplitude=$NORMAMP "$IMGDIR/$WAVNAME/$WAVNAME.$LL$N.wav" || decerror
  123                 echo "--> $WAVNAME.$LL$N.wav was normalized to $NORMAMP"
  124             fi
  125             timecount "$IMGDIR/$WAVNAME/$WAVNAME.$LL$N.wav"
  126             echo -e "${GREEN} OK${NOCOLOR}"
  127         elif [ "$TYP" = "mpc" -a "$MPPDEC" != "NONE" ]; then
  128             echo "mppdec..."
  129             $NICE -n $NICELEVEL $MPPDEC --silent "$LINE" "$IMGDIR/$WAVNAME/$WAVNAME.$LL$N.wav" || decerror
  130             echo "--> $WAVNAME.$LL$N.wav"
  131             if [ $NORMSET = 1 ]; then
  132                 echo "normalize..."
  133                 $NICE -n $NICELEVEL $NORMALIZE -q --amplitude=$NORMAMP "$IMGDIR/$WAVNAME/$WAVNAME.$LL$N.wav" || decerror
  134                 echo "--> $WAVNAME.$LL$N.wav was normalized to $NORMAMP"
  135             fi
  136             timecount "$IMGDIR/$WAVNAME/$WAVNAME.$LL$N.wav"
  137             echo -e "${GREEN} OK${NOCOLOR}"
  138         elif [ "$TYP" = "flac" -a "$FLACDEC" != "NONE" ]; then
  139             echo "flac -d..."
  140             $NICE -n $NICELEVEL $FLACDEC -s -d -o "$IMGDIR/$WAVNAME/$WAVNAME.$LL$N.wav" "$LINE" || decerror
  141             echo "--> $WAVNAME.$LL$N.wav"
  142             if [ $NORMSET = 1 ]; then
  143                 echo "normalize..."
  144                 $NICE -n $NICELEVEL $NORMALIZE -q --amplitude=$NORMAMP "$IMGDIR/$WAVNAME/$WAVNAME.$LL$N.wav" || decerror
  145                 echo "--> $WAVNAME.$LL$N.wav was normalized to $NORMAMP"
  146             fi
  147             timecount "$IMGDIR/$WAVNAME/$WAVNAME.$LL$N.wav"
  148             echo -e "${GREEN} OK${NOCOLOR}"
  149         elif [ "$TYP" = "wav" -a "$SOX" != "NONE" ]; then
  150             echo "sox..."
  151             $NICE -n $NICELEVEL $SOX "$LINE" -r 44100 -c 2 "$IMGDIR/$WAVNAME/$WAVNAME.$LL$N.wav" || decerror
  152             echo "--> $WAVNAME.$LL$N.wav"
  153             if [ $NORMSET = 1 ]; then
  154                 echo "normalize..."
  155                 $NICE -n $NICELEVEL $NORMALIZE -q --amplitude=$NORMAMP "$IMGDIR/$WAVNAME/$WAVNAME.$LL$N.wav" || decerror
  156                 echo "--> $WAVNAME.$LL$N.wav was normalized to $NORMAMP"
  157             fi
  158             timecount "$IMGDIR/$WAVNAME/$WAVNAME.$LL$N.wav"
  159             echo -e "${GREEN} OK${NOCOLOR}"
  160         else
  161             echo "mplayer..."
  162             $NICE -n $NICELEVEL $MPLAYER -really-quiet -noconsolecontrols -vc null -vo null \
  163                 -ao pcm:waveheader:fast:file="$IMGDIR/$WAVNAME/$WAVNAME.$LL$N.wav" \
  164                 -af resample=44100:0:2,channels=2 "$LINE" 1> /dev/null 2> /dev/null
  165             if [ ! -r "$IMGDIR/$WAVNAME/$WAVNAME.$LL$N.wav" ]; then
  166                 decerror
  167             fi
  168             echo "--> $WAVNAME.$LL$N.wav"
  169             if [ $NORMSET = 1 ]; then
  170                 echo "normalize..."
  171                 $NICE -n $NICELEVEL $NORMALIZE -q --amplitude=$NORMAMP "$IMGDIR/$WAVNAME/$WAVNAME.$LL$N.wav" || decerror
  172                 echo "--> $WAVNAME.$LL$N.wav was normalized to $NORMAMP"
  173             fi
  174             timecount "$IMGDIR/$WAVNAME/$WAVNAME.$LL$N.wav"
  175             echo -e "${GREEN} OK${NOCOLOR}"
  176         fi
  177     else
  178         echo "$LINE does not exist or is not readable"
  179         NOTREADABLE=$NOTREADABLE+1
  180         decerror
  181     fi
  182     echo -e "\n"
  183 done
  184 UNKNOWNERROR=$DECERROR-$NOTREADABLE
  185 if [ $DECERROR -ge 1 ]; then
  186     echo -e "WARNING:${RED} $DECERROR ${NOCOLOR}errors occurred at decoding. Perhaps some files will not be burned."
  187     echo -e "${RED} $NOTREADABLE ${NOCOLOR}files did not exist or were not readable."
  188     echo -e "${RED} $UNKNOWNERROR ${NOCOLOR}unknown errors. \n"
  189 fi
  190 echo "Processed $MAXN files in '$WAVNAME':"
  191 MINUTES=($CDTIME/60)
  192 SECONDS=`expr $CDTIME % 60`
  193 if [ $SECONDS -le 9 ]; then
  194     echo "Disc Length: $MINUTES:0$SECONDS"
  195     echo "Disc Length: $MINUTES:0$SECONDS" >> "$IMGDIR/$WAVNAME/WAVINFO"
  196 else
  197     echo "Disc Length: $MINUTES:$SECONDS"
  198     echo "Disc Length: $MINUTES:$SECONDS" >> "$IMGDIR/$WAVNAME/WAVINFO"
  199 fi
  200 if [ $CDEXTRA = 1 ]; then
  201     # get number of sectors with mkisofs
  202     CDEXTRATSIZE=$($MKISOFS -r -J -joliet-long -l -print-size "$IMGDIR/$WAVNAME/CD-EXTRA/" 2>&1 | $TAIL -n1 | $SED -e 's/^.*\ =\ //')
  203     # a sector has 2048 bytes, 500 sectors are 1 MiB
  204     CDEXTRAMB=($CDEXTRATSIZE/500)
  205     echo "Data Size: $CDEXTRAMB MiB ($CDEXTRATSIZE sectors)"
  206     echo "Data Size: $CDEXTRAMB MiB" >> "$IMGDIR/$WAVNAME/WAVINFO"
  207     # total CDTIME is audio time + data "time" (a second audio uses 75 sectors) + ca. 160 seconds overhead (used by the sessions)
  208     CDTIME=($CDTIME+160+$CDEXTRATSIZE/75)
  209     MINUTES=($CDTIME/60)
  210     SECONDS=`expr $CDTIME % 60`
  211     if [ $SECONDS -le 9 ]; then
  212         echo "Total Disc Length: $MINUTES:0$SECONDS"
  213         echo "Total Disc Length: $MINUTES:0$SECONDS" >> "$IMGDIR/$WAVNAME/WAVINFO"
  214     else
  215         echo "Total Disc Length: $MINUTES:$SECONDS"
  216         echo "Total Disc Length: $MINUTES:$SECONDS" >> "$IMGDIR/$WAVNAME/WAVINFO"
  217     fi
  218 fi
  219 if [ $MINUTES -ge 80 ]; then
  220     echo -e "${YELLOW}WARNING:${NOCOLOR} This may not fit on a standard 80 min. CD-R!"
  221     echo "WARNING: This may not fit on a standard 80 min. CD-R!" >> "$IMGDIR/$WAVNAME/WAVINFO"
  222 fi
  223 }