2009-08-28 7 views
6

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

Как бы я начал работать в этом и есть библиотека для анализа звуковых волн?

Я знаю C, C++, Java, Python, некоторые сборки и некоторые Perl.

Связанный вопрос:Algorithm for music imitation

ответ

9

Состав и анализ музыки компьютером - огромное поле. В этом типе работы есть две основные области, которые несколько накладываются друг на друга.

  • Algorithmic composition связана с поколения музыки. Это может быть основано на статистических подходах, таких как Markov chaining, математических моделях с использованием fractal или chaotic процессов или способов использования от AI, таких как expert systems, neural networks и genetic algorithms.
  • Music information retrieval связан с определением общих грамматик, общих черт и признаков сходства между музыкальными произведениями и идентификацией уникальности (иногда называемой acoustic fingerprinting).

Многие, многие libraries, tools и специализированные programming languages существуют, которые могут помочь с различными частями этих проблем. Вот список связанных с музыкой programs and libraries for Python. Существует много технологий; вы должны найти что-то, что сделает для вас всю тяжесть работы. Повторное выполнение «музыкального парсера» с помощью очень низкоуровневых инструментов анализа частоты, таких как Fourier Transforms, поскольку другие ответы предложили, хотя это возможно, будут довольно сложными и почти наверняка не нужны.

Для получения дополнительных консультаций и конкретных вопросов у International Society for Music Information Retrieval есть список рассылки, который вы, вероятно, найдете очень полезным.

+0

Спасибо! Еще вопросы. Можно ли написать программу, которая транскрибирует музыку для вас? – Mylo

+0

Это довольно сложно. Я знаю, что Янн ЛеКун и его компания MuseAmi работают над этим http://www.nytimes.com/2010/08/21/arts/music/21taub.html. – Frank

0

Вы можете, как начать смотреть на формате MIDI, это разумно простой по сравнению с сжатыми форматами, и вы можете создать некоторые интересные вещи в нем.

Зависит от того, что вы хотите сделать действительно.

+0

Я хочу проанализировать поп-песни и посмотреть, есть ли общие черты между популярными. Это, вероятно, было сделано, но для меня это больше упражнение по программированию. – Mylo

+0

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

+2

Да - 3 аккорда;) E, Am и Dm. Это все, что вам нужно для 90% песен поп-музыки. Добавьте C и G, и вы только что накрыли 5% больше – DmitryK

3

Для анализа звуковых волн вам нужно какое-то преобразование Фурье (fft), чтобы вы могли разделить песню на ее частоты и как они меняются со временем. Существует поддержка fft в numpy, я не использовал ее, поэтому я не знаю, хорошо ли это. Но это было бы прекрасное место для начала.

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

Прохладный материал, хотя, иди за ним!

6

Как только вы пройдете мимо материала БПФ, о котором упоминал Леннарт, вам может понадобиться взглянуть на цепи Маркова для анализа интервалов между нотами и агрегированных паттернов.

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

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

С другой стороны, вы можете подумать о том, что это не качество музыки, которое делает песню популярной. Или, возможно, это качество музыки в сочетании с маркетингом.

+0

Да, вы никогда не сделаете такие хиты. Для этого вам нужно понять, почему крючок - это крючок, и статистический анализ песен вряд ли поможет в этом, так как крючки могут быть настолько разными. Но это еще забавный проект. –

Смежные вопросы