Тэги vs папки: взгляд со стороны

в 7:10, , рубрики: папки, Работа со звуком, тэги, метки: ,

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

В чём профит использования метатэгов? В трёх основных моментах:
(а) возможность спокойно перемещать свои файлы, не опасаясь их потерять — медиабиблиотека позволит найти трек в любой самой феерической файловой куче;
(б) готовые базы данных (CDDB, например), которые позволяют автоматически протегировать треки;
(в) унифицированный формат отображения трека в плеере — на фоне зоопарка и разнобоя в именах файлов, плеер всегда покажет чистенькую строчку Артист — Название трека. (Ну или Артист — Название альбома — Номер трека. Название трека. Кому как удобнее.)

Проблема только в том, что всё это работает только на уровне стандартной схемы «исполнитель — альбом — трек», и абсолютно отказывается работать в другой предметной области (я говорю о классической музыке). Сейчас я попытаюсь пояснить, почему.

Идея метатэгов изначально базируется на следующем принципе: мы можем привязать метаинформацию непосредственно к самому файлу. Трек является самостоятельной независимой единицей, которую можно легко выдернуть из «контекста» (альбома, сборника) и он не потеряет свою ценность. Логично тогда и всю нужную информацию привязать прямо к треку, а не к контексту.

В случае классической музыки это абсолютно не так.

1. Большинство классических произведений состоят из нескольких частей. Многие — ещё и имеют иерархию подразделений внутри одного произведения (для опер, например, акт — действие — номер). Выдёргивать отдельный трек из записи НЕЛЬЗЯ. Это попросту бессмысленно.

2. Одно и то же произведение записывается многократно. У меня, например, есть более 50 полных комплектов симфоний Бетховена. Многие записи сделаны одним и тем же исполнителем в разные годы и в разных местах. Есть записи, сделанные одним и тем же исполнителем в один и тот же день!

3. У одной записи может быть более одного исполнителя. В случае опер, например, это 5-10 исполнителей основных ролей, хор, дирижер хора, оркестр и дирижер оркестра. Иногда несколько оркестров или несколько хоров.

4. И, наконец, у классической музыки ИНОЙ ПАТТЕРН ИСПОЛЬЗОВАНИЯ. Это (а) другой паттерн выбора — по композитору и по исполнителю — и (б) другой паттерн воспроизведения — у классического произведения, как правило, заметная продолжительность по времени (полчаса и более), поэтому кейса «посмотреть, что сейчас играет» нет; есть кейс «пропустить трек/перескочить на нужный фрагмент».

Итак, почему же всё вышесказанное делает тэги непригодными?

1. У классической записи ТРИ уровня метаинформации: само произведение, запись, трек внутри записи. Эту информацию необходимо предоставлять в иерархическом виде:

Композитор: Бетховен
  Произведение: Симфония №6, Пасторальная
    Запись 1: Чикагский симфонический оркестр п/у Фрица Райнера, 1961
       Часть 1. Пробуждение радостных чувств от прибытия в деревню. Allegro ma non troppo
       Часть 2. Сцена у ручья. Andante molto mosso
       Часть 3. Веселое сборище крестьян. Allegro
       Часть 4. Гроза. Буря. Allegro
       Часть 5. Пастушья песнь. Allegretto

    Запись 2: Филадельфийский оркестр п/у Юджина Орманди, 26.01.1966
       Часть 1. Пробуждение радостных чувств от прибытия в деревню. Allegro ma non troppo
       Часть 2. Сцена у ручья. Andante molto mosso
       Часть 3. Веселое сборище крестьян. Allegro - Гроза. Буря. Allegro - Пастушья песнь. Allegretto

    Запись 3: ...

  Произведение: ...

Метаинформация не привязана к конкретному файлу! Она попросту там избыточна. Да и файл всё равно нельзя просто взять и перенести куда-то.

Но, допустим, для чистоты эксперимента, мы сделаем над собой насилие и сведём всю информацию в конечный трек. Получим в нашем гипотетическом плейлисте примерно следующее:

