From 55288d7e36a6b2c79dd0f134dd1ee0d45d4e5be4 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Tue, 3 May 2016 11:18:57 +0200 Subject: Initial commit --- addtimes | 59 +++++++++++++ doit | 281 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ doit.save | 264 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ subtimes | 59 +++++++++++++ timetosample | 31 +++++++ trimpoints | 75 ++++++++++++++++ 6 files changed, 769 insertions(+) create mode 100755 addtimes create mode 100755 doit create mode 100755 doit.save create mode 100755 subtimes create mode 100755 timetosample create mode 100755 trimpoints diff --git a/addtimes b/addtimes new file mode 100755 index 0000000..cc90901 --- /dev/null +++ b/addtimes @@ -0,0 +1,59 @@ +#!/bin/bash + +# subtimes t1 t2 +# -> "t1-t2" + +for i in {1..2} +do + inp=$(echo "${@:i:1}" | sed "s/^ *//" | sed "s/ *#.*$//") + p1=$(echo "$inp" | tr ":" " " | awk '{print $1}') + p2=$(echo "$inp" | tr ":" " " | awk '{print $2}') + p3=$(echo "$inp" | tr ":" " " | awk '{print $3}') + for j in {1..2} + do + if [ "$p3" == "" ] + then + p3=$p2 + p2=$p1 + p1="0" + fi + done + p4=$(echo $p3 | tr "." " " | awk '{print $2}') + while [ ${#p4} -lt 6 ] + do + p4=${p4}"0" + done + f[$i]=$(echo $p4 | sed "s/^0*//" | sed "s/^$/0/") + s[$i]=$(echo $p3 | tr "." " " | awk '{print $1}' | sed "s/^0*//" | sed "s/^$/0/") + m[$i]=$(echo $p2 | sed "s/^0*//" | sed "s/^$/0/") + h[$i]=$(echo $p1 | sed "s/^0*//" | sed "s/^$/0/") +done + +fd=$[${f[1]}+${f[2]}] +ut=0 +while [ $fd -ge 1000000 ] +do + ut=$[$ut+1] + fd=$[$fd-1000000] +done +while [ ${#fd} -lt 6 ] +do + fd="0"$fd +done +sd=$[${s[1]}+${s[2]}+$ut] +ut=0 +while [ $sd -ge 60 ] +do + ut=$[$ut+1] + sd=$[$sd-60] +done +md=$[${m[1]}+${m[2]}+$ut] +ut=0 +while [ $md -ge 60 ] +do + ut=$[$ut+1] + md=$[$md-60] +done +hd=$[${h[1]}+${h[2]}+$ut] + +echo $hd":"$md":"$sd"."$fd diff --git a/doit b/doit new file mode 100755 index 0000000..5822ca7 --- /dev/null +++ b/doit @@ -0,0 +1,281 @@ +#!/bin/bash + +# doit [ -f ] [ -ng ] input_1 input_2 ... input_n points output + + +eval set -- "$(getopt -o hf1ni:p:o:s: --long help,force,noGain,dummy,input:,points:,output:,sampleRate: -n "$(basename "$0")" -- "$@")" + +force=false +noGain=false +dummy=false + +while true; do + case "$1" in + -h|--help) + echo "$0"' [ -f | --force ] [ -1 | --noGain ] [ -n | --dummy ] { ( -i | --input= ) input$i.flac } ( -o | --output= ) output.flac ( -p | --points= ) points' + echo ' Mischen und Schneiden:' + echo ' -f | --force: output.flac ggf. überschreiben' + echo ' -1 | --noGain: Lautstärke nicht normalisieren' + echo ' -n | --dummy: nur auszuführenden Befehl anzeigen und nichts tun' + echo ' -s | --sampleRate=: alternative Samplerate zum Abspeichern' + echo ' -i | --input=: Quelle' + echo ' -o | --output=: Ziel' + echo ' -p | --points=: Punktedatei' + echo "$0"' [ -h | --help ]' + echo ' Hilfe anzeigen' + exit 0 + ;; + -f|--force) + force=true + ;; + -1|--noGain) + noGain=true + ;; + -n|--dummy) + dummy=true + ;; + -i|--input) + shift + inputs[${#inputs[@]}]="$1" + ;; + -o|--output) + shift + [ -n "${output}" ] && echo 'Ich kann nur eine Output-Datei-Option verstehen.' && exit 1 + output="$1" + ;; + -p|--points) + shift + [ -n "${points}" ] && echo 'Ich kann nur eine Point-Datei-Option verstehen.' && exit 1 + points="$1" + ;; + -s|--sampleRate) + shift + [ -n "${outRate}" ] && echo 'Ich kann nur eine Samplerate-Option verstehen.' && exit 1 + outRate="$1" + ;; + --) + shift + [ $# -gt 0 ] && echo 'Unbekannte Parameter: '"$#" && exit 1 + break + ;; + *) + echo 'Hups, das sollte nicht passieren könne, '"$1"' kenne ich doch nicht ...' + exit -1 + ;; + esac + shift +done + +[ -z "${output}" ] && echo 'Output-Datei fehlt!' && exit 1 +[ -z "${points}" ] && echo 'Points-Datei fehlt!' && exit 1 +[ "${#inputs[@]}" -eq 0 ] && echo 'Input-Datei fehlt!' && exit 1 + +dir="$(dirname $0)" + +[ ! -e "${points}" ] && echo "Die Schnittpunktedatei ${points} existiert nicht!" && exit 1 +for inp in "${inputs[@]}" +do + [ ! -e "${inp}" ] && echo "Die Inputdatei ${inp} existiert nicht!" && exit 1 + [ $(echo "${inp}" | grep -c " ") -gt 0 ] && echo "Bitte keine Leerzeichen im input-Dateinamen!" && exit 1 +done + +[ $(echo "${output}" | grep -c " ") -gt 0 ] && echo "Bitte keine Leerzeichen im output-Dateinamen!" && exit 1 +[ $(echo "${points}" | grep -c " ") -gt 0 ] && echo "Bitte keine Leerzeichen im points-Dateinamen!" && exit 1 + +if [ -e "${output}" ] +then + if ${force} + then + ${dummy} || rm "${output}" + else + echo "Die Ausgabedatei ${output} existiert bereits!" && exit 1 + fi +fi +odn="$(dirname "${output}")" +obn="$(basename "${output}")" +if [ $(ls -1 "${odn}" | grep "$(echo "${obn}" | sed "s/%[0-9]\?n/.*/g")" | wc -l) -gt 0 ] +then + if ${force} + then + ${dummy} || rm ${odn}/$(echo "${obn}" | sed "s/%[0-9]\?n/*/g") + else + echo "Die Ausgabedatei ${output} existiert bereits!" && exit 1 + fi +fi + +samplerate=$(soxi -r "${inputs[0]}") +[ -z ${outRate} ] && outRate=${samplerate} +i=-1 +abstime=0 +while read -r in +do + line="$(echo "${in}" | sed "s/^ *//" | sed "s/ *\(\# .*\)\{0,1\}$//")" + [ "${line}" == "" ] && continue + if [ $i -eq -1 ] + then + firstline="$(echo "${line}" | sed "s/ *\#.*$//")" + remixcmd="$(echo "${in}" | sed "s/^[^\#]*\#//" | sed "s/ *\(\# .*\)\{0,1\}$//")" + i=0 + continue + fi + if [ $(echo "${line}" | grep -c "^\#") -eq 1 ] + then + trackmods[${i}]=" $(echo "${line}" | sed "s/^.*\#//")" + timecorrections[${i}]=0 + while [ $(echo "${trackmods[${i}]}" | grep -c " trimsplice") -eq 1 ] + do + tmp="$(echo "${trackmods[${i}]}" | sed "s/X/x/g" | sed "s/trimsplice/X/g" | sed "s/^[^X]* X *//" | sed "s/ / /g")" + end=$(${dir}/timetosample ${samplerate} $(echo "${tmp}" | awk '{print $1}')) + if [ ! "${doverlaps[${i}]}" == "" ] + then + end=$[${end}+${doverlaps[${i}]}] + fi + discard=$(${dir}/timetosample ${samplerate} $(echo "${tmp}" | awk '{print $2}')) + excess=$(${dir}/timetosample ${samplerate} $(echo "${tmp}" | awk '{print $3}')) + leeway=$(${dir}/timetosample ${samplerate} $(echo "${tmp}" | awk '{print $4}')) + trackmods[${i}]="$(echo "${trackmods[${i}]}" | sed "s/ *trimsplice *[^ ][^ ]* *[^ ][^ ]* *[^ ][^ ]* *[^ ][^ ]*/ trim 0s ${end}s ${discard}s splice -t ${end}s,${excess}s,${leeway}s/")" +# trackmods[${i}]="$(echo "${trackmods[${i}]}" | sed "s/ *trimsplice *[^ ][^ ]* *[^ ][^ ]* *[^ ][^ ]* *[^ ][^ ]*/ trim 0s ${end}s ${discard}s/")" + timecorrections[${i}]=$[${timecorrections[${i}]}+${discard}+2*${excess}] + done + continue + fi + i=$[${i}+1] + tmp=$(${dir}/timetosample ${samplerate} $(echo "${line}" | sed "s/ *\(\#.*$\)\{0,1\}$//")) + times[${i}]=$[${tmp}-${abstime}] + abstime=${tmp} + + newFile[${i}]=true + tmp="$(echo "${line}" | sed "s/^[^\#]*#\?//" | sed "s/\s\./ 0./g")" + while [ -n "${tmp}" ] + do + if [[ "$tmp" = "overlap "* ]] + then + overlaps[${i}]=$[$(${dir}/timetosample ${samplerate} $(echo "${tmp}" | sed "s/^overlap \(\S\+\)\(\s.*\)\?$/\1/"))/2] + doverlaps[${i}]=$[2*${overlaps[${i}]}] + tmp="$(echo "${tmp}" | sed "s/^\S\+\s\+\S\+\s*//")" + continue + fi + if [[ "$tmp" = "noNewFile"* ]] + then + newFile[${i}]=false + tmp="$(echo "${tmp}" | sed "s/^\S\+\s*//")" + continue + fi + echo "'${tmp}' ist unverständlich zwischen zwei Stücken" + exit 1 + done +done < "${points}" + +#for (( i=0; i<=${#times[@]}; i++ )) +#do +# echo "${i} ; ${trackmods[${i}]} ; ${times[${i}]} ; ${overlaps[${i}]} ; ${doverlaps[${i}]} ; ${timecorrections[${i}]}" +#done +#exit 0 + +repcmd="" +abstime=0 +for (( i=1; i<=${#times[@]}; i++ )) +do + abstime=$[${abstime}+${times[${i}]}] + [ "${doverlaps[${i}]}" == "" ] && continue + repcmd="${repcmd} trim 0s $[${abstime}-${doverlaps[${i}]}]s : trim 0s ${doverlaps[${i}]}s repeat :" + abstime=0 +done + +trackmodcmd="" +abstime=0 +for (( i=0; i<=${#times[@]}; i++ )) +do + if [ ${i} -gt 0 ] + then + [ "${timecorrections[$[${i}-1]]}" == "" ] || times[${i}]=$[${times[${i}]}-${timecorrections[$[${i}-1]]}] + fi + [ "${times[$[${i}+1]]}" == "" ] || abstime=$[${abstime}+${times[$[${i}+1]]}] + [ "${doverlaps[${i}]}" == "" ] || abstime=$[${abstime}+${doverlaps[${i}]}] + [ "${trackmods[${i}]}" == "${trackmods[$[${i}+1]]}" ] && continue + if [ ${i} -eq ${#times[@]} ] + then + trackmodcmd="${trackmodcmd}${trackmods[${i}]} " + else + trackmodcmd="${trackmodcmd}trim 0s ${abstime}s${trackmods[${i}]} : " + fi + abstime=0 +done + +splicecmd="" +abstime=0 +for (( i=0; i<=${#times[@]}; i++ )) +do + [ "${times[${i}]}" == "" ] || abstime=$[${abstime}+${times[${i}]}] + [ "${overlaps[${i}]}" == "" ] && continue + splicecmd="${splicecmd} ${abstime}s,${overlaps[${i}]}s,0s" + abstime=$[${abstime}+${doverlaps[${i}]}] +done +[ "${splicecmd}" == "" ] || splicecmd="splice -t${splicecmd}" + +trimcmd="" +for (( i=1; i<=${#times[@]}; i++ )) +do + if [ ${outRate} -eq ${samplerate} ] + then + trimcmd="${trimcmd}trim 0s =${times[${i}]}s : " + else + trimcmd="${trimcmd}trim 0s =$[$[${times[${i}]}*${outRate}+${samplerate}/2]/${samplerate}]s : " + fi + ${newFile[${i}]} && trimcmd="${trimcmd}newfile : " +done + +if [ ! ${outRate} -eq ${samplerate} ] +then + remixcmd="${remixcmd} rate -v ${outRate}" +fi + +if ! ${noGain} +then + firstline="${firstline} gain -b" + remixcmd="${remixcmd} gain -n" +fi + +echo sox -M "${inputs[@]}" -p trim ${firstline} +echo sox -t sox - -p ${repcmd} +echo sox -t sox - -p ${trackmodcmd} +echo sox -t sox - -p ${splicecmd} ${remixcmd} +echo sox -t sox - ${output} ${trimcmd} + +if ! ${dummy} +then + sox -M "${inputs[@]}" -p trim ${firstline}| \ + sox -t sox - -p ${repcmd} | \ + sox -t sox - -p ${trackmodcmd} | \ + sox -t sox - -p ${splicecmd} ${remixcmd} | \ + sox -t sox - ${output} ${trimcmd} +fi + +#if $noGain +#then +# echo sox -M "${@:1:$[$#-2]}" -p trim ${firstline} +# echo sox -t sox - -p ${repcmd} +# echo sox -t sox - -p ${trackmodcmd} +# echo sox -t sox - -p ${splicecmd} ${remixcmd} +# echo sox -t sox - ${output} ${trimcmd} +# +# sox -M "${@:1:$[$#-2]}" -p trim ${firstline}| \ +# sox -t sox - -p ${repcmd} | \ +# sox -t sox - -p ${trackmodcmd} | \ +# sox -t sox - -p ${splicecmd} ${remixcmd} | \ +# sox -t sox - ${output} ${trimcmd} +#else +# echo sox -M "${@:1:$[$#-2]}" -p trim ${firstline} gain -b +# echo sox -t sox - -p ${repcmd} +# echo sox -t sox - -p ${trackmodcmd} +# echo sox -t sox - -p ${splicecmd} ${remixcmd} +# echo sox -t sox - -p gain -n +# echo sox -t sox - ${output} ${trimcmd} +# +# sox -M "${@:1:$[$#-2]}" -p trim ${firstline} gain -b | \ +# sox -t sox - -p ${repcmd} | \ +# sox -t sox - -p ${trackmodcmd} | \ +# sox -t sox - -p ${splicecmd} ${remixcmd} | \ +# sox -t sox - -p gain -n | \ +# sox -t sox - ${output} ${trimcmd} +#fi diff --git a/doit.save b/doit.save new file mode 100755 index 0000000..c6bb1e1 --- /dev/null +++ b/doit.save @@ -0,0 +1,264 @@ +#!/bin/bash + +# doit [ -f ] [ -ng ] input_1 input_2 ... input_n points output + + +eval set -- "$(getopt -o hf1ni:p:o: --long help,force,noGain,dummy,input:,points:,output: -n "$(basename "$0")" -- "$@")" + +force=false +noGain=false +dummy=false + +while true; do + case "$1" in + -h|--help) + echo "$0"' [ -f | --force ] [ -1 | --noGain ] [ -n | --dummy ] { ( -i | --input= ) input$i.flac } ( -o | --output= ) output.flac ( -p | --points= ) points' + echo ' Mischen und Schneiden:' + echo ' -f | --force: output.flac ggf. überschreiben' + echo ' -1 | --noGain: Lautstärke nicht normalisieren' + echo ' -n | --dummy: nur auszuführenden Befehl anzeigen und nichts tun' + echo ' -i | --input=: Quelle' + echo ' -o | --output=: Ziel' + echo ' -p | --points=: Punktedatei' + echo "$0"' [ -h | --help ]' + echo ' Hilfe anzeigen' + exit 0 + ;; + -f|--force) + force=true + ;; + -1|--noGain) + noGain=true + ;; + -n|--dummy) + dummy=true + ;; + -i|--input) + shift + inputs[${#inputs[@]}]="$1" + ;; + -o|--output) + shift + [ -n "$output" ] && echo 'Ich kann nur eine Output-Datei-Option verstehen.' && exit 1 + output="$1" + ;; + -p|--points) + shift + [ -n "$points" ] && echo 'Ich kann nur eine Point-Datei-Option verstehen.' && exit 1 + points="$1" + ;; + --) + shift + [ $# -gt 0 ] && echo 'Unbekannte Parameter: '"$#" && exit 1 + break + ;; + *) + echo 'Hups, das sollte nicht passieren könne, '"$1"' kenne ich doch nicht ...' + exit -1 + ;; + esac + shift +done + +[ -z "${output}" ] && echo 'Output-Datei fehlt!' && exit 1 +[ -z "${points}" ] && echo 'Points-Datei fehlt!' && exit 1 +[ "${#inputs[@]}" -eq 0 ] && echo 'Input-Datei fehlt!' && exit 1 + +dir="$(dirname $0)" + +[ ! -e "${points}" ] && echo "Die Schnittpunktedatei ${points} existiert nicht!" && exit 1 +for inp in "${inputs[@]}" +do + [ ! -e "${inp}" ] && echo "Die Inputdatei ${inp} existiert nicht!" && exit 1 + [ $(echo "${inp}" | grep -c " ") -gt 0 ] && echo "Bitte keine Leerzeichen im input-Dateinamen!" && exit 1 +done + +[ $(echo "${output}" | grep -c " ") -gt 0 ] && echo "Bitte keine Leerzeichen im output-Dateinamen!" && exit 1 +[ $(echo "${points}" | grep -c " ") -gt 0 ] && echo "Bitte keine Leerzeichen im points-Dateinamen!" && exit 1 + +if [ -e "${output}" ] +then + if ${force} + then + ${dummy} || rm "${output}" + else + echo "Die Ausgabedatei ${output} existiert bereits!" && exit 1 + fi +fi +odn="$(dirname "${output}")" +obn="$(basename "${output}")" +if [ $(ls -1 "${odn}" | grep "$(echo "${obn}" | sed "s/%[0-9]\?n/.*/g")" | wc -l) -gt 0 ] +then + if ${force} + then + ${dummy} || rm ${odn}/$(echo "${obn}" | sed "s/%[0-9]\?n/*/g") + else + echo "Die Ausgabedatei ${output} existiert bereits!" && exit 1 + fi +fi + +samplerate=$(soxi -r "${inputs[0]}") +i=-1 +abstime=0 +while read -r in +do + line="$(echo "${in}" | sed "s/^ *//" | sed "s/ *\(\# .*\)\{0,1\}$//")" + [ "${line}" == "" ] && continue + if [ $i -eq -1 ] + then + firstline="$(echo "${line}" | sed "s/ *\#.*$//")" + remixcmd="$(echo "${in}" | sed "s/^[^\#]*\#//" | sed "s/ *\(\# .*\)\{0,1\}$//")" + i=0 + continue + fi + if [ $(echo "${line}" | grep -c "^\#") -eq 1 ] + then + trackmods[${i}]=" $(echo "${line}" | sed "s/^.*\#//")" + timecorrections[${i}]=0 + while [ $(echo "${trackmods[${i}]}" | grep -c " trimsplice") -eq 1 ] + do + tmp="$(echo "${trackmods[${i}]}" | sed "s/X/x/g" | sed "s/trimsplice/X/g" | sed "s/^[^X]* X *//" | sed "s/ / /g")" + end=$(${dir}/timetosample ${samplerate} $(echo "${tmp}" | awk '{print $1}')) + if [ ! "${doverlaps[${i}]}" == "" ] + then + end=$[${end}+${doverlaps[${i}]}] + fi + discard=$(${dir}/timetosample ${samplerate} $(echo "${tmp}" | awk '{print $2}')) + excess=$(${dir}/timetosample ${samplerate} $(echo "${tmp}" | awk '{print $3}')) + leeway=$(${dir}/timetosample ${samplerate} $(echo "${tmp}" | awk '{print $4}')) + trackmods[${i}]="$(echo "${trackmods[${i}]}" | sed "s/ *trimsplice *[^ ][^ ]* *[^ ][^ ]* *[^ ][^ ]* *[^ ][^ ]*/ trim 0s ${end}s ${discard}s splice -t ${end}s,${excess}s,${leeway}s/")" +# trackmods[${i}]="$(echo "${trackmods[${i}]}" | sed "s/ *trimsplice *[^ ][^ ]* *[^ ][^ ]* *[^ ][^ ]* *[^ ][^ ]*/ trim 0s ${end}s ${discard}s/")" + timecorrections[${i}]=$[${timecorrections[${i}]}+${discard}+2*${excess}] + done + continue + fi + i=$[${i}+1] + tmp=$(${dir}/timetosample ${samplerate} $(echo "${line}" | sed "s/ *\(\#.*$\)\{0,1\}$//")) + times[${i}]=$[${tmp}-${abstime}] + abstime=${tmp} + + newFile[${i}]=true + tmp="$(echo "${line}" | sed "s/^[^\#]*#\?//" | sed "s/\s\./ 0./g")" + while [ -n "${tmp}" ] + do + if [[ "$tmp" = "overlap "* ]] + then + overlaps[${i}]=$[$(${dir}/timetosample ${samplerate} $(echo "${tmp}" | sed "s/^overlap \(\S\+\)\(\s.*\)\?$/\1/"))/2] + doverlaps[${i}]=$[2*${overlaps[${i}]}] + tmp="$(echo "${tmp}" | sed "s/^\S\+\s\+\S\+\s*//")" + continue + fi + if [[ "$tmp" = "noNewFile"* ]] + then + newFile[${i}]=false + tmp="$(echo "${tmp}" | sed "s/^\S\+\s*//")" + continue + fi + echo "'${tmp}' ist unverständlich zwischen zwei Stücken" + exit 1 + done +done < "${points}" + +#for (( i=0; i<=${#times[@]}; i++ )) +#do +# echo "${i} ; ${trackmods[${i}]} ; ${times[${i}]} ; ${overlaps[${i}]} ; ${doverlaps[${i}]} ; ${timecorrections[${i}]}" +#done +#exit 0 + +repcmd="" +abstime=0 +for (( i=1; i<=${#times[@]}; i++ )) +do + abstime=$[${abstime}+${times[${i}]}] + [ "${doverlaps[${i}]}" == "" ] && continue + repcmd="${repcmd} trim 0s $[${abstime}-${doverlaps[${i}]}]s : trim 0s ${doverlaps[${i}]}s repeat :" + abstime=0 +done + +trackmodcmd="" +abstime=0 +for (( i=0; i<=${#times[@]}; i++ )) +do + if [ ${i} -gt 0 ] + then + [ "${timecorrections[$[${i}-1]]}" == "" ] || times[${i}]=$[${times[${i}]}-${timecorrections[$[${i}-1]]}] + fi + [ "${times[$[${i}+1]]}" == "" ] || abstime=$[${abstime}+${times[$[${i}+1]]}] + [ "${doverlaps[${i}]}" == "" ] || abstime=$[${abstime}+${doverlaps[${i}]}] + [ "${trackmods[${i}]}" == "${trackmods[$[${i}+1]]}" ] && continue + if [ ${i} -eq ${#times[@]} ] + then + trackmodcmd="${trackmodcmd}${trackmods[${i}]} " + else + trackmodcmd="${trackmodcmd}trim 0s ${abstime}s${trackmods[${i}]} : " + fi + abstime=0 +done + +splicecmd="" +abstime=0 +for (( i=0; i<=${#times[@]}; i++ )) +do + [ "${times[${i}]}" == "" ] || abstime=$[${abstime}+${times[${i}]}] + [ "${overlaps[${i}]}" == "" ] && continue + splicecmd="${splicecmd} ${abstime}s,${overlaps[${i}]}s,0s" + abstime=$[${abstime}+${doverlaps[${i}]}] +done +[ "${splicecmd}" == "" ] || splicecmd="splice -t${splicecmd}" + +trimcmd="" +for (( i=1; i<=${#times[@]}; i++ )) +do + trimcmd="${trimcmd}trim 0s =${times[${i}]}s : " + ${newFile[${i}]} && trimcmd="${trimcmd}newfile : " +done + +if ! ${noGain} +then + firstline="${firstline} gain -b" + remixcmd="${remixcmd} gain -n" +fi + +echo sox -M "${inputs[@]}" -p trim ${firstline} +echo sox -t sox - -p ${repcmd} +echo sox -t sox - -p ${trackmodcmd} +echo sox -t sox - -p ${splicecmd} ${remixcmd} +echo sox -t sox - ${output} ${trimcmd} + +if ! ${dummy} +then + sox -M "${inputs[@]}" -p trim ${firstline}| \ + sox -t sox - -p ${repcmd} | \ + sox -t sox - -p ${trackmodcmd} | \ + sox -t sox - -p ${splicecmd} ${remixcmd} | \ + sox -t sox - ${output} ${trimcmd} +fi + +#if $noGain +#then +# echo sox -M "${@:1:$[$#-2]}" -p trim ${firstline} +# echo sox -t sox - -p ${repcmd} +# echo sox -t sox - -p ${trackmodcmd} +# echo sox -t sox - -p ${splicecmd} ${remixcmd} +# echo sox -t sox - ${output} ${trimcmd} +# +# sox -M "${@:1:$[$#-2]}" -p trim ${firstline}| \ +# sox -t sox - -p ${repcmd} | \ +# sox -t sox - -p ${trackmodcmd} | \ +# sox -t sox - -p ${splicecmd} ${remixcmd} | \ +# sox -t sox - ${output} ${trimcmd} +#else +# echo sox -M "${@:1:$[$#-2]}" -p trim ${firstline} gain -b +# echo sox -t sox - -p ${repcmd} +# echo sox -t sox - -p ${trackmodcmd} +# echo sox -t sox - -p ${splicecmd} ${remixcmd} +# echo sox -t sox - -p gain -n +# echo sox -t sox - ${output} ${trimcmd} +# +# sox -M "${@:1:$[$#-2]}" -p trim ${firstline} gain -b | \ +# sox -t sox - -p ${repcmd} | \ +# sox -t sox - -p ${trackmodcmd} | \ +# sox -t sox - -p ${splicecmd} ${remixcmd} | \ +# sox -t sox - -p gain -n | \ +# sox -t sox - ${output} ${trimcmd} +#fi diff --git a/subtimes b/subtimes new file mode 100755 index 0000000..7eda175 --- /dev/null +++ b/subtimes @@ -0,0 +1,59 @@ +#!/bin/bash + +# subtimes t1 t2 +# -> "t1-t2" + +for i in {1..2} +do + inp=$(echo "${@:i:1}" | sed "s/^ *//" | sed "s/ *#.*$//") + p1=$(echo "$inp" | tr ":" " " | awk '{print $1}') + p2=$(echo "$inp" | tr ":" " " | awk '{print $2}') + p3=$(echo "$inp" | tr ":" " " | awk '{print $3}') + for j in {1..2} + do + if [ "$p3" == "" ] + then + p3=$p2 + p2=$p1 + p1="0" + fi + done + p4=$(echo $p3 | tr "." " " | awk '{print $2}') + while [ ${#p4} -lt 6 ] + do + p4=${p4}"0" + done + f[$i]=$(echo $p4 | sed "s/^0*//" | sed "s/^$/0/") + s[$i]=$(echo $p3 | tr "." " " | awk '{print $1}' | sed "s/^0*//" | sed "s/^$/0/") + m[$i]=$(echo $p2 | sed "s/^0*//" | sed "s/^$/0/") + h[$i]=$(echo $p1 | sed "s/^0*//" | sed "s/^$/0/") +done + +fd=$[${f[1]}-${f[2]}] +ut=0 +while [ $fd -lt 0 ] +do + ut=$[$ut+1] + fd=$[$fd+1000000] +done +while [ ${#fd} -lt 6 ] +do + fd="0"$fd +done +sd=$[${s[1]}-${s[2]}-$ut] +ut=0 +while [ $sd -lt 0 ] +do + ut=$[$ut+1] + sd=$[$sd+60] +done +md=$[${m[1]}-${m[2]}-$ut] +ut=0 +while [ $md -lt 0 ] +do + ut=$[$ut+1] + md=$[$md+60] +done +hd=$[${h[1]}-${h[2]}-$ut] + +echo $hd":"$md":"$sd"."$fd diff --git a/timetosample b/timetosample new file mode 100755 index 0000000..42168fb --- /dev/null +++ b/timetosample @@ -0,0 +1,31 @@ +#!/bin/bash + +# timetosample samplerate time + +inp=$(echo "$2" | sed "s/^ *//" | sed "s/ *\(#.*\)*$//") +p1=$(echo "${inp}" | tr ":" " " | awk '{print $1}') +p2=$(echo "${inp}" | tr ":" " " | awk '{print $2}') +p3=$(echo "${inp}" | tr ":" " " | awk '{print $3}') +for i in {1..2} +do + if [ "${p3}" == "" ] + then + p3="${p2}" + p2="${p1}" + p1="0" + fi +done +p4=$(echo "${p3}" | sed "s/^[^.]*\(\.\|$\)//") +while [ ${#p4} -lt 6 ] +do + p4="${p4}0" +done +frc=$(echo "${p4}" | sed "s/^0*//" | sed "s/^$/0/") +sek=$(echo "${p3}" | sed "s/\..*$//" | sed "s/^0*//" | sed "s/^$/0/") +min=$(echo "${p2}" | sed "s/^0*//" | sed "s/^$/0/") +stu=$(echo "${p1}" | sed "s/^0*//" | sed "s/^$/0/") + +samp=$[${stu}*60+${min}] +samp=$[${samp}*60+${sek}] +samp=$[${samp}*$1+$[$[${frc}*$1 + 500000]/1000000]] +echo ${samp} diff --git a/trimpoints b/trimpoints new file mode 100755 index 0000000..9e2d48e --- /dev/null +++ b/trimpoints @@ -0,0 +1,75 @@ +#!/bin/bash + +h=0 +m=0 +s=0 +f=0 + +read in +while [ "$in" != "" ] +do + inp=$(echo "$in" | sed "s/^ *//" | sed "s/ *#.*$//") + p1=$(echo "$inp" | tr ":" " " | awk '{print $1}') + p2=$(echo "$inp" | tr ":" " " | awk '{print $2}') + p3=$(echo "$inp" | tr ":" " " | awk '{print $3}') + for i in {1..2} + do + if [ "$p3" == "" ] + then + p3=$p2 + p2=$p1 + p1="0" + fi + done + fn=$(echo $p3 | tr "." " " | awk '{print $2}') + while [ ${#fn} -lt 6 ] + do + fn=$fn"0" + done + fn=$(echo $fn | sed "s/^0*//" | sed "s/^$/0/") + sn=$(echo $p3 | tr "." " " | awk '{print $1}' | sed "s/^0*//" | sed "s/^$/0/") + mn=$(echo $p2 | sed "s/^0*//" | sed "s/^$/0/") + hn=$(echo $p1 | sed "s/^0*//" | sed "s/^$/0/") + fp=$[$fn-$f] + ut=0 + while [ $fp -lt 0 ] + do + ut=$[$ut+1] + fp=$[$fp+1000000] + done + while [ ${#fp} -lt 6 ] + do + fp="0"$fp + done + sp=$[$sn-$s-$ut] + ut=0 + while [ $sp -lt 0 ] + do + ut=$[$ut+1] + sp=$[$sp+60] + done + mp=$[$mn-$m-$ut] + ut=0 + while [ $mp -lt 0 ] + do + ut=$[$ut+1] + mp=$[$mp+60] + done + hp=$[$hn-$h-$ut] + if [ "$1" == "raw" ] + then + echo $hp":"$mp":"$sp"."$fp + else + echo -ne "trim 0 "$hp":"$mp":"$sp"."$fp" " + if [ $(echo "$in" | sed "s/^.*#//" | grep -c "^compress") -eq 1 ] + then + echo -ne "$1 " + fi + echo -ne ": newfile : " + fi + f=$fn + s=$sn + m=$mn + h=$hn + read in +done -- cgit v1.2.3-54-g00ecf