Часто музыкальные альбомы представляют из себя цельный flac. К нему, как правило, прилагается cue-файл с метаданными, который описывает раскладку треков в нём. Иногда это неудобно: нельзя отделить треки, проблема с проигрывателями (мы же в linux, не так ли;) и т.д. Мы хотим разрезать изначальный музыкальный файл на отдельные flac-треки, чтобы было всё красиво, с метаданными, с тегами. На самом деле cue используется с любыми форматами, а не только с flac. Наша изначальная задача разбивается на две: работа с cue и резка flac/ape/… . Кодировать на выходе будем во flac.
Итак, что нам понадобится.
1) Кодек flac. Свободный. Скорее всего уже есть в системе.
Кодек ape. В разных системах называется: mac (monkey's audio) или monkeys-audio или как-то так. Если нужно резать ape, то нужен.
2) Пакет утилит cuetools
для работы с cue sheet.
3) Пакет утилит shntool
для резки файлов. В некоторых случая может сам работать с cue, так что cuetools для того, чтобы просто порезать может и не понадобиться.
Далее поток мыслей с реализацией каждой из целей, здесь FILECUE — файл cue, FILEFLAC — файл flac (или ape).
Резка файлов с использованием cuetools и shnsplit
cuebreakpoints FILECUE | shnsplit -o flac FILEFLAC
Итак, cuebreakpoints разбивает исходный cue-файл на длительности и отдаёт цифры на вход shnsplit, который режет flac на куски. Выходной формат указан через «-o flac».
Резка только с помощью shnsplit
shnsplit -o flac -f FILECUE FILEFLAC
Здесь cue sheet задан напрямую параметром «-f». В этих двух последних случаях получаются треки формата flac с именами split-trackXX.flac . Можно с помощью параметра -t указать вид имени получающихся треков, используя метаинформацию, например, в виде XX-ИмяТрека.flac
shnsplit -o flac -f FILECUE -t %n-%t FILEFLAC
Но теги задать при этом нельзя. Печально?
Добавление тегов с помощью cuetools
Используется скрипт cuetag
(или cuetag.sh
). В случае файлов вида split-trackXX.flac можно схитрить так:
cuetag.sh FILECUE split-track*.flac
Если задать имена выходных файлов другие, то они будут разные и применить cuetag ко всем сразу будет не так просто. Но можно написать скрипт, который будет по одному перебирать, у меня такой был когда-то, но уже неактуально, решил пользоваться готовым.
Готовое решение
Качаем последнюю версию утилиты (скрипта) cue2tracks
, всё сделается за нас: кодирует из/в разных форматов, переименовывает, теггирует. Параметры описаны. Используется, например, так:
./cue2tracks -R -c flac -o "%P/%D - %A/%N - %t" FILECUE
Автор: Дмитрий