Как проанализировать музыкальный поток

sobol_polo

Стоит задача проанализировать музыкальный поток. Раз в 100 мс поступает сообщение об амплитуде различных частот, нужно выделить из него три составляющих ( теория ):
1) ритм
2) соло
3) мелодию
Может, кто-нибудь сталкивался с подобными задачами?
Я могу себе представить, как выделить ритм - нужно просмотреть все диапазоны частот за промежуток времени (скажем, 10 секунд) и найти тот, который через определенный промежуток времени имеет ярко выраженные максимумы. Или нет?
Соло - выделить, наверное, несколько частот у которых значительная амплитуда и близкие изменения амплитуды, так? Или что-то другое?
Как выделять мелодию, вообще не понимаю.
В общем, помогите, люди добрые, кто чем может...

otlichnica

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

sobol_polo

Ну по ссылке эту задачу как-то решили.
Потом, решать надо не аппаратно, а программно.

otlichnica

да нет конечно, там написали общие слова про светомузыку
или ты вот это "Хочу предупредить – это только начальная концепция построения АСМУ, в процессе построения, она может быть многократно пересмотрена. Желающих присоединиться к проекту пишите на почту сайта" называешь решением? :)
ну, от программного до аппаратного решения один шаг
я говорю про то, что считать амплитуду и раскладывать в ряд Фурье умеют уже давно, но это не связано с чисто музыкальными понятиями

sobol_polo

У них есть на сайте видео готовых решений: web page
Про ряды Фурье расскажи, плиз, поподробнее. Чем они помогут в данном случае?

otlichnica

если у тебя с частотой 10 Гц есть информация об амплитуде различных частот, значит, она уже получена из музыки с помощью преобразования Фурье
дальше этот спектр можно использовать для создания светомузыки самыми разными способами; но связать его с чисто музыкальными понятиями нельзя, просто потому, что музыкальные понятия не определены
вот тебе пример
http://www.youtube.com/watch?v=0NE9iYSGRNI
сможешь в нем разделить "ритм", "мелодию" и "соло"? их просто нет

sobol_polo

Спасибо большое, ознакомлюсь!

maksim23

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

maksim23

Собственно, вот:
http://habrahabr.ru/company/yandex/blog/181219/ "Как Яндекс распознаёт музыку с микрофона". Может быть всё это есть в верхней ссылке... Скорее всего натолкнёт на мысли.
2) Вот тебе замечательная идея: http://habrahabr.ru/post/69985/
По музыке ищешь название, затем ищешь соответствующую midi-шку, и в ней уже всё есть, только синхронизировать.

sobol_polo

Спасибо тебе большое! Завтра будет время - прочитаю.

Arthur8

никак не найти, бывает ритм лучше чем сама мелодия. вон негры в африке 5000 лет под барабаны плясали так и весь мир пляшет до сих пор под всякий рейв и прочее

avg1035210

Стоит задача проанализировать музыкальный поток. Раз в 100 мс поступает сообщение об амплитуде различных частот, нужно выделить из него три составляющих ( теория ):
1) ритм
2) соло
3) мелодию
Может, кто-нибудь сталкивался с подобными задачами?
Я могу себе представить, как выделить ритм - нужно просмотреть все диапазоны частот за промежуток времени (скажем, 10 секунд) и найти тот, который через определенный промежуток времени имеет ярко выраженные максимумы. Или нет?
Соло - выделить, наверное, несколько частот у которых значительная амплитуда и близкие изменения амплитуды, так? Или что-то другое?
Как выделять мелодию, вообще не понимаю.
В общем, помогите, люди добрые, кто чем может...

sobol_polo

Ну у него готовая программа, а мне нужно написать алгоритм.
И файлы у меня не обязательно (и скорее всего не) midi, а всякие wav и mp3

avg1035210

так у него не миди и может конвертить во что угодно)

sobol_polo

Мне не нужна программа. Мне нужно написать алгоритм обработки звукового потока для создания светомузыки. Существующая программа мне никак не поможет.

antcatt77

Раз в 100 мс поступает сообщение об амплитуде различных частот
В виде набора конкретных чисел как это будет выглядеть?
1. (классический программный подход) На вход подается набор чисел задающие амплитуду одного звукового канала с дискретизацией 44kHz за последние 100мс. В явном виде здесь нет никаких амплитуд частот. Они выделяются позже с помощью фурье-преобразования.
2. Подается набор усредненных (за 100мс) амплитуд. Некое внешнее устройство за 100мс получило звук, разложило его на фурье, посчитало среднее по каждой частоте, и подало на вход этот усредненный набор.
3. Подается набор амплитуд частот в текущей временной точке (например, за 1мс). Некое внешнее устройство просыпается раз в 100мс, получает звук за 1мс, раскладывает его на фурье и передает полученный набор на вход
Во втором и третьем случае теряется порядка 99,9% исходной информации о звуке, что делает задачу выделения ритма, соло и мелодии затруднительной.

stm7543347

http://habrahabr.ru/company/yandex/blog
Mein Gott! :aaa:

stm7535571

Это довольно сложная задача, просто её сделать не получится. Лучше использовать существующие библиотеки для анализа музыки с открытым исходным кодом, например Marsyas:
http://marsyas.info
Например, вот тут робот анализирует ритм (onset detection) и танцует под музыку:



http://marsyasweb.appspot.com/assets/docs/manual/marsyas-use...

marina355

Мне нужно написать алгоритм обработки звукового потока для создания светомузыки.
а зачем? и нужно именно чтобы ты написала, или можешь поручить?

sobol_polo

Круууто! Осилить бы. Я с основами GSTreamer разбиралась чуть ли не месяц. :o

stm7535571

Ну всегда можно спросить, если что не понятно.
Оставить комментарий
Имя или ник:
Комментарий: