Процедурные методы генерации музыки

Я долго размышлял о процедурной генерации контента, и я никогда не видел много экспериментов с процедурной музыкой. У нас есть фантастические приемы для создания моделей, анимаций, текстур, но музыка по-прежнему является либо полностью статичной, либо просто слоистой петлей (например, Spore).

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

Ответ 2

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

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

  • Для генерации мелодии попробуйте указать номера заметок для клавиш (например, если ключ C минор, C будет 0, D будет 1, D # будет 2 и так далее)
  • Для генерации гармонии попробуйте комбинацию ключевых номеров заметок для корня аккорда, типа аккорда (основного, младшего, уменьшенного, увеличенного и т.д.) и инверсии аккорда (корень, первый или второй)

Нейронные сети хорошо подходят для прогнозирования временных рядов (прогнозирование), что означает, что они одинаково подходят для "предсказания" музыкальной последовательности при обучении против существующих популярных мелодий/гармоний. Конечный результат будет аналогичен результату цепного подхода Маркова. Я не могу придумать какой-либо выгоды по сравнению с цехом Маркова, кроме уменьшения объема памяти.

В дополнение к тангажу вам потребуется длительность, чтобы определить ритм сгенерированных заметок или аккордов. Вы можете включить эту информацию в состояния цепи Маркова или выходы нейронной сети, или вы можете сгенерировать ее отдельно и объединить независимые последовательности шагов и продолжительности.

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

Экспертная система может использоваться для проверки последовательностей, сгенерированных другими методами. База знаний для такой системы валидации, вероятно, может быть снята с любой хорошей книги или веб-сайта теории музыки. Попробуйте Ricci Adams musictheory.net.

Ответ 3

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

http://www.algorithmic.net

Ответ 4

Легкий и несколько эффективный алгоритм состоит в том, чтобы использовать шум 1/f aka "розовый шум" для выбора продолжительности и заметок из шкалы. Это звучит как музыка и может быть хорошей отправной точкой.

Лучшим алгоритмом является использование "цепей марков". Сканирование некоторых примеров музыки и построение таблицы вероятностей. В простейшем случае это было бы похоже на то, что C 20% скорее всего последует A. Чтобы сделать это лучше, посмотрите на последовательность последних нескольких заметок, например "CAB" будет на 15% вероятнее всего следовать B и 4%, за которыми последует Bb и т.д. Затем просто выберите ноты, используя вероятности ранее выбранных заметок. Этот замечательно простой алгоритм генерирует довольно хорошие результаты.

Цепочки марков для генерации музыки

Ответ 6

Мое программное обеспечение использует прикладную эволюционную теорию для "роста" музыки. Этот процесс похож на программу Ричарда Докинса The Blind Watchmaker - MusiGenesis произвольно добавляет музыкальные элементы, а затем пользователь решает, сохранять или не сохранять каждый добавленный элемент. Идея состоит в том, чтобы просто сохранить то, что вам нравится, и отбросить все, что не звучит правильно, и вам не нужно иметь никакого музыкального образования, чтобы использовать его.

Интерфейс дует, но он старый - суди меня.

Ответ 7

Исследования по не-скучной процессуальной музыке покоятся. Просмотр старых и новых выпусков журнала Computer Music http://www.mitpressjournals.org/cmj (нет реального доменного имени?) У этого есть серьезные технические статьи, которые действительно используются для музыкальных синтезаторов, жуков для пайки железа, скотоводов и академических исследователей. Это пушистые обзоры и опросы, такие как несколько журналов, которые вы можете найти в крупных книжных магазинах.

Ответ 8

Мне всегда нравились старые игры Lucasarts, в которых использовалась система iMuse, которая создавала бесконечный, реактивный саундтрек к игре и была очень музыкальной (потому что большая ее часть все еще была создана композитором). Вы можете найти спецификации (включая патент) здесь: http://en.wikipedia.org/wiki/IMUSE

Nintendo, похоже, единственная компания, которая все еще использует подход, подобный iMuse, для создания или влияния музыки на лету.

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

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

Ответ 9

Вы взглянули на SoundHelix (http://www.soundhelix.com)? Это платформа Java с открытым исходным кодом для создания алгоритмической случайной музыки, которая производит довольно аккуратную музыку. Вы можете использовать SoundHelix в качестве автономного приложения, как апплет, встроенный в веб-страницу, в виде апплета на основе JNLP, или вы можете включить его в свою собственную программу Java.

Примеры, созданные с помощью SoundHelix, можно найти здесь: http://www.soundhelix.com/audio-examples

Ответ 10

Такая большая тема. Вы можете взглянуть на мое приложение для iPad, Thicket или мое программное обеспечение Ripple на morganpackard.com. По моему опыту, большинство академических подходов к созданию динамической музыки придумывают материал, который звучит, ну, академический. Я думаю, что более успешные вещи можно найти на окраинах клуба/электроники. Монолак - мой герой в этом отношении. Очень хорошо читаемый материал, очень скомпилированный компьютером. Моя собственная музыка тоже неплохая. Пол Лански "Алфавитная книга" - прекрасный пример чрезвычайно читаемой алгоритмической музыки, особенно учитывая, что он академический парень.

Ответ 11

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

Ответ 12

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

Но см. this Статья в Википедии и this Страница Metafilter.

Ответ 13

Книга Алгоритмическая композиция - это хорошая экскурсия по нескольким используемым методам:

"Рассматриваемые темы: марковские модели, генеративные грамматики, переходные сети, хаос и автомодельность, генетические алгоритмы, клеточные автоматы, нейронные сети и искусственный интеллект".

Это хорошая отправная точка в этой широкой теме, однако она никогда не описывает подробно, как работает каждый метод. Он дает хороший обзор каждого, но этого недостаточно, если у вас еще нет знаний о них.

Ответ 14

Еще в конце 90-х Microsoft создала элемент управления ActiveX под названием "Интерактивный музыкальный контроль", который сделал то, что вы ищете. К сожалению, они, похоже, отказались от проекта.

Ответ 16

Если вы вникаете в более глубокие теории о том, как музыка висит вместе, сайт Билла Сетареса имеет интересные повороты.

Ответ 17

Я смотрел на это проектное предложение - "8.1" из исследовательской группы "Теория и практика в языке программирования" из Университета Копенгагена - отдел CS:

8.1 Автоматизированный сбор урожая и статистический анализ Music Corpora

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

Традиционные автоматизированный анализ музыки едва ли обрабатывал ноты, но сфокусировал анализа сигналов и использования методы машинного обучения для извлечения и классифицировать внутри, скажем, настроение или жанр. Напротив, начальные исследования в DIKU ставится задача автоматизировать части анализ ноты. Добавленный значение - потенциал для извлечения информация из больших объемов ноты, которые нелегко сделать от руки и не может быть значимо анализируется машинным обучением методы.

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

Ответ 18

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

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

Дело в том, что процесс музыкальной композиции заполнен столь многими идиоматическими практиками, что их очень сложно моделировать без особых знаний о поле.

Ответ 19

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

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

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