AIMP Forum

AIMP for Windows => Ошибки и замечания / Bugs => Обработано / Processed => Topic started by: Jeque on March 28, 2024, 14:00:59

Title: [-] Редактор тегов заменяет разделители в поле Жанр
Post by: Jeque on March 28, 2024, 14:00:59
Обратил внимание, что при нажатии кнопки "Сохранить" в редакторе тегов, (даже, если ничего не менялось), он зачем-то заменяет разделитель жанров с точки с запятой ( ; ) на слеш (/). Причём, в самом AIMP жанры продолжают отображаться разделёнными точкой с запятой, но если посмотреть свойства файла через проводник или в другом плеере, там жанры оказываются разделены прямым слешем.
Обратил на это внимание, когда заполнял в файлах поля "Track Gain".
Поскольку единого мнения, чем должны разделяться множественные теги, как я понял, не существует, но при этом, большинство распространённых плееров принимают в качестве разделителя точку с запятой, считаю такое поведение редактора тегов не совсем правильным. И вообще, не понятно для чего при сохранении менять значения полей, которые не редактировались.
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Artem on March 28, 2024, 14:24:20
он зачем-то заменяет разделитель жанров с точки с запятой ( ; ) на слеш (/)

У каждого формата тегов своя методика для записи множественных значений. AIMP адаптирует ввод под конкретный формат.

Поскольку единого мнения, чем должны разделяться множественные теги, как я понял, не существует

Существует, он прописан в стандарте
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Jeque on March 28, 2024, 14:44:57
Существует, он прописан в стандарте
А можно ссылку на этот стандарт? Сколько искал, нигде не нашёл.
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Artem on March 28, 2024, 14:54:47
А можно ссылку на этот стандарт? Сколько искал, нигде не нашёл.

Для какого формата?
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Jeque on March 28, 2024, 14:57:01
Для какого формата?
MP3
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Artem on March 28, 2024, 15:06:44
У ID3v2 это "/". Значения пишутся в одно поле.
Стандарт тут:
https://mutagen-specs.readthedocs.io/en/latest/id3/id3v2.4.html
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Jeque on March 28, 2024, 15:28:48
У меня ссылка почему-то не открывается - 404 Not Found
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Алексей Долматов on March 28, 2024, 15:55:58
Можете попробовать найти на смежных страницах, потому что обозначенная ссылка для меня тоже отсутствует.
https://mutagen-specs.readthedocs.io/en/latest/id3/index.html
https://mutagen-specs.readthedocs.io/en/latest/index.html
Внизу ссылки на GitHub и на скачивание. Похоже, что 2.4 всегда было поделено на две части.
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Jeque on March 28, 2024, 16:45:00
Там половина ссылок не работает. А в тех, что работает, я ничего не нашёл.

Кое-что есть вот здесь:
https://en.wikipedia.org/wiki/ID3#ID3v2
Quote
ID3v2.4 was published on November 1, 2000. It defines 83 frame types,[12] allows text frames to contain multiple values separated with a null byte, and permits the tag to be stored at either the beginning or the end of the file.[13]

и здесь:
https://web.archive.org/web/20220903174949/https://id3.org/id3v2.4.0-frames
Quote
The text information frames are often the most important frames,
   containing information like artist, album and more. There may only be
   one text information frame of its kind in an tag. All text
   information frames supports multiple strings, stored as a null
   separated list, where null is reperesented by the termination code
   for the charater encoding. All text frame identifiers begin with "T".
   Only text frame identifiers begin with "T", with the exception of the
   "TXXX" frame.

Но это касается ID3v2.4. Про то, какие разделители можно использовать в ID3v2.3 я ничего не нашёл.

Если резюмировать, то в стандарте ID3v2.4 сказано только, что разделителем может быть "null character" и он разделяет текстовые фреймы на отдельные строки, которые (наверное?) должны восприниматься как разные значения одно и того же тега. Ни про слеш, ни про точку с запятой я там ничего не нашёл.

В общем, вопрос, что же действительно указано в стандарте остаётся открытым.
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Artem on March 28, 2024, 16:46:57
У меня ссылка почему-то не открывается - 404 Not Found

