Каталогизация музыки и долгий путь к собственному потоковому сервису

May 02, 2017 22:53

Эта статья описывает методы и средства создания каталога оцифрованной музыки и предназначена для коллекционеров и меломанов, кто ее самостоятельно собирает. Иные формы прослушивания, такие как радио, публичные потоковые сервисы и даже социальные сети я не рассматриваю, т.к. считаю неудобными, это просто другой уровень с точки зрения качества. Данное руководство предназначено для того, чтобы с минимальными затратами привести аудиоколлекцию к максимально упорядоченному виду и получить реальную пользу от наведенного порядка.



Я во многих вопросах перфекционист. Свою аудиоколлекцию я всегда хотел видеть идеальной. Но какие-то редкости мне достались в несортированном виде, что-то приходилось оцифровывать с дисков, чем-то менялся. Затем началась эра безлимитного интернета и приток свежей музыки стал больше, а времени больше не становилось. Со временем при пополнении стало накапливаться много мелких неприятностей, например:
  • разные шаблоны для имен файлов: 4 - Звезда | 04 - Звезда | 04. Звезда
  • разные имена исполнителей в тегах: Чиж & Co | Чиж и Ко. | Mylene Farmer | Mylène Farmer
  • не указаны исполнители альбома (что приводит к полному бардаку в альбомах-сборниках)
  • некорректная информация об альбомах, состоящих из нескольких дисков
  • путаница в годах изданий и переизданий (ремастеринг, и т.д.)
Часто у пользователей коллекции составляют десятки тысяч записей, так что перелопачивать все вручную долго и неэффективно.

1. Чистка

Это всего лишь рекомендация для тех, кто начинает с уровня “файлопомойки” и нужна только в том случае, если вы хотите переделать все с нуля и упорядочить по-максимуму. Для начала нам нужно пройтись по всем каталогам и бегло их почистить, выбросить все лишнее, что вы не слушаете и вряд ли будете. Я выкинул полностью или частично:
  • сборники - в дискографиях им делать нечего, они просто дублируют уже вышедшие композиции, а для общетематических сборников должен быть отдельный каталог
  • переиздания - дублируют целые альбомы, иногда бывают конечно ремастеры, очищенные от шумов, но ими я заменяю оригинальные издания
  • бутлеги, синглы и раритетные издания - для коллекционирования они конечно важны, но для прослушивания часто приносят больше неудобств, поэтому я их редко оставляю, но решать вам
  • концерты - их я стараюсь собирать на видео, но есть артисты, которые только на концертах исполняют уникальные произведения, а есть такие, которые играют одно и то же раз за разом, так что тут по ситуации
В общем по возможности оставляйте только полные и официальные альбомы. Это не критичный, но довольно важный этап.

Обязательно разделите все на треки и унифицируйте форматы. Большинство плееров не понимают flac+cue, ape+cue, wv+cue. Из lossy форматов оставить только mp3, из lossless желательно flac, можно alac (если у вас преимущественно техника от Apple), а вот ape и wv не советую.
Для нарезки и перекодирования есть масса программ, например Medieval CUE Splitter. Я использую свой скрипт на bash.

2. Распознавание и сопоставление

Это самое важное. Выполняем распознавание и сортировку композиций. Для этого нам нужна будет программа MusicBrainz Picard. Она доступна на всех основных ОС. Программа выполняет 3 основных роли: переименовывает файлы, заполняет теги и добавляет обложку. Правда обложки берутся с Archive.org, который сейчас заблокирован в РФ, поэтому без дополнительных телодвижений их придется добавлять вручную или другими программами.




Рекомендую начать все переделывать с чистого листа. Для этого в настройках Picard включаем перенос файлов и указываем папку назначения. Также я бы рекомендовал очистить всю старую информацию в тегах. По поводу тегов ID3, версия 2.4 является более продвинутой, но не все программы умеют корректно с ней работать. В частности, Windows Explorer и Windows Media Player (до 12-й версии включительно) не понимают кодировку. Если нужна совместимость - включайте 2.3. Если хотите более прогрессивного формата с плюшками типа UTF-8 и расширенным набором тегов - ставьте 2.4.

