Как еще можно классифицировать музыку.

Как еще можно классифицировать музыку.

Все прекрасно знают, что это дело весьма и весьма не простое. О том как это сложно можно почитать у kurokikaze . В свое время прочитал книгу А.В. Волошина «Математика и искусство». И вот что придумал.

Мы можем попытаться найти мелодию по ее небольшому фрагменту, но для этого нам будет необходимо перевести ее в какой-то более простой вид. Например, на входе мы будем иметь файл mp3, wav, ogg или еще какой-нибудь. Далее строим сонограмму этого файла, фильтруем и, при необходимости, выделяем ведущую мелодию, насколько это возможно. Далее транспонируем полученную мелодию, то есть, например, из тональности ля-мажор переводим в до-мажор. С этим неплохо справляются программы для получения midi-файлов для сотовых телефонов. Эстетика нас не будет особо волновать. Дальше строим таблицу переходов между нотами. Обычно при анализе используют частоту встречаемости нот и строят гистограммы:


По горизонтали порядковый номер ноты, по вертикали ее частота встречаемости.
А у нас получается вот так:



По горизонтали и вертикали порядковый номер ноты. Чем больше кружок тем чаще переход между нотами. Первый график можно спокойно получить из второго, если просуммировать значения в каждом столбце

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

P.S.Если кому интересно – на картинках Бетховен, струнный квартет ми-бемоль мажор.
+57
14 декабря 2008, 18:46
35
sasha237 47,5

комментарии (58)

+4
ExxY #
Существуют бесплатные системы с большими БД треков работающие подобным образом. MusicBrainz например.
0
vvivan #
А ссылочку дайте пожалуйста, как раз долго искал такие системы.
+3
Alert #
+6
sasha237 #
Чорд! Меня опередили. =)
Тогда пробую реабилитироваться (не реклама — просто что нашел) несколько ссылок
en.wikipedia.org/wiki/Acoustic_fingerprint — это про музыкальные «отпечатки пальцев»
www.znamensk.net/forum/showthread.php?s=29411b531180010f66ba401f6feb7542&t=1544 — это одно описание
www.liveinternet.ru/community/lj_slavik46/post70474208/ — это второе описание
А я в следующий раз буду повнимательней ;)
+1
Killy #
+1
Alert #
0
sasha237 #
Поняслась родииимая =)
+1
SilenceAndy #
+1
ExxY #
Преимущество MusicBrainz в том что она работает по принципу wiki. То есть вы можете добавлять свои композиции, за счёт чего база быстро растёт
0
Killy #
Однако, с коммерческой CDDB тягаться всё-равно может с трудом.

Любопытно, какими путями пополняется база CDDB.

(С CDDB работает, например, функция Auto-tag в Winamp'е.)
+3
GreyCat #
Не соглашусь с тем, что «тягаться может с трудом». CDDB есть несколько:

Есть «официальная», которая cddb.com от gracenote, распространяется за деньги, lookup'ать в ней можно весьма ограничено. Пополняют ее большинство коммерческих CDDB-enabled плееров по умолчанию, даже не спрашивая у пользователя, хочется ему туда или нет. «Официальная» cddb пестрит диким проблемами с кодировками и довольно хламным содержимым, несмотря на то, что на дворе уже почти 2009 год и utf-8.

Есть freedb.org, в которой все чуть получше, с ней по умолчанию обычно работают (=забирают информацию и пополняют) все фришные плееры и дисковые библиотеки (типа kscd и т.п.), но бардака там примерно столько же. Попробуйте поискать там CD какого-нибудь русского исполнителя — с большой вероятностью найдете варианты в windows-1251, koi8-r и utf-8, причем половину — каких-то сильно поломанных.

В MusicBrainz подход радикально иной — там оценочная система модерации и, как правило, весь получающийся бардак подчищают. Есть достаточно четкие правила описания дисков (например, как записать название трека — «Komodia I — The Beginning», «Komodia 1: The Beginning», «Komodia pt.1. The Beginning.» или еще как-то — там определяется единый стандарт), есть люди, которые следят за соблюдениями этих правил и стандартов. В результате почти по всем записям (а уж по русскоязычным — точно) порядок намного больший, чем в любых CDDB.

Кстати, MusicBrainz умеет импортировать данные из CDDB, чтобы их не вбивать руками. Но почти всегда эти данные приходится дополнительно править.
+1
Killy #
Меня интересуют в первую очеред японские исполнители. А русских почти совсем нет.
С японскими тегами в CDDB проблемм не было. Всегда юникод. Shift-JIS не попадался. :)