Можно эту
https://mutagen-specs.readthedocs.io/en/latest/id3/id3v2.2.html
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Artem on March 28, 2024, 16:48:26
Но это касается ID3v2.4. Про то, какие разделители можно использовать в ID3v2.3 я ничего не нашёл.

В v2.4 сделали null-сепаратор, убрав тем самым коллизии с именами вроде AC/DC. В v2.2 и v2.3 используется "/". v1 множественные значения не поддерживает вообще.
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Jeque on March 28, 2024, 17:20:59
В v2.2 и v2.3 используется "/".

В документе по вашей ссылке, это относится только к некоторым текстовым фреймам, таким как, например, "исполнитель" и "композитор". Жанра среди них нет. Тег "Genre" к текстовым не относится, как я понял. Там вообще должно быть числовое значение, которое потом сравнивается с неким списком. Но это давно уже никто не соблюдает.
Таким образом, в стандарте нигде не сказано, какой должен быть разделитель значений в поле Жанр. И это плохо, потому что разные плееры могут воспринимать такие поля по разному. Поэтому для универсальности было бы правильно считать разделителем несколько наиболее часто встречающихся символов - слеш, запятая, точка с запятой, ну и тот самый нуль.

И всё-таки, возвращаясь к моему изначальному вопросу, я считаю не корректным, когда редактор тегов AIMP самостоятельно исправляет поля, в которых не было внесено никаких изменений.
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Jeque on March 28, 2024, 17:52:20
Там ещё есть текстовое поле "content type", в котором упоминаются жанры, но опять же, как числовые значения в круглых скобках.

Quote
TCO
The content type, which previously (in ID3v1.1) was stored as a one byte numeric value only, is now a numeric string. You may use one or several of the types as ID3v1.1 did or, since the category list would be impossible to maintain with accurate and up to date categories, define your own.
References to the ID3v1 genres can be made by, as first byte, enter "(" followed by a number from the genres list and ended with a ")" character. This is optionally followed by a refinement, e.g. "(21)" or "(4)Eurodisco". Several references can be made in the same frame, e.g. "(51)(39)". If the refinement should begin with a "(" character it should be replaced with "((", e.g. "((I can figure out any genre)" or "(55)((I think...)". The following new content types is defined in ID3v2 and is implemented in the same way as the numerig content types, e.g. "(RX)".
RX       Remix
CR   Cover
This does not however mean that there always is numbers or RX or CR in the paranthesis. It might very well be a new format for genres in the future, e.g. "(/rock/hard)"

А вот последняя фраза вроде как намекает на то, что в этом поле можно перечислять жанры. И даже дан пример перечисления через слеш. Но это увы не стандарт, а какое-то хайли лайкли.
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Jeque on March 28, 2024, 18:06:58
Я прошу прощения за дотошность, но мне действительно хочется разобраться. Я сейчас как раз занимаюсь организацией своей музыкальной библиотеки и в том числе навожу порядок с тегами. У меня довольно много композиций с миксами, где прописано несколько жанров и хотелось бы раз и навсегда всё правильно прописать, чтобы потом это нормально читалось разными плеерами. Потому и хочу по возможности точно узнать, каким именно символом разделять жанры.
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Artem on March 28, 2024, 20:40:31
И всё-таки, возвращаясь к моему изначальному вопросу, я считаю не корректным, когда редактор тегов AIMP самостоятельно исправляет поля, в которых не было внесено никаких изменений

Тег пересобирается с нуля. По такому принципу работают практически все редакторы тегов. Более того, такое пересохранение автоматически правит ошибки в тегах и приводит все дело к правильному виду, описанному в стандарте.
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Artem on March 28, 2024, 20:41:57
Потому и хочу по возможности точно узнать, каким именно символом разделять жанры.

В AIMP-е всегда используется ";", а дальше оно уже само конвертируется в тот формат, который допускает тот или иной формат тега. Тут хочу заметить, что тот же Vorbis Comments вообще не имеет разделителей - каждое значение пишется в отдельное поле.
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Artem on March 28, 2024, 20:42:32
В документе по вашей ссылке, это относится только к некоторым текстовым фреймам, таким как, например, "исполнитель" и "композитор". Жанра среди них нет