1. Брамс. Концерт для скрипки и виолончели с оркестром «Двойной» — Жак Тибо, скрипка; Пабло Касальс, виолончель; оркестр Пабло Касальса п/у Альфреда Корто — Барселона, 10-11.05.1929 — 1. Allegro
2. Брамс. Концерт для скрипки и виолончели с оркестром «Двойной» — Жак Тибо, скрипка; Пабло Касальс, виолончель; оркестр Пабло Касальса п/у Альфреда Корто — Барселона, 10-11.05.1929 — 2. Andante
3. Брамс. Концерт для скрипки и виолончели с оркестром «Двойной» — Жак Тибо, скрипка; Пабло Касальс, виолончель; оркестр Пабло Касальса п/у Альфреда Корто — Барселона, 10-11.05.1929 — 3. Vivace ma non tanto

В выведенной плейлистом куче-мале информации данных по самому треку — 10%. Всё остальное — метаинформация более высокого уровня, которая дублируется n раз просто для того, чтобы правильно идентифицировать трек в медиабиблиотеке. Я уж оставляю за скобками вопрос, кто и как будет вписывать эти безумные метаданные.

Но, по-прежнему, допустим. Мы придумали кастомные поля для хранения всех метаданных в треке, прописали эти метаданные и настроили медиабиблиотеку так, чтобы она показывала информацию о треке именно в таком виде.

Можем ли мы теперь использовать все преимущества метатэгов, которые я описал выше?

(а) Перемещать файлы — можем. Да только это бессмыссленно: нет кейса оторвать одну часть от произведения. Всё равно придётся перемещать их как минимум в составе всей записи.

(б) Использовать готовые базы — не можем. Мы же сами только что придумали, как распихать всю эту информацию по тэгам. Думаете, какая-то из существующих баз поддерживает этот формат? Черта с два. Я вам больше скажу — нет ни одной базы, где вся нужная метаинформация присутствует хоть в каком-то виде. Типичное описание классического альбома в базах выглядит примерно так: www.freedb.org/freedb/classical/45115f06

(в) Унифицировать формат отображения в плеере — да! Унифицировали. Да вот только описание трека стало невнятной кашей в несколько строчек с минимумом полезной информации.

А решили ли мы какие-то кейсы из паттерна использования?

(а) Поиск по любой части метаданных — вероятно, возможен, как меня уверяют в предыдущем топике. Но только в десктопной библиотеке. 90% плееров, включая все мобильные, не даст нормально искать по метаинформации, как её не вписывай.

(б) Паттерн воспроизведения… тут всё стало вообще плохо. Кейс «открыть нужную запись» усложнился — её можно найти только поиском по кастомным полям; гигантское месиво метаинформации в плеере — абсолютно бесполезно, поскольку эта информация нужна ТОЛЬКО в момент выбора произведения; кейс «пропустить пару треков» переусложнён — очень трудно найти нужный трек, если 90% наименования трека составляет бесполезная информация.

Итак, зачем же мне использовать метатэги? Получается, незачем. Я не могу пользоваться ни одним преимуществом метатэгов, и они усложняют мне типичные паттерны использования медиабиблиотеки.

Ну и что делать?

А тут есть два пути. Простой и сложный.

Простой: раскидать всё по файловой системе и забить на метатэги. Приходится здесь, правда, усложнять один из двух кейсов: поиск по произведению или поиск по исполнителю. Я выбрал второе, у меня файловая система выглядит так:

Beethoven
  Orchestral Music
    Symphonies
      Symphony No. 9, Choral
        Georg Ludwig Jochum, 1961

Я легко могу выбрать нужное мне произведение, а потом выбрать интересное мне исполнение этого произведения. Это, в целом, покрывает 80% кейсов использования мной медиабиблиотеки.

Что самое важное, этот паттерн я могу легко использовать в любом плеере и на любом устройстве, который поддерживает функцию «открыть папку и проиграть все файлы подряд».

Сложный:
1. Придумать свой формат метатэгов, совместимый с mp3, ape, flac, vw, cue, mp4 и ogg;
2. Протэгировать все 600 Гб своей музыки;
3. Написать свой плеер, который умеет читать мой формат метатэгов и группировать треки в иерархические деревья согласно тэгам; портировать этот плеер на основные платформы;
4. Сделать свою базу данных по классическим трекам и мэйнтейнить её.

И, если я всё это сделаю, мне скажут спасибо примерно с десяток гиков, увлекающихся классической музыкой. При этом я не улучшу самому себе ни одного кейса и ни одного паттерна, кроме быстрого поиска по исполнителю.

Что бы выбрал ты, %USERNAME%?

Автор: forgotten

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js