Программа распознает два типа альбомов: обычные и составные (сборники). Сборники - это когда в альбоме больше одного исполнителя. У меня для сборников отдельный каталог (обычно называется Various Artists), а требования к каталогизации не такие строгие.
Обратите внимание на пункт настроек «Перенос файлов», в нем настраивается переименование и сортировка по папкам. Там используется небольшой скриптовой язык (такой же, как в Foobar2000), с его помощью вы сможете настроить шаблоны, как вам захочется. Установки по умолчанию довольно универсальные, но для себя я их немного подправил:

$if2(%albumartist%,%artist%)/$if2($left(%originaldate%,4),$left(%date%,4)) - %album%/$if($gt(%totaldiscs%,1),%discnumber%-,)$num(%tracknumber%,2) - %title%

$if2(%albumartist%,%artist%)/$if2($left(%originaldate%,4),$left(%date%,4)) - %album%/$if($gt(%totaldiscs%,1),%discnumber%-,)$num(%tracknumber%,2) - %artist% - %title%

Первая строка - для альбомов, вторая - для сборников. Обратите внимание, что здесь переменная %date% обозначает дату издания (или переиздания), а не дату выхода альбома. Но тут есть нюанс. Большинство программ не умеют читать тег “originaldate”, поэтому в итоговом каталоге будут сортировать альбомы по “date”, что может нарушить хронологию выхода альбомов, которые позднее переиздавались. Указанные шаблоны генерируют имена, подобные этим:
Music\Сплин\2002 - Акустика\2-05 - Моё сердце.mp3
Music\Various Artists\2001 - Fellini Tour\14 - Сплин - Моё сердце.mp3

MusicBrainz содержит достаточно подробные данные о музыке, но к сожалению, данные о жанрах у него или отсутствует или неадекватны. На этом поприще лидером является Last.fm, который как самостоятельный сервис давно стал неинтересен, но накопил много данных об исполнителях, жанрах, стилях и связях на их основе. После смены API многие скрипты перестали работать, а для MusicBrainz Picard остался только Last.fm.ng Для него главное проверить разделитель мульти-тега жанра, у меня так:
[category-grouping]
separator = "; "
Дело в том, что единичных жанров для музыки практически не бывает, всегда есть некоторое смешение жанров и стилей даже в одном произведении. Разные проигрыватели умеют распознавать мульти-теги и осуществлять с ними разные операции. Результатом заполнения тега будет строка “Gothic; Darkwave; Industrial; Electronic”, где вместо точки с запятой можно использовать любой другой символ (например запятую или вертикальную черту) в зависимости от ваших предпочтений или используемого ПО. Еще советую добавить нужные вам жанры в список в конфиге, из которого будет осуществляться поиск, т.к. там не все редкие жанры прописаны.

После того, как мы убедились, что все настройки выставлены правильно, можно скармливать всю свою коллекцию и идти пить чай




Справа отображаются опознанные треки, сгруппированные в альбомы. Но иногда нужно помогать программе распознавать треки. Файл может не опознаться, или в «кандидаты» на трек альбома может попасть несколько файлов. В этом случае придется выбирать вручную. Уровень совпадения обозначается цветом, от зеленого до красного. При проверке сравниваются некоторые теги и «fingerprint» трека.
Альбом помечается как золотой (желтый), если в нем присутствуют все треки, и нет никаких множественных интерпретаций. Наша цель - добиться максимального количества золотых альбомов. Также обратите внимание, что содержимое альбома может меняться в зависимости от выпускающей студии, иногда ручное изменение редакции поможет добиться более точного соответствия. Обработанные альбомы периодически сохраняйте в папку назначения.

Пару слов о теге “albumartist”. Иногда встречаются совместные альбомы, в которых два и более исполнителя, либо включены авторы исходного произведения, как в классической музыке. При переименовании каталоги заполняются с этого тега, а еще его используют для группировки плееры. Если он не заполнен, то используется тег “artist”. А вот в названиях треков всегда будет указан “artist”. Поэтому для таких альбомов (если это не сборники) лучше указать в теге “albumartist” одного из исполнителей по какому-либо признаку: автор оригинала, автор большинства произведений альбома и т.п.

