Как стать автором
Обновить

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

А насколько точна Ваша реализация перехода к нотам? Что происходит, если звучит аккорд? Если две соседних ноты наслаиваются друг на друга?
лгоритм просматривает карту нот(список частот, к которым принадлежит нота) и также смотрит амплитуды звучания «кандидата в ноты», если его амплитуда меньше тех, частот, которые появятся на аккорде, то я считаю, что это нота, в противном случае аккорд — это нота.
Не совсем понятно… А можете какой-нибудь файл прогнать через свой алгоритм и показать выход?
Могу прогнать, но в след. раз, пока эта штука медленно работает. Объясняю: когда звучит нота, помимо нее звучит еще куча частот, они как правило кратные.
Вот я и ориентируюсь среди кратных нот и их амплитуд. У кратных звуков(они как правило не ноты) амплитуда, как правило, выше.
Естественно, алгоритм иногда промахивается, но на точность поиска это не влияет.
То есть, идёт выделение основного тона среди обертонов по амплитуде? А если звучит аккорд, то что происходит?
да, аккорд проглатываем — он дает ошибку или не дает
Она и будет медленно работать, до тех пор, пока скорость поиска o(n) от количества файлов. Нужна индексация, как тут laplacian.wordpress.com/2009/01/10/how-shazam-works/ и после первоначального отсеивания можно уже делать более точное сравнение
Алгоритм просматривает карту нот(список частот, к которым принадлежит нота) и также смотрит амплитуды звучания «кандидата в ноты», если его амплитуда меньше тех, частот, которые появятся на аккорде, то я считаю, что это нота, в противном случае аккорд — это нота.
Сделали бы скелетон от вейвлет-преобразования и искали бы свой фрагмент по нему, всяко интереснее будет чем фурье-преобразование.
Есть с вейвлетами, опубликую позже.
Скажу, что с вейвлетами похуже будет, ибо они не совсем предназначены для музыкальных звуков.
Вот уж никогда бы не подумал, что будет хуже.
Вельветы хуже аппроксимируют звуки гармонической природы, как то музыка.
Они больше для аппроксимаций всяких там взрывных волн походят.
С этим согласен, но это несколько нивелируется подбором материнского вейвлета. В любом случае, жду продолжения, интересно, к чему приведут ваши изыскания.
Чем интереснее?
Я полагаю тем, что всякие нелинейности будут лучше учтены. А так, визуализация может быть красивой, чем и интереснее.
«Полагаете» и «может быть» — то есть практического опыта (или хотя бы ссылки на таковой) нет? Но пишете "всяко интереснее будет".
Есть практический опыт в совершенно другой области — обработке биологических сигналов.
Возникает вопрос: а как работает, к примеру, SoundHound? Как работает Gracenote?
Это, конечно, несколько разные сервисы, но, если сравнить ваш алгоритм с тем же SoundHound — в чем отличия/преимущества/минусы?
есть отрывок музыкального произведения, есть база музыкальных произведений

А что из себя представляет эта база? Очевидно, оценить преимущество вашего алгоритма поиска на некоей абстрактной базе не выйдет.
читайте под харбокатом
Читайте под карбонатом))

А вообще, про вейвлеты было бы намного интересней почитать, не только в плане поиска мелодий, а в принципе, что это и с чем едят, на пальцах, наглядно, а то про них вообще ничего интересного и внятного практически нет, кроме бесполезных для ознакомительных целей нагромождений математических выкладок, и даже те кто обещал не пишут… :C
Угадай мелодию?
Чтобы человек узнал мелодию, достаточно информации об относительной высоте соседних нот: вторая нота выше, ниже, или равна по высоте первой. Таким образом, любой музыкальный отрывок, имеющий мелодию (разумеется, произведения типа 4′33″ в данной схеме рассматривать бессмысленно), можно закодировать в виде строки с алфавитом из 3 символов: '>', '<' и '='. Поиск сводится к нахождению подстроки в строке.

P.S. А как Ваш алгоритм справится с поиском отрывка из 4′33″, если анализируемый отрывок и запись в базе сделаны разными пианистами?
Вообще тут с человеком проблема целая есть и она заключается в том, что не все люди могут воспроизвести услышанную мелодию.
Зато человек ритм воспроизводит хорошо, но это уже другая история…
Если ритм рассматривать, то все песни похожи, ибо используют за основу один ритм — альфа-ритм, который кратен сердцебиению, чтобы народ на дискотеках не засыпал.
Я говорю не про ритм, а только про то, что вместо нот можно записывать только относительное изменение их высоты — и этой информации будет достаточно для поиска.

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

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

А ведь в классической музыке ритмов несравнимо больше. Думаю, ни один человек не перепутает ритмы «Танца маленьких лебедей» и первой части «Ленинградской симфонии».
Так я и использую относительные изменения но не частот, а номеров нот, т.к. разные мелодии с разных частот, имеют нелинейную разницу, а если переведем в домен номеров нот, то разница будет линейна. Работать с линейными зависимостями легче.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории