summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2016-05-24 22:04:16 +0200
committerErich Eckner <git@eckner.net>2016-05-24 22:04:16 +0200
commitf0ad68dfbc2968173f608fd560647fa4d653b3bd (patch)
treea0ded1f04de4ce83dcf96013ec7887d27c319508
parent93cb9d7a2acd32d27c4c53b84fa88b9cdb03c954 (diff)
downloadsound-cutter-f0ad68dfbc2968173f608fd560647fa4d653b3bd.tar.xz
--cd neu
-rwxr-xr-xsound-cutter.in40
1 files changed, 33 insertions, 7 deletions
diff --git a/sound-cutter.in b/sound-cutter.in
index 2878350..5d16be7 100755
--- a/sound-cutter.in
+++ b/sound-cutter.in
@@ -7,17 +7,18 @@ verwendung() {
>&2 echo ''
>&2 echo 'Verwendung:'
>&2 echo ''
- >&2 echo "${me}"' [ -f | --force ] [ -a | --ausfuehrlich ] [ -1 | --noGain ] [ -n | --dummy ] { ( -i | --input ) input$i.flac } ( -o | --output ) output.flac ( -p | --points ) points'
+ >&2 echo "${me}"' [ -1 | --noGain ] [ -a | --ausfuehrlich ] [ -c | --cd ] [ -f | --force ] { ( -i | --input ) input$i.flac } [ -n | --dummy ] ( -o | --output ) output.(flac|wav|mp3) ( -p | --points ) points [ ( -s | --sampleRate ) Rate ]'
>&2 echo ''
>&2 echo ' Mischen und Schneiden:'
- >&2 echo ' -f | --force: output.flac ggf. überschreiben'
>&2 echo ' -1 | --noGain: Lautstärke nicht normalisieren'
- >&2 echo ' -n | --dummy: nur auszuführenden Befehl anzeigen und nichts tun'
- >&2 echo ' -s | --sampleRate: alternative Samplerate zum Abspeichern'
+ >&2 echo ' -a | --ausfuehrlich: ausführliche Zwischenausgaben machen'
+ >&2 echo ' -c | --cd: Dateien passend für CD-Tracks erzeugen'
+ >&2 echo ' -f | --force: output.flac ggf. überschreiben'
>&2 echo ' -i | --input: Quelle'
+ >&2 echo ' -n | --dummy: nur auszuführenden Befehl anzeigen und nichts tun'
>&2 echo ' -o | --output: Ziel'
>&2 echo ' -p | --points: Punktedatei'
- >&2 echo ' -a | --ausfuehrlich: ausführliche Zwischenausgaben machen'
+ >&2 echo ' -s | --sampleRate: alternative Samplerate zum Abspeichern'
>&2 echo ''
>&2 echo "$0"' [ -h | --help ]'
>&2 echo ' Hilfe anzeigen'
@@ -44,11 +45,12 @@ timetosample() {
me="$(readlink -f "$0")"
eval set -- "$(
- getopt -o 1ahfi:no:p:s: \
+ getopt -o 1acfhi:no:p:s: \
--long noGain \
--long ausfuehrlich \
- --long help \
+ --long cd \
--long force \
+ --long help \
--long input: \
--long dummy \
--long output: \
@@ -62,6 +64,7 @@ noGain=false
ausfuehrlich=false
force=false
dummy=false
+cdAusrichten=false
while true; do
case "$1" in
@@ -71,6 +74,11 @@ while true; do
-a|--ausfuehrlich)
ausfuehrlich=true
;;
+ -c|--cd=
+ [ -n "${outRate}" ] && echo 'Ich kann nur eine Samplerate-Option verstehen.' && verwendung
+ outRate="44100"
+ cdAusrichten=true
+ ;;
-f|--force)
force=true
;;
@@ -116,6 +124,12 @@ done
[ -z "${points}" ] && >&2 echo 'Points-Datei fehlt!' && verwendung
[ "${#inputs[@]}" -eq 0 ] && >&2 echo 'Input-Datei fehlt!' && verwendung
+if ${cdAusrichten} && [[ ! "${output}" == *".wav" ]]
+then
+ >&2 echo 'CD-Ausgabe sollte nur nach wav geschehen.'
+ exit 1
+fi
+
[ ! -e "${points}" ] && >&2 echo "Die Schnittpunktedatei '${points}' existiert nicht!" && exit 1
for inp in "${inputs[@]}"
do
@@ -302,6 +316,18 @@ do
done
[ -n "${splicecmd}" ] && splicecmd="splice -t${splicecmd}"
+if ${cdAusrichten}
+then
+ diff=0
+ align2=294
+ for (( i=1; i<${#outTimes[@]}; i++ ))
+ do
+ nDiff=$(bc <<< "(${outTimes[${i}]} + ${diff} + ${align2}) % (2 * ${align2}) - ${align2}")
+ outTimes[${i}]=$(bc <<< "${outTimes[${i}]} + ${diff} - ${nDiff}")
+ diff="${nDiff}"
+ done
+fi
+
trimcmd=""
for (( i=1; i<=${#outTimes[@]}; i++ ))
do