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

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

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

19 ответов


Клеточные Автоматы - читать.

вы также можете попробовать здесь.

Edit:

rakkarage предоставил другой ресурс:http://www.ibm.com/developerworks/java/library/j-camusic/


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

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

  • для генерации мелодии попробуйте key-relative note numbers (например, если ключ c minor, C будет 0, D будет 1, D# будет 2 и так далее)
  • для генерации гармонии попробуйте комбинацию ключевых относительных номеров нот для корня аккорда, типа аккорда (major, minor, redimined, augmented и т. д.) и инверсия аккорда (корень, первый или второй)

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

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

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

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


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

http://www.algorithmic.net


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

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

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


У Дмитрия Тимочко есть несколько интересных идей и примеров здесь:

http://music.princeton.edu / ~dmitri/whatmakesmusicsoundgood.html


программное обеспечение использует прикладную эволюционную теорию для "роста" музыки. Процесс похож на Richard Dawkins'Слепой Часовщик программа-MusiGenesis добавляет музыкальные элементы случайным образом, а затем пользователь решает, следует ли сохранить каждый добавленный элемент. Идея в том, чтобы просто сохранить то, что вам нравится, и выбросить все, что не звучит правильно, и вам не нужно никакой музыкальной подготовки, чтобы использовать его.

интерфейс дует, но это старый-Сью мне.


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

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

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

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


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

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


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


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


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


но вижу этой статьи в Википедии и этой Metafilter страницы.


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

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

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


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


Не совсем то, что вам нужно, но я знал кого-то, кто смотрел на автоматическое создание DJ-сетов под названием Контент На Основе Музыки Подобие.


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


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

8.1 автоматизированный сбор урожая и статистический анализ музыкальных корпусов

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

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

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


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

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

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


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

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

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