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


89

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

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


19
Наконец, вопрос о музыке о программировании / создании / создании музыки! : D
Oddmund

Ответы:


28

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

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

Редактировать:

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


1
Вольфрам такой умный! Отличная работа, чтобы сделать такие вещи такими доступными ...
defmeta

Мне не удалось заставить его работать на моем компьютере с Ubuntu. :(
Calmarius


Проблема в том, что он находится в ловушке 12-тональной системы. Настоящий алгоритм генерации музыки превосходит обычные инструменты и имеет свободный контроль гармонического тона. Фортепиано было разработано с особой тональной системой, которая в свое время считалась стандартом. И все же 12-тональная система была блестящей для своего времени.
Тимоти Свон

42

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

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

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

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

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

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

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


10

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

http://www.algorithmic.net


7

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

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

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



4

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

Интерфейс дует, но он старый - подайте в суд.


4

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

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

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

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


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

@RCIX: Вы когда-нибудь играли в игры с системой iMuse? Он реагирует на множество вещей, очень тонких или очевидных, в зависимости от требований, но он использует музыку, написанную композитором-человеком. Он не генерирует совершенно новую, никогда ранее не слышанную музыку, но он отлично справляется с переходами между репликами, он может изменять аранжировки (вводить новые инструменты, смешивать другие), он может ускоряться или замедляться, и все это без потери доли . Это очень далеко от «одних и тех же 5 замечательных треков снова и снова». Я бы назвал это «одним непрерывным потоком музыки, сформированным в соответствии с настроением игры в настоящий момент».
Galghamon

3

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

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


3

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


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

2

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


1
Также ознакомьтесь с сообществами, которые используют инструменты, которые музыканты используют для создания материала - Pure Data, SuperCollider, Max. Я бы начал с поиска музыканта, чья работа вам нравится, и работать в обратном направлении, вместо того, чтобы начинать с поиска концептуально интересных техник.
morgancodes

1

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


1

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

Но посмотрите эту статью в Википедии и эту страницу с метафильтром.


1
Вы думаете о "генеративной музыке" и о программе "Коан".
MusiGenesis

1

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

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

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


0

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


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

Проект Wolfram Tones, на который ссылается @thekidder выше, замечательно успешен в том, что он не дует. Я ожидал обычного rnd noodling ...
defmeta



0

Я искал предложения по этому проекту - «8.1 » от исследовательской группы «Теория и практика в языках программирования» из Копенгагенского университета - кафедра компьютерных наук:

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

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

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

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


0

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

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

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


0

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.