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


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

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

19 89

19 ответов:

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

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

Edit:

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

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

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

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

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

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

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

An экспертная система может использоваться для проверки последовательностей, генерируемых другими методами. База знаний для такой системы проверки, вероятно, может быть поднята из любой хорошей книги по теории музыки или веб-сайта. Попробуйте Риччи Адамса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

программное обеспечение использует прикладную эволюционную теорию для "выращивания" музыки. Процесс похож на Ричарда Докинза Слепой Часовщик программа-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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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