> Пополняют ее большинство коммерческих CDDB-enabled плееров по умолчанию, даже не спрашивая у пользователя, хочется ему туда или нет.

Вот и ответ, я думаю. Толпа юзеров iTunes и Winamp'а гораздо быстрее наполняет базу, чем отдельные гики с линуксом или MisicBrainz Picard.
Не всегда результат приемлимый, но чаще это всё-таки так.
Здесь уместно говорить о качестве и количестве. Будь там хоть суперкачественные теги, если я не нахожу нужных мне — зачем мне этот сервис?

Думаю, надо додавить авторов AIMP, чтобы добавили поддержку MusicBrainz. Если работать с сервисом будет также просто, как и в коммерческих плеерах, база будет быстрее пополняться.

> Кстати, MusicBrainz умеет импортировать данные из CDDB, чтобы их не вбивать руками. Но почти всегда эти данные приходится дополнительно править.

А можно про это поподробнее? В Picard'е не видел. Поправить — не проблемма. Вот целиком руками вбивать — проблемма.
+1
GreyCat #
> С японскими тегами в CDDB проблемм не было. Всегда юникод. Shift-JIS не попадался. :)

Сильно повезло ;)

> Здесь уместно говорить о качестве и количестве. Будь там хоть суперкачественные теги, если я не нахожу нужных мне — зачем мне этот сервис?

Абсолютно согласен — но в последнее время MusicBrainz покрывает процентов 99 того, что я нахожу. В том числе по японским исполнителям — это одна из наиболее полный баз, которые я знаю.

> А можно про это поподробнее? В Picard'е не видел. Поправить — не проблемма. Вот целиком руками вбивать — проблемма.

Все банально и ни от кого не прячется — musicbrainz.org/freedb/freedb.html. В том числе там есть хитрая определялка кодировки на тот случай, если добрые люди в freedb положили не utf-8 ;)
+1
GreyCat #
В смысле, конечно, без точки — musicbrainz.org/freedb/freedb.html
+1
Killy #
>> You need to login to view this page

Прячется. Я ещё не регистрировался. :)

> Кстати, MusicBrainz умеет импортировать данные из CDDB, чтобы их не вбивать руками.

И всё-таки freedb. И не сразу, а через сайт.
+1
GreyCat #
> Прячется. Я ещё не регистрировался. :)

Логично, так как речь идет о том, что будет производиться редактирование базы. В MusicBrainz все редактирования делаются из под авторизованных пользователей (в отличие от MediaWiki / Wikipedia, где можно подписываться IP-шником и не регистрироваться).

> И всё-таки freedb

Да, согласен, неверно написал. freedb, конечно, т.к. из cddb нельзя просто так бесплатно информацию брать в промышленных масштабах.

>И не сразу, а через сайт.

Логика примерно такая: Picard и любые тэггеры — это такое средство, которое в первую очередь «читает» из БД MusicBrainz и позволяет пользоваться информацией. А для редактирования MusicBrainz первичен сайт, и только то, что технически нельзя сделать через сайт, делается через всякие тэггеры (такие вещи, как DiscID и собственно акустический фингерпринтинг через PUID/TRM).
0
leshaogonkov #
по-моему в подобных системах по определению будет мусор. Кто может заставить пользователя вводить теги правильно? Кто-то любит с капс-лока всё писать, другой всё переводит на свой родной чешский, к примеру.

