Konwersja plików muzycznych
Przy tworzeniu własnych płyt audio potrzebne są programy do wypalania i do konewrsji plików muzycznych. Do wypalania
stosuję z powodzeniem program
xcdroast, ale nie udało mi się znaleźć programu, który przeprowadza konwersję wielu formatów
muzycznych. Stworzyłem więc skrypt powłoki współpracujący z programem
dialog. Do poprawnej pracy są potrzebne n/z programy z ustawionym bitem
UID:
cdparanoia
oggenc i oggdec
bladeenc
mpg123
Oprócz tego bit UID musi miec także program mount i eject. Skrypt, który nazwałem
konwersja umieściłem w swoim katalogu domowym w Bin. Pliki do konwersji są pobierane z cdromu
lub z /home/andrzej/, co będzie widać na poniższych zrzutach. Przy konwersji CDaudio - wav lub
CDaudio - ogg, do zaznaczenia numerów utworów i ich odsłuchu korzystam z programu KsCD.
Utworzone pliki znajdują się w luźnych plikach katalogu domowego. Inaczej wygląda konwersja w drugą stronę.
W tym przypadku pliki ogg, mp3 należy przekopiować do lużnych plików katalogu domowego i dopiero wtedy należy
uruchomić skrypt. Aby ułatwić uruchamianie w edytorze menu tworzymy nową pozycję i jako uruchomienie wpisujemy
/home/Andrzej/Bin/konwersja i zaznaczamy uruchomienie z terminala. Program pracuje dobrze i jest w pełni funkcjonalny.
Skrypt można pobrać
stąd, a jego zawartość jest zamieszczona poniżej.
Ze względu na
czytelność strony długie linie skryptu
są złamane, co zaznaczyłem napisem
łam.
#!/bin/sh
#set -x
reader="/dev/cdrom"
number="0,0,0"
tempfile="/tmp/.tempfile"
driver="generic-mmc"
buffers="128"
umount_call="umount"
cdparanoia_test="cdparanoia -d $reader -Q"
cdparanoia_read="cdparanoia -d $reader -B"
for program in cdparanoia
do
if [ "`which $program 2> /dev/null`" = "" ]; then
echo Brak \"$program\" program.
echo
echo Press [Enter].
read
exit
fi
done
backtitle="Skrypt Andrzeja Sperczyńskiego z 14 maja 2003 r oparty w części na cdwrite"
a=0
b=0
c=0
$umount_call $cdrw 2> /dev/null
while [ "$a" = "0" ]; do
dialog --backtitle "$backtitle" \
--title "Konwersje AUDIO" \
--menu "Wybierz pozycje" 0 0 0 \
Konwertuj_CDa-Ogg "" \
Konwertuj_CDa-Wav "" \
Konwertuj_Wav-Ogg "" \
Konwertuj_Ogg-Wav "" \
Konwertuj_Wav-Mp3 "" \
Konwertuj_Mp3-Wav "" \
Koniec "" 2> $tempfile
a=$?
b=`cat $tempfile`
case $b in
Konwertuj_CDa-Ogg)
mount /dev/cdrom
echo Proszę czekać..
$cdparanoia_test 2> $tempfile
tracks=`cat $tempfile | grep -B 1 "TOTAL" | grep "\. " | cut -d "." -f 1`
if [ "$tracks" != "" ]; then
declare -i n=1
> $tempfile
echo dialog --backtitle \"\$backtitle\" \\ >> $tempfile
echo --title \"Track list\" \\ >> $tempfile
echo --checklist \"Select tracks\" 0 0 0 \\ >> $tempfile
while [ $n -lt $tracks ]
do
echo $n \" \" off \\ >> $tempfile
n=$n+1
done
echo $n \" \" off 2\> $tempfile >> $tempfile
chmod u+x $tempfile
$tempfile
chmod u-x $tempfile
echo "`cat $tempfile | sed 's/\"//g'`" > $tempfile
declare -i n=1
track=`cat $tempfile | cut -d " " -f$n`
clear
while [ "$track" != "" ]; do
trackfile=01.wav
for prefix in 01 02 03 04 05 06 07 08 09 10 11 12 13 14 (łam)
15 16 17 18 19 20 21 22 23 24 25 26 (łam)
27 28 29 30 31 32 33 34 35 36 37 38 (łam)
39 40 41 42 43 44 45 46 47 48 49 50
do
if [ -f "$trackfile" ]; then
trackfile=$prefix.wav
fi
done
echo Executing: $cdparanoia_read $track $trackfile
$cdparanoia_read $track $trackfile
mv track??.$trackfile $trackfile
n=$n+1
track=`cat $tempfile | cut -d " " -f$n`
done
eject
else
echo To nie jest płyta AUDIO \"$reader\" drive.
echo
echo Press [Enter].
read
eject
fi
oggenc -q 5 *.wav
rm -f *.wav
;;
Konwertuj_CDa-Wav)
mount /dev/cdrom
echo Proszę czekać..
$cdparanoia_test 2> $tempfile
tracks=`cat $tempfile | grep -B 1 "TOTAL" | grep "\. " | cut -d "." -f 1`
if [ "$tracks" != "" ]; then
declare -i n=1
> $tempfile
echo dialog --backtitle \"\$backtitle\" \\ >> $tempfile
echo --title \"Track list\" \\ >> $tempfile
echo --checklist \"Select tracks\" 0 0 0 \\ >> $tempfile
while [ $n -lt $tracks ]
do
echo $n \" \" off \\ >> $tempfile
n=$n+1
done
echo $n \" \" off 2\> $tempfile >> $tempfile
chmod u+x $tempfile
$tempfile
chmod u-x $tempfile
echo "`cat $tempfile | sed 's/\"//g'`" > $tempfile
declare -i n=1
track=`cat $tempfile | cut -d " " -f$n`
clear
while [ "$track" != "" ]; do
trackfile=01.wav
for prefix in 01 02 03 04 05 06 07 08 09 10 11 12 13 14 (łam)
15 16 17 18 19 20 21 22 23 24 25 26 (łam)
27 28 29 30 31 32 33 34 35 36 37 38 (łam)
39 40 41 42 43 44 45 46 47 48 49 50
do
if [ -f "$trackfile" ]; then
trackfile=$prefix.wav
fi
done
echo Executing: $cdparanoia_read $track $trackfile
$cdparanoia_read $track $trackfile
mv track??.$trackfile $trackfile
n=$n+1
track=`cat $tempfile | cut -d " " -f$n`
done
eject
else
echo To nie jest płyta AUDIO \"$reader\" drive.
echo
echo Press [Enter].
read
eject
fi
;;
Konwertuj_Wav-Ogg)
clear
oggenc -q 5 *wav
;;
Konwertuj_Ogg-Wav)
clear
oggdec *ogg
;;
Konwertuj_Wav-Mp3)
clear
bladeenc *wav
;;
Konwertuj_Mp3-Wav)
clear
find *.mp3 > mp3wav_tmp
for c in `cat mp3wav_tmp`
do
mpg123 -w $c.wav $c
done
rm -f mp3wav_tmp
;;
Koniec) a=1
;;
esac
done
rm -f $tempfile
do góry