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

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

    В чём профит использования метатэгов? В трёх основных моментах:
    (а) возможность спокойно перемещать свои файлы, не опасаясь их потерять — медиабиблиотека позволит найти трек в любой самой феерической файловой куче;
    (б) готовые базы данных (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. Написать свой плеер (в комментах правда предлагают не писать плеер целиком, а прикрутить гуй и поддержку cue к mplayer-у), который умеет читать мой формат метатэгов и группировать треки в иерархические деревья согласно тэгам; портировать этот плеер на основные платформы (Win, Mac, Linux, iOS, Android, WP7);
    4. Сделать свою базу данных по классическим трекам и мэйнтейнить её.

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

    Что бы выбрал ты, %USERNAME%?
    Поделиться публикацией

    Комментарии 41

      –2
      3. Написать свой плеер, который умеет читать мой формат метатэгов и группировать треки в иерархические деревья согласно тэгам; портировать этот плеер на основные платформы;
      А почему, собственно, сложно? Достаточно написать модуль, умеющий писать/читать метаинформацию и гуй к нему на каком-нибудь Qt. А само проигрывание отдать на откуп mplayer, благо есть он везде и играть умеет всё. Соответственно в него же встроить удобный гуй для расстановки тегов. Работы на пару недель максимум.
        0
        На данный момент мне неизвестен ни один плеер и даже ни одна завалящая библиотечка, которая будет работать на iPhone, Android и WP7.
        Кроме того, умение проигрывать lossless (ape, flac) и cue-файлы критично для плеера классической музыки. Таких плееров тоже по пальцам пересчитать можно, и ни один не кроссплатформенный.
        Разве что VLC можно считать каким-никаким кандидатом на допилку. Но вод насчет «пары недель» я сильно сомневаюсь.
          –1
          s/Но вод/Но вот/
            –2
            На данный момент мне неизвестен ни один плеер и даже ни одна завалящая библиотечка, которая будет работать на iPhone, Android и WP7.

            mplayer замечательно запускается на айфоне и ведройде.
            умение проигрывать lossless (ape, flac)
            Замечательно проигрывает. Про cue ничего не знает, но это уже проблема управляющей программы, указать, с какого по какое место надо играть.
              0
              > mplayer замечательно запускается на айфоне и ведройде.

              Вики утверждает обратное:
              en.wikipedia.org/wiki/MPlayer
              И в аппсторах я его не нахожу:
              play.google.com/store/search?q=mplayer&c=apps
                –1
                Простите, а как в App Store попадёт консольное приложение?
                  0
                  Простите, а Вы мне предлагаете прикрутить собственные gui к консольному приложению под Андроид, iOS и WP7, утверждая, что это дело пары недель?
                    –2
                    Пара недель — это максимум. mplayer предоставляет богатый и простой в использовании интерфейс взаимодействия с гуями.
                      +2
                      Напишете?
                        –2
                        Если я и возьмусь писать плеер, то это будет нормальный клон фубара под *nix. Теги лично мне совершенно не интересны.
                    –2
                    Ну ок, беру свои слова обратно. Существует библиотечка под Android и iOS, которой можно воспользоваться при написании своего плеера.
                      0
                      Эм, а вам не кажется, что разбираться с отдельной либой под каждую платформу несколько сложнее обмена текстовыми сообщениями через stdin/stdout с софтиной специально для того предназначенной?
                –3
                Классику на смарте слушать. Тонкого ценителя сразу видно!
                  0
                  Я мог бы аргументированно ответить. Но как-то не хочется, извините.
                    –2
                    Ах-с, ах-с. Зато в карму насрать не поленился :D
                      –3
                      Да у меня с этим вообще не заржавеет.
                      Судя по Вашей манере общения, до бейджа «Тролль» Вам недалече.
                        –1
                        Мои манеры точно стоит обсуждать именно здесь?
                          +4
                          ну вот потому и не обсуждаем, а тихонько минусуем, хорошо, что есть такой механизм, мягко и ненавязчиво указывая не неприятие сообществом Вас лично :)
                            –3
                            image
              +2
              Вот ещё вариант: реализовать иерархическую систему тегов. Если бы тегам можно было проставлять теги, то с помощью такой системы можно было бы имитировать любую древовидную структуру, при этом не потеряв гибкости обычных тегов.

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

              Тег [Тег] — спец. файл-тег, которым должны быть помечены файлы, которые могут выступать в роли тегов.
              Композитор [Тег]
              Дирижёр [Тег]
              Год [Тег] — может содержать метаинформацию со значением года
              Музыка [Тег]
              Тип исполнения [Тег]
              Бетховен [Тег, Композитор]
              Оркестровая музыка [Тег, Музыка]
              Симфония [Тег, Оркестровая музыка]
              Хор [Тег, Тип исполнения]
              Симфония №9 [Тег, Симфония]
              Georg Ludwig Jochum [Тег, Дирижёр]
              Файл1.mp3 [Симфония №9, Georg Ludwig Jochum, Хор, Год(1961)]
              Файл2.mp3 [Симфония №9, Georg Ludwig Jochum, Хор, Год(1961)]

              ФайлN.mp3 [Симфония №9, Georg Ludwig Jochum, Хор, Год(1961)]

              Фильтровать файлы можно так:
              select * [Georg Ludwig Jochum] — выбрать все файлы с дирижёром Georg Ludwig Jochum
              select * [Хор, Год(>=1961)] — все хоровые исполнения, начиная с 1961 года

              И т.д.
                0
                Более того, можно было бы сделать файловую систему, в которой любой файл мог бы выступать в качестве тега к другому файлу.

                Симлинки не подойдут?
                  0
                  Как это можно реализовать — вопрос десятый. Можно написать свою ФС, можно симлинки, можно хранить все файлы в одной папке на NTFS, а информацию о тегах хранить в БД или NTFS-stream'ах. У каждого подхода, как обычно, есть минусы и плюсы.
                  –1
                  Можно, но (а) непросто, (б) никакого видимого профита.
                  0
                  Вот из-за этих треклятых тегов я и пользуюсь Cog вместо iTunes.
                  • НЛО прилетело и опубликовало эту надпись здесь
                      0
                      Его смотрел, но Cog мне удобней показался.
                    +1
                    Я, честно говоря, не понимаю, в чем проблема. Если вам удобно хранить/искать музыку в папках (справедливости ради, я сам так делаю) — храните. Если вам кто-то говорит что это плохо, и что нужно использовать теги — ну это его право, пусть делает как ему удобно.
                      +3
                      Попробуем вашу иерархию вложить в тег IDEv2 (в AIMP для flac такая же структура)



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


                      Часть № -> Трек №
                      Заголовок -> Наименование части
                      Произведение -> Альбом
                      Запись -> Исполнитель (оттуда же берем год)
                      Композитор -> Композитор
                      В Комментарии можно состав оркестра записать.

                      Поправьте, пожалуйста, если я где-то не так думаю.
                        0
                        Ну, там есть проблемы с указанием исполнителей, если их больше одного.
                        Но да, можно. Только это лишь часть проблемы.
                          +1
                          А какие проблемы? Вроде бы, по стандарту, исполнители разделяются точкой с запятой.
                      • НЛО прилетело и опубликовало эту надпись здесь
                        • НЛО прилетело и опубликовало эту надпись здесь
                            +1
                            Ок, формат тэгов не нужен, достаточно заюзать существующие.
                            Увы, проблема этим не исчерпывается.
                          • НЛО прилетело и опубликовало эту надпись здесь
                              +1
                              Ок. В свободном доступе нет такой базы.
                              0
                              Деревья по тегам, в общем, самое оно. Просто для этого нужно делать еще и иерархию тегов (теги тегов ;)). Это уже конкретно взламывает мозг, поэтому не сильно распространено.
                                0
                                Придумать, как привязать всю метаинформацию к файлу, — можно. Но зачем?
                                Файл — все равно непереносимая единица. Нет юзкейса «напихать отдельных файлов в плейлист».
                                  +1
                                  А как по мне источником вдохновения для какой-либо каталогизации «сложной» музыки должны служить пластинки и диски (:
                                    –1
                                    Пластинки и диски — формат прошлого века.
                                      –1
                                      Очень ценное замечание.

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

                                  Самое читаемое