Я пользуюсь подобными системами, но после этого в 99 % случаев приходится потом поправлять капитализацию, и мелкие опечатки. (last.fm эффект в действии)
0
Alaunquirie #
В телефоне Sony-Ericsson класса walkman музыка так же может быть инициализирована, причем даже (!) с прямой записи отрывка, скажем, на концерте или дискотеке. Интересно, как это реализовано.
–1
lecter #
TrackID
0
Alaunquirie #
ГЕНИАЛЬНО!!! А как именно оно работает?
+1
lecter #
ru.wikipedia.org/wiki/TrackID
Выше уже давали ссылку. Сарказма не понял.
0
Alaunquirie #
К сожалению, там не сказано, как оно работает. Ну да, сравнивается с образцами, т.е. у них на сервере просто огромное кол-во музыки, и сравнивается звучание и частоты со всеми? Интересно само устройство технологии.
0
Nakilon #
а ещё к винампу по дефолту идет плагин AutoTagger или как-то так
–2
porqz #
Ух ты!
+9
tenshi #
1. берём вавчики
2.…
3. сравниваем мидишки
4. профит.

частота переходов между нотами — такая же бесполезная информация, как и гистограмка. последняя не учитывает историю вообще, а первая — учитывает, но только на одну ноту назад.

а то, что получилось у тебя на картинке — матрица вероятностей для цепей маркова.
0
sasha237 #
Она родимая =)
0
sasha237 #
хммм… Ваши предложения?
0
tenshi #
предложения для решения какой проблемы?
тэгирование композиций? вычисления степени похожести? определения нот в звуковом потоке? выделения доменов? составления рекомендаций? создания автоматического генератора музыки?…
+1
sasha237 #
Неизвестная мелодия — тэгирование исключается.
Вычисление степени похожести, определение нот в звуковом ряде и выделение доменов. Методов достаточно большое количество. Можно несколько изменить алгоритм и учитывать последовательности не из двух нот, а из нескольких, а потом выявление наиболее частых — домены и учитывание истории.
Не совсем понял про рекомендации и автоматический генератор музыки.
Как бы я предлагал поиск, а с рекомендациями и генерацией, это интересно, надо подумать. =)
+1
aulismedia #
С точки зрения широкого пользователя есть пара идеальных применений аудиофингерпринта. Во-первых, скачал совершенно неизвестный трек без тэгов, натравил на него программу, и она автоматически определила что это за песня. Второе примение: слышишь по радио какую-то песню, нажимаешь на кнопку, музыка распознаётся и ты получаешь информацию о ней. Альтернатива: подсунуть программе фрагмент в несколько секунд песни в каком угодно качестве (мало ли, записал на сотовый телефон неизвестную песню, проходя мимо открытого окна машины), а тебе информация о ней в ответ.

