Title: Разрезалка
Author: Viva Calman
Date: 2016-10-06 12:52:42
Correction code: 165814198613957

Пополняя свою музколлекцию, я постоянно сталкивался с задачей "разрезать чертов loseless-образ на треки"

Возможно, образ — это и удобно, но по своему опыту я могу сказать, что мне это причиняет только проблемы. Безусловно, Foobar2000 умеет понимать .cue-файлы, но и у него с этим бывают проблема. А как скормить cue-файл mpd — я в итоге и не разобрался. Вместо этого решил проблему в лоб, раскромсал все образы на треки и устанил проблему в принципе. Cue, конечно, сохраняю, хотя я сомневаюсь, что у меня когда-нибудь возникнет желание обратно скукоживать файлики в образы для CD и писать их на болванки. Лишняя сущность, все дела. Но оно мне не мешает.

Возвращаясь к проблеме. Раньше я резал все на треки с помощью линуксовых  shntools. Они вполне терпимо справлялись с нарезкой файлов, хотя и не идеально — некоторые большие образы (да да да, у меня есть несколько гигабайт пустого воздуха в больших частотах дискретизации и все такое) оно резать отказывалось. Плюс мне было неудобно, что у меня для разных типов файлов — разные команды в алиасах zsh, которым еще надо указывать и файл для разрезки и cue... айтишная лень кричала, то тут надо что-то оптимизировать.

Головной боли добавляли и .cue-файлы  в CP1251. Если оставить их, как есть — получишь воспоминание из начала нулевых, когда плеер не мог корректно отобразить теги в MP3-файле. Но при этом, если перекодировать все cue без разбора, это ломает корректный юникод. Короче, слишком много эджкейсов, слишком много движений руками, иногда приходилось проводить все стадии процесса вручную, и, как я говорил, держать три команды для разных типов файлов файлов ( и еще три для хайреза, так как там формат точек разбиения отличается) накладно. Я долго это терпел, но натерпелся и сел за Vim.

В итоге родился скриптик

Он на стадии вечной беты, так как косяки в нем отлавливаются, но флаки и APE режет на ура. Если в одной папке свалено несколько образов — он раскидывает результаты по дополнительным директориям. Весь выхлоп кодируется во флак, wavpack — распаковывается в wav и сплитится, ape — перегоняется во flac с помощью ffmpeg-а. wv.iso (никогда не понимал эту смесь бульдога с носорогом) еще не пробовал, но должно раскукоживаться с помощью 7z.

Вся нарезка ведется с помощью sox-а. Гениальная софтинка. Режет прямо из флаков, сохраняя все характеристики.

И есть один момент, если wv закодирован с  использованием всякой экзотики с плавающей точкой — это я безжалостно рекодирую в целочисленное. Ибо разницу (положа руку на сердце) я не услышу. Рассуждения о том, что с помощью floating-арифметики можно закодировать большие числа для меня аргументом не являются. Спорить ни с кем не буду, не нравится — перепишите этот кусок.

Так что теперь у меня есть своя собственная довольно умная разрезалка. Все случаи файлов в папках, конечно, я отловить не смогу, но c основными форматами скрипт должен работать успешно

P.S. на прочее говно на гитхабе не смотрите, там все плохо.

Метки:
^HOME