Причем тут жанр? Принцип разделения относится ко всему ID3v2, а не только к полю жанра.
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Jeque on March 28, 2024, 21:00:54
Причем тут жанр? Принцип разделения относится ко всему ID3v2, а не только к полю жанра.
Рискну с вами не согласится. Если посмотреть документ по ссылке: https://mutagen-specs.readthedocs.io/en/latest/id3/id3v2.2.html , раздел "Text information frames - details", то там в описании фреймов, где допускается перечисление прямо указано "They are seperated with the “/” character." В описании же тэга TCO, куда сейчас и записывается жанр, про это ничего не сказано. Более того, там описывается, как перечислять цифровые значения жанров с помощью скобок без всяких разделителей.
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Artem on March 28, 2024, 21:09:52
Рискну с вами не согласится. Если посмотреть документ по ссылке: https://mutagen-specs.readthedocs.io/en/latest/id3/id3v2.2.html , раздел "Text information frames - details", то там в описании фреймов, где допускается перечисление прямо указано "They are seperated with the “/” character." В описании же тэга TCO, куда сейчас и записывается жанр, про это ничего не сказано. Более того, там описывается, как перечислять цифровые значения жанров с помощью скобок без всяких разделителей.

И? Какой из этого следует вывод? Если жанр представлен в виде кастомного (текстового) значения - как он должен быть записан?
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Soolo on March 28, 2024, 21:11:46
Рискну с вами не согласится. Если посмотреть документ по ссылке: https://mutagen-specs.readthedocs.io/en/latest/id3/id3v2.2.html , раздел "Text information frames - details", то там в описании фреймов, где допускается перечисление прямо указано "They are seperated with the “/” character." В описании же тэга TCO, куда сейчас и записывается жанр, про это ничего не сказано. Более того, там описывается, как перечислять цифровые значения жанров с помощью скобок без всяких разделителей.
Поиск по слову genre выдал инфу по id3v1, именно там цифры
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Jeque on March 28, 2024, 21:42:59
И? Какой из этого следует вывод? Если жанр представлен в виде кастомного (текстового) значения - как он должен быть записан?

Увы, на этот счёт нет однозначного мнения. В обсуждении разных программ предлагают разное.

Вот, например, в обсуждении известного редактора тегов Mp3tag предлагают использовать "\\" или ";" https://community.mp3tag.de/t/multiple-genres-in-1-genre-tag/17159/5

А тут: https://community.audirvana.com/t/how-do-you-deal-with-multiple-genres/34517/4 , ссылаясь на автора редактора Kid3 предлагают применять "|".

А вот на сайте органайзера музыки Bliss пишут:
https://www.blisshq.com/music-library-management-blog/2011/03/12/multiple-genres-in-mp3s/
What delimiter should be used? The de facto standard most music players adopt is to use the semi-colon character. For instance, your genre tag should appear as so:
GENRE = Rock;Shoegazing;Alternative
Т.е. считают стандартом де факто точку с запятой.

Вам, конечно, виднее, но я бы считал хотя бы точку с запятой разделителем, равнозначным слешу, потому что она встречается в таких обсуждениях чаще всего в качестве совета при использовании разделителя жанров, да и большинство плееров, как я понял, её понимают.
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Алексей Долматов on March 28, 2024, 22:18:19
Это обсуждение нет смысла продолжать в этой теме. Ошибка в работе плеера/редактор не обнаружена.

На этом форуме тоже есть (или была, не проверял) тема над лучшим вариантом ввода.
И, по вашим ссылкам, и в этой теме написано, что есть внутренний разделитель (по спецификации) и внешний разделитель (видимый пользователю). Спецификации многогранны, как и творческий энтузиазм в создании лейблов, жанров и т.п. Из-за этого сложно сделать единый стандарт разделителя. Автор этого плеера выбрал наиболее подходящий вариант ввода для пользователей, основываясь не только на личном мнении. Внутри файла следует спецификациям. Это "невидимая" часть большинству пользователей. Вы смешиваете в кучу спецификацию и вводимые данные. Из этого ничего путного не выйдет.
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Jeque on March 28, 2024, 22:52:20
Ошибка в работе плеера/редактор не обнаружена.