Теоретических вариантов решения данных задач немало, но пока все они находятся в такой стадии, что для работы с ними нужен как минимум пользователь хабра. Простых однокнопочных (или вообще бескнопочных) решений как не было, так и нет. А мы знаем, что настоящая популярность к подобному сервису приходит только тогда, когда пользователь должен совершать минимум действий, пример — Last.FM. Кроме того, в любом случае для этих процессов требуются нехилые вычислительные мощности и совершенно гигантская база данных фактически всей музыки в мире. Не просто порядок треков и длинами, как у CDDB, а именно аудиоданные.
НЛО прилетело и опубликовало эту надпись здесь
0
theRavel #
P.S.Если кому интересно – картинках Бетховен
на картинках ;)
0
sasha237 #
Спасибо, исправил.
+1
RinLis #
А можно для особо одарённых объяснить, почему на первом графике, где по оси Х идёт порядковый номер ноты, стоит i от 0 до 40. Нот всего 7 ещё бемоль, диез для нот… неужели всего 40 наберётся? Вот не могу понять. Объясните, пожалуйста!
+1
sasha237 #
Там взято несколько октав. То есть отдельно для первой октавы 12 нот (7 основных+5 диезов), для второй и так далее. Естественно весь звуковой ряд оформить трудновато… Хотя идея использовать всего 12 нот достаточно интересная. Кстати можно расширить и брать частоту перехода между тремя нотами (будет уже трехмерный график) или даже больше.
+1
RinLis #
Спасибо за объяснение, причём, очень быстрое. Думаю, переход, между 4-мя нотами отобразить не получится :) Если, конечно, вы видите 4-х мерное пространство, то всё возможно :)
Ex3NDR тоже спасибо, всем же ответить не получится, сами понимаете :)
+1
Ex3NDR #
Во-первых в октаве 12 нот=) бемоли — это те же ноты=)
Во-вторых октав шеть наберется, но, к примеру, совсем низкие ноты не используются, совсем высокие — тоже, да и основная мелодия, как правило в двух-трех октавах укладывается=)
0
Enlightened #
Мало кто способен спеть мелодию, которая в две октавы не укладывается;)
+4
Loctos #
Я ничего не понял, но раз народ оживился значит проблема актуальна =)
0
paul7 #
Транспонировать из минора в мажор — это сильно придумано.
0
sasha237 #
Поправил, хотя могу выкрутиться — переводим в параллельную мажорную тональность, а затем в до мажор. Но это уже экзотика, и не факт, что сработает для всех.
+1
paul7 #
Сработать-то сработает, но это будет другая мелодия.
+1
sasha237 #
Так я же ее не слушать собрался — глядишь какой-нибудь модный хит окажется переделанным произведением Моцарта.
Как там в бородатом анекдоте про профессора консерватрии.

Профессор консерватории говорит своему студенту: «Когда будете писать дипломный проект, возьмите произведение классика и запишите его задом-наперед». Ну студенттак и сделал с дипломной работай профессора. Получился Чайковский. =)
+1
paul7 #
Ну так интервалы-то поплывут, и следующий шаг будет бесполезен.
Или надо работать не с интервалами, а с номерами ступеней.
0
sasha237 #
Как сказал, DarkPhoenix, будем пилить напильником — может и транспонировать вообще не надо. Слишком оптимизировать тоже плохо.
НЛО прилетело и опубликовало эту надпись здесь
0
sasha237 #
Эй, а никто и не говорит, что она плохая, я просто предложил еще один вариант. Вон tenshi меня ща критикует — мне приходится изворачиваться и дорабатывать. В итоге либо будет, что-нить интересное, либо ничего не будет. =)
НЛО прилетело и опубликовало эту надпись здесь
0
sasha237 #
Пасиб. =)
+4
spleaner #
Хм, я один подумал, что в этом топике расскажут про еще один способ систематизации своей муз. библиотеки? :)
0
ajaxtelamonid #
Забавно, но все-таки надуманно.
+2
fleshy #
Было бы здорово иметь возможность найти песню неизвестного исполнителя (например услышанную по радио), напев ее. Правда не уверен что это возможно даже с описанным алгоритмом, да и точность высокая не получится скорее всего
0
diomas #
midomi.com был задуман изначально для этого, и у меня иногда даже получалось что-то находить, насвистев. Но, когда юзеры туда начали постить мелодии вместе с аккомпанементом, весь поиск, естесственно, ухудшился в разы. Тем не менее, иногда это может помочь.

Есть еще вариант: www.musipedia.org/query_by_humming.html но там результаты как-то вообще не радуют
–5
schoolptor #
А еще можно побитово файлики сравнивать. :)
0
GodenDo #
по графику перехода трудно будет идентифицировать,
это то же самое что пытаться сравнивать тексты по графику перехода между буквами, т.е вы скорей изучаете свойства самого языка (в данном случае музыки).
+1
afi #
пожалуйста, замените в тексте «мелодию, на столько, на сколько это возможно.» на «мелодию, насколько это возможно.»
0
sasha237 #
Поправил, спасибо.
+1
hmage #
www.shazam.com — наводишь мобильник на то что слышишь и узнаешь название композиции.

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