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

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

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

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

TranceTip
источник
3

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

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

Не совсем то, что вам нужно, но я знал человека, который смотрел на автоматическое создание DJ-сетов под названием Content Based Music Similarity .

Питер К.
источник
0

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

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

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

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

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

сврист
источник
0

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

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

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

Gregsabo
источник
0

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

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

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


источник