Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- afadd() {
- mkdir -p ~/aftemp
- for f in *.(flac|mp3|mp4|m4a|wav|ape|wma|ogg|MP3|webm|aiff|dsf|mod|med|wv|xm|aif|WAV|avi)
- do
- echo "`readlink -m "$f"`" >> ~/aftemp/aflist
- done
- echo "Files added to the list, start afcombo to process it. Files can be added or edited when processing run. ;)"
- }
- afcombo() {
- sudo renice -n 19 -p $$
- sudo ionice -c3 -p$$
- mkdir -p ~/hqmp3 ~/hqflac48
- trap "stty $(stty -g)" EXIT
- stty -echo || exit $?
- afblock=6;afpad=1;aflow=22050;afrelative=~/
- gvol2=6.020599913279623904274777894489860535363797629242170826208
- gvol5=13.97940008672037609572522210551013946463620237075782917379
- gvolr48=6.7566528714345975469846810636415487534735150094383205743
- while [[ -s ~/aftemp/aflist ]] ; do f=$(head -n 1 ~/aftemp/aflist)
- ffprobe "$f" 2>&1 | grep -e Input -e Stream -e Duration ; [[ ! -f ~/aftemp/sum ]] \
- && { afseco=`echo "1-$(ffmpeg -loglevel 0 -y -i "$f" -vn -acodec pcm_s32le -f sox - \
- | sox -p -b32 ~/aftemp/0temp.wav rate -v 44100 reverse sinc -22049 -t 1 reverse sinc -22049 -t 1 stats 2>&1 \
- | grep -e Length | cut -b17-20)" | bc -l`; echo $afseco > ~/aftemp/afseco
- mv ~/aftemp/0temp.wav ~/aftemp/3temp.wav; sox ~/aftemp/3temp.wav -V0 -b32 ~/aftemp/0temp.wav pad $(echo "$afpad+$afseco"|bc -l) "$afpad"
- rm -f ~/aftemp/3temp.wav
- for (( i=0; ; i++ )); do counter=`echo "$i*$afblock" | bc -l`; temp=`printf "%09d\n" $(($i+1))`
- sox ~/aftemp/0temp.wav -b32 ~/aftemp/temp"$temp".wav \
- trim "$counter" $(echo "$afpad+$afblock+$afpad" | bc -l) 2>/dev/null
- SIZE=`wc -c <$(echo ~/aftemp/temp"$temp".wav)`
- if ((SIZE<500)) ; then rm -f ~/aftemp/temp"$temp".wav; echo $i > ~/aftemp/sum; break; fi
- done }; sum=`cat ~/aftemp/sum`
- for t in ~/aftemp/temp?????????.wav;do RET=1; until [ $RET -eq 0 ];do
- START=`date +%s.%N`
- afpath="`realpath --relative-to "$afrelative" "$f"`"
- echo -ne `echo "$t" | sed 's:.*/::'` "($sum)" "$afpath "
- afail=`sox -V3 --multi-threaded "$t" -b32 -r 48000 ~/aftemp/22$(echo "$t" | sed 's:.*/::') --temp /dev/shm \
- upsample 2 sinc "-$aflow" reverse sinc "-$aflow" reverse sinc "-$aflow" reverse sinc "-$aflow" reverse \
- sinc "-$aflow" reverse sinc "-$aflow" reverse sinc "-$aflow" reverse sinc "-$aflow" reverse gain "$gvol2" \
- upsample 2 sinc "-$aflow" reverse sinc "-$aflow" reverse gain "$gvol2" \
- upsample 2 sinc "-$aflow" reverse sinc "-$aflow" reverse gain "$gvol2" \
- upsample 2 sinc "-$aflow" reverse sinc "-$aflow" reverse gain "$gvol2" \
- upsample 2 sinc "-$aflow" reverse sinc "-$aflow" reverse gain "$gvol2" \
- upsample 5 sinc "-$aflow" reverse sinc "-$aflow" reverse gain "$gvol5" \
- downsample 147 trim "$afpad" reverse trim "$afpad" reverse 2>&1`
- [[ $afail == *"FAIL"*"error writing"* ]] && echo $afail && sleep 10 || { rm -f "$t" 2>/dev/null
- afdec=`echo $t | sed -e 's/[^0-9]//g' | tail -c 2`
- [[ $afdec -eq 0 ]] && sox -V0 --multi-threaded `for f in ~/aftemp/22temp?????????.wav; do echo "$f "; done` -b32 \
- `echo $(ls ~/aftemp/22temp????????0.wav) | sed 's/2/0/'` && rm -f ~/aftemp/22temp?????????.wav
- aftblock=$(($(date +%s.%N) - $START))
- aftime=`date -u -d @${aftblock} +"%T"`; afremain=$(($sum-$(echo $t | sed -e 's/[^0-9]//g')))
- afeta1=$(($afremain*$aftblock)); afeta=`date -u -d @${afeta1} +"%T"`
- echo "\b\b\b\b\b$aftime ETA:$afeta" $(($aftblock/$afblock))x
- RET=0 }
- done; rm -f ~/aftemp/"$t" 2>/dev/null
- done
- mkdir -p ~/hqmp3/"`dirname "$afpath"`" ~/hqflac48/"`dirname "$afpath"`"; afseco=`cat ~/aftemp/afseco`
- sox --multi-threaded `for f in ~/aftemp/?2temp?????????.wav; do echo "$f "; done` -V3 -b32 \
- ~/aftemp/3temp.wav gain "$gvolr48" trim "$afseco" 2>/dev/null
- sox -V0 --multi-threaded ~/aftemp/3temp.wav -b24 ~/hqflac48/"`echo "$afpath" | sed 's/\.[^.]*$//'`.flac" 2>/dev/null
- lame ~/aftemp/3temp.wav --noreplaygain --preset insane --bitwidth 32 -q 0 -m s --cbr -b 320 \
- ~/hqmp3/"`echo "$afpath" | sed 's/\.[^.]*$//'`.mp3" \
- && rm -f ~/aftemp/*.wav ~/aftemp/sum ~/aftemp/afseco && sed -i -e "1d" ~/aftemp/aflist
- done && rm -f ~/aftemp/**
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement