Shell Scripte blank (Frederick Page) burn-audio (Frederick Page) burn-data (Frederick Page) burn-extra (Frederick Page) cdclone (Frederick Page) cdread (Frederick Page) cdwrite (Frederick Page) daootf (Frederick Page) deemph (Frederick Page) enc (Frederick Page) fhg (Frederick Page) maketoc (Frederick Page) normalize (Frederick Page) brennen.sh (Eduard Bloch) grabit (Frederick Page) blank (Frederick Page)
#!/bin/sh # CD-RW loeschen, Default ist fast, "blank all" # belebt scheinbar kaputte CD-RW im Plex-Brenner neu if test -n "$1"; then type="$1" else type="fast" fi time cdrecord \ -v \ speed=99 \ dev=0,5,0 \ blank=$type \ -force # Blanking options: # all, disc, disk blank the entire disk # fast, minimal minimally blank the entire disk # (PMA, TOC, pregap) # track blank a track # unreserve unreserve a track # trtail blank a track tail # unclose unclose last session # session blank last session
burn-audio (Frederick Page)
#!/bin/sh # Alle WAV Dateien im aktuellen Verzeichnis werden als # DAO Audio-CD gebrannt, "burn-audio 4" würde # mit Speed=4 brennen if test -n "$1"; then speed=$1 else speed=99 fi cdrecord \ -v \ -eject \ -pad \ -dao \ speed=$speed \ dev=0,5,0 \ defpregap=0 \ -audio \ *.wav
burn-data (Frederick Page)
#!/bin/sh
# Ein vorhandenes CD-Image brennen (Multisession)
if test -n "$2"; then
speed=$2
else
speed=99
fi
if test -n "$1"; then
file=$1
if test -e "$file"; then
echo Okay, starting to write "$file" with speed $speed
sleep 2
else
echo "$file" not found!
exit 1
fi
else
echo "Usage: $0 <FileName> [<Speed>]"
exit 1
fi
cdrecord \
-v \
-multi \
-eject \
-pad \
-data \
speed=$speed \
dev=0,5,0 \
"$file"
burn-extra (Frederick Page)
#!/bin/sh
# Dieses Script erstellt eine CD-Extra, erste Session
# ist Audio im DAO-Mode (Brenner muss SAO können)
# zweite Session wird über Image erzeugt /sound/cd_plus.raw
# Eine Anregung für On-The-Fly findest Du im Script daootf
if test -n "$2"; then
speed=$2
else
speed=99
fi
if test -n "$1"; then
if test -d "$1"; then
echo okay, "$1" is an existing directory
else
echo directory "$1" not found
exit 1
fi
dir="$1"
else
echo "Usage: $0 <Directory for Extras> (<Speed>)"
exit 1
fi
cdrecord \
-multi \
-v \
-pad \
-dao \
speed=$speed \
dev=0,5,0 \
defpregap=0 \
-audio \
*.wav
echo -n $'\a';sleep 1;echo -n $'\a';sleep 1;echo -n $'\a';sleep 1;echo $'\a'
echo press Return to continue
read bla
offset=$(cdrecord -msinfo dev=0,5,0 2>&1)
echo msinfo from cdrecord: $offset
sleep 3
echo "making /sound/cd_plus.raw ..."
mkisofs -R -J -o /sound/cd_plus.raw -C $offset "$dir"
sleep 3
cdrecord \
-v \
-eject \
speed=$speed \
dev=0,5,0 \
-data \
/sound/cd_plus.raw
# On-the-Fly wäre auch möglich, siehe Script daootf
cdclone (Frederick Page)
#!/bin/sh # Dieses Script ist für cdrdao, direktes on-the-fly Kopieren # Das funktioniert auch für PSX-CDs, ist für Audio allerdings # riskant, selbst mit PX-40. Wer unbedingt auch Audio OTF # machen muss, sollte die Qualität runtersetzen, indem paranoia # mode auf einen kleineren Wert gesetzt wird # # Evtl. vorhandener CD-Text wird mitkopiert (0x10 Option) # # Unter Win32 ist *kein* OTF möglich if test -n "$1"; then speed=$1 else speed=99 fi time cdrdao copy \ --fast-toc \ --device 0,5,0 \ --driver generic-mmc:0x10 \ --read-raw \ --source-device 0,4,0 \ --source-driver plextor-scan \ --speed $speed \ --on-the-fly \ --buffers 256 \ --eject \ -v 2 sleep 1 cdrecord -eject dev=0,4,0 2> /dev/null
cdread (Frederick Page)
#!/bin/sh # CD als Image auf Platte einlesen (auch für PSX) # Bei Audio-CD werden die CDDB-Infos als CD-Text # ins TOC-File eingefügt. Konfig muss natürlich # angepasst werden, ich habe einen lokalen cddb-Server if test -n "$1"; then file=$1 else echo "Usage: $0 FileName" exit 1 fi time cdrdao read-cd \ -v 2 \ --read-raw \ --paranoia-mode 3 \ --device 0,4,0 \ --datafile "$file".bin \ "$file".toc head -n 1 "$file".toc | grep "CD_DA" && \ cdrdao read-cddb \ --cddb-servers localhost:/cgi-bin/cddb.cgi \ "$file".toc || \ echo "No CDDB because no Audio-CD"
cdwrite (Frederick Page)
#!/bin/sh
# ein mit Script "cdread" eingelesenes cdrdao Image
# schreiben
if test -n "$2"; then
speed=$2
else
speed=99
fi
if test -n "$1"; then
file=$1
if test -e "$file"; then
echo Okay, starting to write "$file" with max speed
else
echo "$file" not found!
exit 1
fi
else
echo "Usage: `basename $0` <TocFileName>"
exit 1
fi
#--driver generic-mmc:0x10 \
echo "changing \"NO COPY\" to \"COPY\" ;-)"
mv "$file" tmp$$.toc
sed -e "s/^NO COPY$/COPY/g" tmp$$.toc >"$file"
chmod a+rw "$file"
rm tmp$$.toc
nice -n -20 time \
cdrdao write -v 2 \
--buffers 64 \
--speed $speed \
--device 0,5,0 \
--driver generic-mmc:0x10 \
--eject \
"$file"
daootf (Frederick Page)
#!/bin/sh
# OTF mastern und DAO brennen
if test -n "$1" && test -d "$1" ; then
tsize=$(mkisofs -J -r -l -print-size "$1" 2>&1 \
| tail -n1 | sed -e 's/^.*\ =\ //')
echo Tsize $tsize
mkisofs -r -J -l -quiet -V "$2" "$1" 2> /dev/null \
| cdrecord -v -eject -pad -dao -tsize=${tsize}s -data -
else
echo "Bitte $0 \"Root-Pfad\" \"Name der CD\" benutzen"
fi
deemph (Frederick Page)
{{{
#!/bin/sh
# Wird vermutlich nicht unter Win32 gehen:
# Bei allen WAV-Files im aktuellen Verzeichnis
# die "Pre-Emphasis" entfernen
for file in *.wav
do [ -e "$file" ] || continue
echo $file
mv "$file" tmp$$.wav
sox -V tmp$$.wav "$file" deemph
rm tmp$$.wav
done
enc (Frederick Page)
#!/bin/sh
# Alle WAV-Files im aktuellen Verzeichnis als mp3 mit Lame
# codieren. Es wird von folgendem (Standard) Aufbau der WAVs
# ausgegangen "Interpret - Titel.wav", diese werden als mp3
# Tags mitcodiert
for file in *.wav
do [ -e "$file" ] || continue
alles=`basename "$file" .wav`
interpret=`echo "$alles" | sed -e 's/\ \-\ .*//'`
titel=`echo "$alles" | sed -e 's/.*\ \-\ //'`
echo Encoding "\"$titel\"" by "\"$interpret\"" ...
nice -n 19 \
lame -v --old-vbr -V 0 -b 112 --resample 48 -h -d -m j \
--tt "$titel" --ta "$interpret"\
"$file" "`basename "$file" .wav`".mp3
done
fhg (Frederick Page)
#!/bin/sh
# Alle WAV Files im aktuellen Verzeichnis mit dem alten Fraunhofer
# von 1998 encodieren
if test -n "$1"; then
bps=$1;
else
bps=192000;
fi;
for file in *.wav
do [ -e "$file" ] || continue
echo $file
nice -n 19 \
mp3enc -br $bps -qual 9 -esr 48000 -if "$file" -of "`basename\
"$file" .wav`".mp3 &
done
maketoc (Frederick Page)
# Vorsicht mit der Syntax, muss genauso mit Einrückungen und
# Leerzeilen sein
if test -n "$1"; then
tocfile=$1
else
tocfile=new.toc
fi
cat >$tocfile << EOF
CD_DA
CATALOG "0000000000000"
CD_TEXT {
LANGUAGE_MAP {
0: 9
}
LANGUAGE 0 {
TITLE "Another Sampler by Frederick"
PERFORMER "Various"
}
}
EOF
let ind=0
for file in *.wav
do [ -e "$file" ] || continue
alles=`basename "$file" .wav`
#interpret=`echo "$alles" | awk -F- '{print $1}'`
#titel=`echo "$alles" | awk -F- '{print $2}'`
interpret=`echo "$alles" | sed -e 's/\ \-\ .*//'`
titel=`echo "$alles" | sed -e 's/.*\ \-\ //'`
let ind=$ind+1
cat >>$tocfile <<EOF
// Track $ind
TRACK AUDIO
COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
CD_TEXT {
LANGUAGE 0 {
TITLE "$titel"
PERFORMER "$interpret"
}
}
FILE "$file" 0
START 00:00:00
EOF
done
echo TocFile $tocfile written
normalize (Frederick Page)
# Wenn mehr als 20% Anpassung möglich sind, wird auf 95% des max.
# möglichen Wertes normalisiert.
# Wenn das Ergebnis bereits 100% ist, wird auf 95% des max-Wertes
# reduziert. Grund: ansonsten neigen die WAVs zum Clippen, speziell
# beim mp3 Encodieren.
#
# Unix-User: einfach probieren und schauen, was rauskommt ;-)
# (Pakete sox und bc müssen installiert sein)
call_sox () {
echo "calling sox to adjust to $vol"
mv "$file" tmp$$.wav
sox -v $vol tmp$$.wav "$file"
rm tmp$$.wav
}
for file in *.wav
do [ -e "$file" ] || continue
echo "-"
echo $file
echo -n "probing volume, "
vol=$(sox "$file" -e stat -v 2>&1)
echo -n "found $vol, "
vol=$(echo "scale=0; $vol*1000/1" | bc -l)
if test $vol -gt 1200; then
vol=$(echo "scale=3; $vol*0.98/1000" | bc -l)
call_sox
else
if test $vol -lt 1010; then
vol=0.95
call_sox
else
echo "loud enough: skipping file."
fi
fi
done
brennen.sh (Eduard Bloch)
#!/bin/bash
# von Eduard Bloch (edi@gmx.de)
# Anwendung 1: brenn-das.sh DATEI [ Mehr Dateien oder Verzeichnisse ]
# Alles wird als gleichnamige Datei/Verzeichniss auf der CD abgelegt und direkt
# gebrannt (im TAO-Modus). Volume-ID (aka CD-Label) wird aus der Namen der
# ersten Datei bestimmt, oder kann mit "-n name" angegeben werden.
# SPACES BEACHTEN!
# Anwendung 2: Grösse des Images (blockzahl) bestimmen:
#
# brenn-das.sh -t DATEIEN
# Anwendung 3: DAO brennen (überlänge,Bblockzahl vorher bestimmen):
# brenn-das.sh -s blockzahl DATEIEN
CDR=' cdrecord -speed=6 -v -eject'
CDRSUF=' - '
until [ -n "$parsed" ] ; do
if [ "x$1" = "x-n" ] ; then
NAME=$2
shift
shift
elif
[ "x$1" = "x-s" ] ; then
SIZE=$2
CDRSUF="-ignsize tsize=${SIZE}s -dao - "
shift
shift
elif
[ "x$1" = "x-t" ] ; then
OPTS="--print-size"
CDR="cat"
shift
else
NAME=$(echo $1 | sed -e 's/\.[^\.]*$//g')
NAME=`echo $NAME | tr " " "_"`
NAME=`echo $NAME | tr "(" "_"`
NAME=`echo $NAME | tr ")" "_" | cut -c1-30`
parsed=true
fi
done
(
while [ "x$1" != "x" ] ; do
echo "/$1=$1"
shift
done
) | mkisofs -v -J -r -V "$NAME" -path-list - -graft-points $OPTS | $CDR $CDRSUF
grabit (Frederick Page)
#!/bin/sh
# script will extract audio tracks, use freedb-info or CD-text to
# rename tracks from "audio.wav" to e.g. "Beatles - Michelle.wav"
# (c) Frederick Page (frederick_page@gmx.de)
# This software is absolutely free, but without any guarantee,
# modify to your needs
# Version history:
# 0.1, 24.12.2002 initial release
# 0.2, 24.12.2002 added track-number as option, small cleanups
# 0.3, 26.12.2002 added rename of *.inf files for cdrecord
# you can now have "clear" filenames and still burn
# with cdrecord -useinfo
# Bugfixes, tried to deal with apostroph in filenames
# 0.31, 26.12.2002 .inf File always with "not copyright protected" ;-)
# 0.32, 27.12.2002 replace slashes with -
# 0.33, 28.12.2002 filter out (Win32) illegal chars in filenames
# \:*?"<>|
# examples for commandline usage:
# grabit (all tracks will be extracted)
# grabit 2 (track 2 will be extracted)
# grabit 2 4 7 (those tracks will be extracted)
# grabit 2-11 (tracks 2 thru 11 will be extracted)
# grabit 3 5 8-11 (tracks 3, 5 and 8 thru 11 will be extracted)
geraet="PX-40TS" # your device name as in "cdrecord -scanbus"
speed=0 # audio extraction speed, 0 = max
cdserver=localhost # adjust to e.g. de.freedb.org
cdport=8880 # cddbp Port-No, you can leave this at 8880
# cdda2wav uses protocol cddbp (not http at 80!)
autoentry=1 # for ambigous results in freedb:
# 0 = prompt user
# 1 = use first found entry automatically
apostroph=1 # 0 = filesystem does not support apostrophs
# 1 = filesystem supports e.g. "Girl's Talk.wav"
repchar=_ # apostroph gets replaced with this character
# (only if "apostroph=0" is set)
doit () {
cdda2wav dev=$mydev \
-O wav \
speed=$speed \
set-overlap=2 \
-paranoia -paraopts=retries=64 \
-cddb=$autoentry \
-cddbp-server=$cdserver \
-cddbp-port=$cdport \
duration=0 \
$auswahl \
$trname
}
mydev=`cdrecord -scanbus 2>&1 | grep "$geraet" | cut -f 2`
if test $# -gt 0; then
for track in $@; do
if echo $track | grep "-" >/dev/null 2>&1; then
auswahl="-B -t "`echo $track | sed "s/-/+/"`
trname=audio
else
auswahl="-t $track"
if test $track -lt 10; then
trname="audio_0${track}"
else
trname="audio_${track}"
fi
fi
doit
done
else
auswahl="-B"
doit
fi
for datei in audio*.wav; do
infdatei=`basename "$datei" .wav`.inf
if test -e "$infdatei"; then
interpret=`grep "^Performer=" "$infdatei" | cut -f 2 | \
sed -e "s/^'//" -e "s/'$//" -e "s/\//-/g" -e 's/[\:*?"<>|]//g'`
titel=`grep "^Tracktitle=" "$infdatei" | cut -f 2 | \
sed -e "s/^'//" -e "s/'$//" -e "s/\//-/g" -e 's/[\:*?"<>|]//g'`
if test $apostroph -eq 0; then
interpret=`echo $interpret | sed -e "s/'/$repchar/g"`
titel=`echo $titel | sed -e "s/'/$repchar/g"`
fi
trackno=`grep "^Tracknumber=" "$infdatei" | cut -f 2`
if test $trackno -lt 10; then
trackno="0"$trackno
fi
# choose your preferred template here
# examples: neudatei="$trackno $interpret - $titel"
# neudatei="$interpret - $titel"
# neudatei="$trackno - $titel"
neudatei="$trackno $interpret - $titel"
mv "$datei" "$neudatei".wav
sed \
-e "s/\(^Copy_permitted=.\).*/\1yes (not copyright protected)/" \
"$infdatei" >"$neudatei".inf
rm -f "$infdatei"
fi
done
# append *.inf to the line below if you don't want to burn
# with cdrecord and CD-Text
#rm -f *.cddb *.cdindex
Linux/CdsBrennen/ShellScripte (last modified 2008-11-04 07:00:21)