Увы, MusicBrainz может сделать довольно большую часть работы, но не всю. В его базе могут отсутствовать некоторые редкие артисты или последние альбомы. В этом случае у вас в исходной папке останется часть неотсортированной музыки. У меня такой музыки остается около 10%, так что для нее запускаем другой инструмент - Foobar2000 с плагином Discogs Tagger. Он не настолько удобен, но в качестве вспомогательного инструмента более чем подходит. Все это позволяет обойтись без ручной правки тегов, но если уж до этого дойдет, вам помогут эти же программы плюс Mp3tag.

Если по каким-то причинам не удается или не хочется использовать Picard+Last.fm.ng, то есть еще MediaMonkey. Для поиска жанров к нему есть скрипт Genre Finder, он тоже использует Last.fm API, поэтому нужно очень внимательно отнестись к настройкам: их немного, но от них очень сильно зависит конечный результат. Вполне вероятно, что вы захотите сделать несколько пробных проходов с различными вариантами настроек. Рекомендую сначала определить 2-3 жанра в режиме поиска альбомов. Можете после этого добавить еще пару жанров, но уже в режиме поиска по отдельным трекам. Здесь же, в MediaMonkey можно параллельно смотреть и шлифовать получившийся список жанров.

Ну и наконец добавляем обложки. Есть много программ, умеющих искать обложки. Некоторые из них позволяют заливать миниатюры обложек напрямую в теги файла. Но, по моему скромному мнению, самые широкие возможности у Album Art Downloader. В настройках я бы порекомендовал поднять минимальный размер обложки (хотя бы до 50 px), и включить опцию «Automatically close after saving». Нам нужно будет сделать два прохода (установлено экспериментальным путем; никакие другие источники, включая iTunes, не дают лучшего результата). Сначала отключаем все источники (область справа), кроме Last.fm, и сканируем всю нашу музыку. После процесса поиска и анализа у нас появится окно Queue Manager, где будет список всех найденных альбомов. На этом этапе можно спокойно запустить автоматический режим (ссылка в нижней части окна Queue Manager) и ждать завершения. Если у вас после первого прохода остались нераспознанные альбомы, меняем источник с Last.fm на Google Images, и запускаем обработку оставшихся альбомов. Здесь я бы порекомендовал быть осторожнее и проверять каждый альбом вручную. Лично мне хватило этих двух проходов; остальные источники были для меня совсем неадекватными, но вы можете попробовать - у каждого из них своя специфика.

3. Пожинаем плоды

В общем, да, процесс нетривиален, и при большой коллекции может быть длительным; кнопки «Сделать все как надо» здесь нет. Но, во-первых, в любом случае, правила, вкусы и предпочтения у каждого разные, соответственно, и настройки тоже у каждого будут разные. Во-вторых, на протяжении всего процесса нам помогали мощные программы, которые в значительной степени автоматизировали работу. Ну, и в-третьих, не обязательно с точностью повторять прохождение всех этапов; думаю, каждый может найти для себя оптимальный путь.

Зато, в итоге мы получили:
  • Единую упорядоченную структуру на уровне файловой системы
  • ID3-теги, полностью заполненные (вплоть до композитора) по единым правилам
  • Возможность сортировки по жанрам и другим тегам
  • Обложки ко всем альбомам
  • Эстетическое удовольствие от осознания факта, что у вас практически идеальный порядок :)



Теперь в таком виде коллекцию с радостью скушает любой медиаплеер. И в зависимости от его функциональности можно вытворять разные хитрые штуки. Ну сортировка это банально. Поиск по тегам очень удобен. А вот что мне всегда нравилось в iTunes или Clementine, это “умные” плейлисты. Это плейлисты, составленные на основе нескольких критериев фильтрации с использованием логических И/ИЛИ. Например я могу сделать плейлист, в котором будут треки с тегами “folk” и “instrumental” или я могу отобрать всю “Electronic” до 1980 года. Вот тут нам и пригодился мульти-тег жанра с несколькими значениями.

