Добавление Replay Gain тегов музыкальной коллекции
Любому человеку, имеющему большую музыкальную коллекцию, знакома проблема, возникающая при прослушивании подряд нескольких треков из разных альбомов: из-за разных уровней громкости переход между треками перестает быть плавным, и приходится вручную крутить регулятор громкости. К счастью, проблема решаема, и решение -- использование Replay Gain.
Выдержка из Википедии:
Replay Gain (ReplayGain, Replaygain, выравнивание громкости[1]) — стандарт представления информации, позволяющей аудиоплеерам, использующим её, воспроизводить файлы в медиа-библиотеке с однородной громкостью.
Использование Replay Gain позволяет избежать ручного изменения уровня громкости при проигрывании аудиофайлов с разных альбомов/дисков, записанных с разными уровнями громкости.
Многие плееры под Linux поддерживают ReplayGain теги, пользователю остается только добавить их. Для этого я написал данный простой скрипт, который проходит по музыкальной коллекции, анализирует файлы и добавляет теги. Предполагается, что все файлы расположены по принципу %artist%/%album%/%track%.%ext%, и что расширения находятся в нижнем регистре. Требуются программы vorbisgain, mp3gain, metaflac.
#!/bin/bash # заменить на верную директорию MUSIC_DIR="/home/username/Audio/Music" cd "$MUSIC_DIR" for artist in * do if [ -d "$artist" ]; then cd "$artist" for album in * do if [ -d "$album" ]; then cd "$album" echo `pwd` # MP3 gain mp3gain -a -r -k -T -p *.mp3 vorbisgain -f -a -s -r *.ogg metaflac --add-replay-gain *.flac cd .. fi done cd ..; fi done
Данный скрипт довольно примитивен (я плохо знаком с Bash скриптингом), поэтому любые замечания приветствуются.
- 3134 просмотра
Страница для печати

Хорошее дело Ж:-)
Можно не привязыватся к структуре каталогов, а искать сразу все необходимые файлы. Вот первое решение в лоб:
Но что бы было быстрее, можно запускать три отдельных find, и вызывать програмки не для каждого файла, а для многих
Не нужно запускать три find: лучше использовать круглые скобки и оператор -or:
А за идею спасибо, отличная штука! :)
В man mp3gain написано:
"If you specify -r and -a, only the second one will work"
Просмотрел. Сразу видно - поздно вечером скрипт писал
find ~/mp3/ -iname '*.mp3' -type f -exec mp3gain -a -r -k -T -p '{}' +
В этом случае не будет работать Album Gain (хотя для Track Gain сойдет)
а вот так вот, должно работать и с Album Gain
Скрипт в awk хранит в хеше уже пройденные директории и запускает для новых директорий нужный скрипт.
Вроде как должен работать и с директориями в имени которых есть пробел.
век живи, век RTFM Ж:-)
спасибо
Отправить комментарий