Скрипт для создания спектров для CMCS: различия между версиями
Материал из Linux Wiki
Перейти к навигацииПерейти к поиску
Rain (обсуждение | вклад) (Создана новая страница размером Скрипт ниже создает спектры для треков согласно Common Music Collection Structure. Для п...) |
Rain (обсуждение | вклад) |
||
(не показано 6 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
Скрипт ниже создает спектры для треков согласно [[Common Music Collection Structure]]. Для построения спектров используется утилита '''sndfile-spectrogram''' из пакета '''sndfile-tools''' (в Debian). В качестве параметра find'у передается путь к корню музыкальной коллекции (каталог, содержащий подкаталоги исполнителей). | Скрипт ниже создает спектры для треков согласно [[Common Music Collection Structure]]. Для построения спектров используется утилита '''sndfile-spectrogram''' из пакета '''sndfile-tools''' (в Debian). В качестве параметра find'у передается путь к корню музыкальной коллекции (каталог, содержащий подкаталоги исполнителей). | ||
{{ToDo|Добавить сжатие файлов, рассмотреть переход на sox file -n spectrogram}} | |||
---- | ---- | ||
<source lang=bash> | <source lang=bash> | ||
find | find "${@}" -maxdepth 3 -name *.flac | | ||
while read file | while read file | ||
do | do | ||
Строка 14: | Строка 16: | ||
then | then | ||
mkdir -p "${dirname}" | mkdir -p "${dirname}" | ||
sndfile-spectrogram --dyn-range=100 "${file}" 800 480 "${dirname}${basename%.flac}.png" | sndfile-spectrogram --dyn-range=100 "${file}" 800 480 "${dirname}${basename%.flac}.png" | ||
echo $file | echo $file complete | ||
fi | fi | ||
done | done | ||
</source> | </source> | ||
[[Category:Скрипт]][[Category:Аудио]] | ---- | ||
Либо как отдельная функция, работает как с альбомом, так и с дискографией: | |||
---- | |||
<source lang=bash> | |||
makespectrums() { | |||
find "${@}" -maxdepth 3 -name "*.flac" | | |||
while read file | |||
do | |||
file="$(readlink -f "${file}")" | |||
dirname="$(dirname "${file}")/_album_info/spectrums/" | |||
basename="$(basename "${file}")" | |||
[ ! -e "${dirname}${basename%.flac}.png" ] && (mkdir -p "${dirname}" ; sndfile-spectrogram --dyn-range=100 "${file}" 800 480 "${dirname}${basename%.flac}.png") | |||
echo $file complete | |||
done | |||
} | |||
</source> | |||
---- | |||
Тестовый вариант со сжатием (с использованием '''advpng''' из пакета '''advancecomp'''): | |||
<source lang=bash> | |||
makespectrums() { | |||
find "${@}" -maxdepth 3 -name "*.flac" | | |||
while read file | |||
do | |||
file="$(readlink -f "${file}")" | |||
dirname="$(dirname "${file}")/_album_info/spectrums/" | |||
basename="$(basename "${file}")" | |||
[ ! -e "${dirname}${basename%.flac}.png" ] && ( | |||
mkdir -p "${dirname}" | |||
sndfile-spectrogram --dyn-range=100 "${file}" 800 480 "${dirname}${basename%.flac}.png" | |||
[ -e `which convert` ] && ( | |||
convert -quality 90 -colors 256 "${dirname}${basename%.flac}.png" "${dirname}${basename%.flac}-conv.png" | |||
mv "${dirname}${basename%.flac}-conv.png" "${dirname}${basename%.flac}.png" | |||
[ -e `which advpng` ] && ( | |||
advpng -z4 "${dirname}${basename%.flac}.png" | |||
) | |||
)&: | |||
) | |||
echo $file complete | |||
done | |||
} | |||
</source> | |||
[[Category:Скрипт]][[Category:Аудио]][[Category:CMCS]] |
Текущая версия на 18:59, 3 сентября 2012
Скрипт ниже создает спектры для треков согласно Common Music Collection Structure. Для построения спектров используется утилита sndfile-spectrogram из пакета sndfile-tools (в Debian). В качестве параметра find'у передается путь к корню музыкальной коллекции (каталог, содержащий подкаталоги исполнителей).
ToDo: Добавить сжатие файлов, рассмотреть переход на sox file -n spectrogram
find "${@}" -maxdepth 3 -name *.flac |
while read file
do
file="$(readlink -f "${file}")"
dirname="$(dirname "${file}")/_album_info/spectrums/"
basename="$(basename "${file}")"
if [ ! -e "${dirname}${basename%.flac}.png" ]
then
mkdir -p "${dirname}"
sndfile-spectrogram --dyn-range=100 "${file}" 800 480 "${dirname}${basename%.flac}.png"
echo $file complete
fi
done
Либо как отдельная функция, работает как с альбомом, так и с дискографией:
makespectrums() {
find "${@}" -maxdepth 3 -name "*.flac" |
while read file
do
file="$(readlink -f "${file}")"
dirname="$(dirname "${file}")/_album_info/spectrums/"
basename="$(basename "${file}")"
[ ! -e "${dirname}${basename%.flac}.png" ] && (mkdir -p "${dirname}" ; sndfile-spectrogram --dyn-range=100 "${file}" 800 480 "${dirname}${basename%.flac}.png")
echo $file complete
done
}
Тестовый вариант со сжатием (с использованием advpng из пакета advancecomp):
makespectrums() {
find "${@}" -maxdepth 3 -name "*.flac" |
while read file
do
file="$(readlink -f "${file}")"
dirname="$(dirname "${file}")/_album_info/spectrums/"
basename="$(basename "${file}")"
[ ! -e "${dirname}${basename%.flac}.png" ] && (
mkdir -p "${dirname}"
sndfile-spectrogram --dyn-range=100 "${file}" 800 480 "${dirname}${basename%.flac}.png"
[ -e `which convert` ] && (
convert -quality 90 -colors 256 "${dirname}${basename%.flac}.png" "${dirname}${basename%.flac}-conv.png"
mv "${dirname}${basename%.flac}-conv.png" "${dirname}${basename%.flac}.png"
[ -e `which advpng` ] && (
advpng -z4 "${dirname}${basename%.flac}.png"
)
)&:
)
echo $file complete
done
}