Не согласен. Редактор без ведома пользователя при сохранении меняет значение поля, которое сам пользователь не изменял и не просил изменять. Причём, речь идёт об очень неоднозначном тэге, где есть разночтения.
Представьте себе, что кто-то долго заполнял жанры во множестве файлов, чтобы они корректно отображались в его любимом мобильном плеере (AIMP для Android, кстати, не умеет работать с множественными жанрами) или, например, в головном устройстве автомобиля, а потом напустил на эти файлы анализ Replay Gain в редакторе тегов AIMP, и тот ему при сохранении всё испортил.
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Jeque on March 28, 2024, 23:23:51
Добавлю сюда ещё информацию к размышлению и, если посчитаете нужным, тему можно закрывать.

1. Если плеер однозначно считает "/" разделителем жанров, это может привести к следующей ситуации. Многие порталы диджейской музыки, например beatport, используют "/" в поле Жанр в качестве разделения поджанров. Там можно, к примеру, встретить в тегах такое: "Deep / Melodic Techno". Плеер воспримет такое сочетание, как два жанра - "Deep" и "Melodic Techno" и они будут отображаться в фонотеке именно так. Но такого жанра в клубной музыке "Deep" нет. Есть отдельно "Deep Techno" и "Melodic Techno".

2. Именно поэтому некоторые плееры имеют у себя настройку, где можно указать разделители жанров. Например, в Poweramp в разделе "Библиотека" - "Сканер" есть пункт "Разделение жанров" (в английской версии - Settings > Library > Scanner > "Symbols to Split Multiple Genres"), где можно самостоятельно указать нужные  разделители. (Ну, раз уж в стандарте это однозначно не установлено).
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Artem on March 29, 2024, 00:08:30
Но такого жанра в клубной музыке "Deep" нет. Есть отдельно "Deep Techno" и "Melodic Techno".

Именно поэтому в ID3v2.4 сепаратором является null-символ, чтобы таких ситуаций избежать. Из-за несовершенства стандарта, разработчики приложений начали придумывать костыли, которые потом другие списывают на какие-то разночтения. Разночтений нет. Есть несовершенство ID3v2.3.
Title: Re: Редактор тегов заменяет разделители в поле Жанр
Post by: Artem on March 29, 2024, 00:10:37
Я уже говорил выше, что плеер пересобирает тег с нуля при сохранении.
Во-первых, нельзя просто взять и пропатчить что-то в середине, не затрагивая соседние блоки.
Во-вторых, такая особенность используется для восстановления структуры тегов (если вдруг в файле "что-то было не так") и кодировки (AIMP перезаписывает все в UTF8/16, которая потом открывается на любых системах независимо от локали).

Бага никакого нет, и править я ничего не буду. У нас все работает корректно, согласно стандарту.
Title: Re: [-] Редактор тегов заменяет разделители в поле Жанр
Post by: «G-Li†ch» on March 30, 2024, 14:45:29
Стандарту, несовместимому с той же греческой локализацией, где точка с запятой ($3Bʰ) означает вопросительный знак.
$000Dʰ $000Aʰ или уже в крайнем случае вертикальную табуляцю (хотя её можно так же задействовать для разделения самих меток)… тьфу, $000Bʰ
ой, есть же $1Eʰ — разделитель записей (Record Separator) :))
действительно, чё к этому NUL`ю привязываться?
Title: Re: [-] Редактор тегов заменяет разделители в поле Жанр
Post by: Artem on March 30, 2024, 15:03:01
Стандарту, несовместимому с той же греческой локализацией, где точка с запятой ($3Bʰ) означает вопросительный знак.
$000Dʰ $000Aʰ или уже в крайнем случае $0011ʰ (vertical tab) хотя бы…

Причем здесь точка с запятой и стандарт? Точка с запятой используется исключительно в аимп, и, более того, в случае utf16 никаких коллизий с греческим знаком не будет
Title: Re: [-] Редактор тегов заменяет разделители в поле Жанр
Post by: «G-Li†ch» on March 30, 2024, 15:22:01
видеть это как будто там написано Rock?Shoegazing?Alternative это нормально? Кодировка – это уже дело десятое…
Title: Re: [-] Редактор тегов заменяет разделители в поле Жанр
Post by: Artem on March 30, 2024, 16:13:52
видеть это как будто там написано Rock?Shoegazing?Alternative это нормально? Кодировка – это уже дело десятое…

Вы путаете ANSI и юникод.