Но в последние годы обычные плееры стали неактуальны для меня по нескольким причинам:
  • Коллекция увеличилась в объеме, на смену mp3 пришел flac
  • У меня появилась достойная домашняя техника для прослушивания музыки
  • У меня появились мобильные устройства, с которых я тоже хочу слушать музыку
Аудиотека перестала помещается даже на основном компьютере. И приходилось на каждом устройстве держать и часть музыки и делать собственные плейлисты, а это очень неудобно.

Закономерным ответом на вызов времени стала клиент-серверная реализация аудиотеки. Я как раз собрал сервер с RAID массивами, где разместил аудиотеку и в числе прочего открыл доступ к ней по SMB и NFS. Этого хватило, чтобы музыка в полном объеме добралась до домашнего кинотеатра и компьютеров, но другие потребности остались актуальными. В конечном итоге я пришел к идее аудиосервера или в общем случае медиасервера, который одновременно является и каталогизатором и проигрывателем с централизованной базой. На эту роль рассматривались:
a) Kodi - хоть и может использоваться с централизованной БД, но интерфейс для музыки абсолютно не приспособлен, не умеет работать с большинством тегов, удаленное воспроизведение с большой аудиотекой не вывозит (падает веб-сервер), нет поиска по тегам, нет мульти-поиска и умных плейлистов, нет перенаправления потока и вишенкой на торте средненькая кроссплатформенность.
b) Subsonic - заявлен как специализированный музыкальный медиасервер и сервис потокового вещания, умеет делать радио, имеет API и как следствие много разных клиентов под веб и мобильные устройства, но не разделяет мульти-тэги, нет поиска по тегам, нет мульти-поиска и умных плейлистов, нет прозрачного переключения потоков между клиентами... особую пикантность придает то, что он написан на java и под linux запускается от root.
c) Plex
d) Emby
На двух последних я и остановился. В силу большей функциональности и исторической зрелости в настоящий момент я использую Plex, написанный на python. Более молодой Emby не сильно отличается от него по функциям, имеет открытый код, но написан на C#, что означает использование Mono на nix-серверах.






Перечислю преимущества, которые я получил и стал постоянно использовать:
  • Поскольку аудиотека систематизирована на уровне файлов и тегов, нет никакой зависимости от разработчиков, сохранности базы данных и прочих неприятных сюрпризов.
  • Шикарная кроссплатформенность: windows, macos, linux, android, ios, web, tv, ps4 и т.д. и оптимизированный интерфейс для каждой платформы.
  • Удобный доступ к домашней аудиотеке извне, что по сути заменяет потоковые музыкальные сервисы
  • Медиасервер корректно поддерживает основные теги, умеет разделять мульти-тэги (жанры), умеет искать по ним, включая множественные условия и создавать из них плейлисты.
  • Есть перенаправление потока на другой клиент и управлением им, включая пульт ДУ, например можно с телефона управлять воспроизведением на телевизоре, при этом при переключении клиента, воспроизведение не сбрасывается.
  • Оффлайн синхронизация (кеширование) на мобильных устройствах треков, альбомов, плейлистов и целых исполнителей одним кликом, при этом можно выбирать локальный битрейт для экономии места.
  • Перекодирование на лету, если клиент не поддерживает проигрываемый формат, это по сути решает вечный спор в каком формате хранить lossless, flac или alac, а также это позволяет всю аудиотеку перевести в lossless, т.к. мобильные клиенты при перекодировании или синхронизации автоматически получают mp3 с заданным битрейтом, что не перегружает интернет канал или внутреннюю память
  • Единое пространство, например когда файлы разделены по каталогам или дискам, для медиасервера аудиотека может их объединить в единое целое
  • Можно запоминать позицию внутри трека, что важно для аудиокниг (хотя это уже немного другая тема)
На этом мой долгий рассказ подошел к концу. Я призываю слушать только лицензионную музыку или иными способами поддерживать артистов, ибо жизнь коротка, искусство вечно.

plex, music, picard, musicbrainz

Next post
Up