Некоторое время я много думал о процедурной генерации контента и никогда не видел особых экспериментов с процедурной музыкой. У нас есть фантастические методы создания моделей, анимации, текстур, но музыка по-прежнему либо полностью статична, либо просто многослойные циклы (например, Spore).
Из-за этого я придумывал оптимальные методы создания музыки, и мне любопытно, что думают другие люди. Даже если вы раньше не задумывались об этом, что, по вашему мнению, подойдет? Одна техника на ответ, пожалуйста, и по возможности включите примеры. Техника может использовать существующие данные или генерировать музыку полностью с нуля, возможно, на каком-то входе (настроение, скорость, что угодно).
procedural
generative
Серафина Бросиус
источник
источник
Ответы:
Клеточные автоматы - читайте .
Вы также можете попробовать это здесь .
Редактировать:
rakkarage предоставил еще один ресурс: http://www.ibm.com/developerworks/java/library/j-camusic/
источник
Наиболее успешная система, вероятно, будет сочетать несколько методов. Я сомневаюсь, что вы найдете одну технику, которая хорошо работает для генерации мелодии, гармонии, ритма и басовой последовательности во всех жанрах музыки.
Марковские цепи , например, хорошо подходят для генерации мелодических и гармонических последовательностей. Этот метод требует анализа существующих песен для построения вероятностей цепного перехода. Настоящая красота цепей Маркова в том, что состояния могут быть любыми, какими вы хотите.
Нейронные сети хорошо подходят для предсказания временных рядов (прогнозирования), что означает, что они в равной степени подходят для «предсказания» музыкальной последовательности при обучении на основе существующих популярных мелодий / гармоний. Конечный результат будет аналогичен подходу с цепью Маркова. Я не могу придумать никаких преимуществ по сравнению с подходом с цепями Маркова, кроме уменьшения объема памяти.
Помимо высоты звука вам понадобится длительность, чтобы определить ритм генерируемых нот или аккордов. Вы можете включить эту информацию в состояния цепи Маркова или выходные данные нейронной сети, или вы можете сгенерировать ее отдельно и объединить независимые последовательности шагов и продолжительности.
Генетические алгоритмы могут использоваться для развития ритм-секций. Простая модель может использовать двоичную хромосому, в которой первые 32 бита представляют паттерн бочки, вторые 32 бита - малый барабан, третьи 32 бита - закрытый хай-хет и так далее. Обратной стороной в этом случае является то, что они требуют постоянной обратной связи от человека для оценки соответствия вновь возникших паттернов.
Экспертная система может быть использована для проверки последовательностей , генерируемых другими методами. База знаний для такой системы проверки, вероятно, может быть взята из любой хорошей книги или веб-сайта по теории музыки. Попробуйте сайт musictheory.net Риччи Адамса .
источник
Существует более 50 лет исследований этих методов, которые часто упускаются из виду разработчиками, не знакомыми с историей компьютерной музыки и алгоритмической композиции. Здесь можно найти множество примеров систем и исследований, направленных на решение этих проблем:
http://www.algorithmic.net
источник
Простой и в некоторой степени эффективный алгоритм - использовать шум 1 / f, также известный как «розовый шум», для выбора длительности и нот из гаммы. Это звучит как музыка и может быть хорошей отправной точкой.
Лучшим алгоритмом является использование "цепей Маркова" ... отсканируйте какой-нибудь музыкальный пример и составьте таблицу вероятностей. В простейшем случае это будет что-то вроде того, что C с вероятностью 20% будет следовать за A. Чтобы это было лучше, посмотрите на последовательность последних нескольких нот, например, за CA 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
источник
Исследования нескучной процедурной генерации музыки уходят корнями в прошлое. Просмотрите старые и новые выпуски Computer Music Journal http://www.mitpressjournals.org/cmj (нет настоящего доменного имени?). В нем есть серьезные технические статьи, которые могут быть полезны мастерам синтеза музыки, жокеям-паяльникам, пастухам и академическим исследователям. Это не пушистая тряпка для обзоров и интервью, такая как несколько журналов, которые вы можете найти в крупных книжных магазинах.
источник
Такая большая тема. Вы можете взглянуть на мое приложение для iPad, Thicket или мою программу Ripple на сайте morganpackard.com. По моему опыту, большинство академических подходов к созданию динамической музыки основано на вещах, которые звучат, ну, академично. Я думаю, что более успешные вещи можно найти на периферии мира клубов и электроники. В этом плане Монолаке - мой герой. Очень приятный для прослушивания материал, в значительной степени созданный компьютером. Моя собственная музыка тоже неплоха. «Алфавитная книга» Пола Лански - прекрасный пример чрезвычайно удобной для прослушивания алгоритмической музыки, особенно с учетом того, что он ученый.
источник
Техника, которую я рассматривал, заключается в создании небольших музыкальных паттернов, вплоть до такта или около того. Пометьте эти паттерны идентификаторами чувств, такими как «возбуждение», «интенсивность» и т. Д. Если вы хотите создать музыку для ситуации, выберите несколько паттернов на основе этих тегов и выберите инструмент, на котором вы хотите играть на нем. Основываясь на инструменте, выясните, как комбинировать паттерны (например, на пианино вы можете играть все это вместе, в зависимости от размаха рук, на гитаре вы можете играть ноты в быстрой последовательности), а затем визуализировать их в PCM . Кроме того, вы можете изменить тональность, скорость, добавить эффекты и т. Д.
источник
Конкретная техника, которую вы описываете, - это то, над чем Томас Долби работал десять или пятнадцать лет назад, хотя сейчас я не могу вспомнить, как он ее называл, поэтому не могу дать вам хороший поисковый запрос.
Но посмотрите эту статью в Википедии и эту страницу с метафильтром.
источник
Книга « Алгоритмическая композиция» представляет собой хороший обзор нескольких используемых методов:
«Обсуждаемые темы: модели Маркова, генеративные грамматики, переходные сети, хаос и самоподобие, генетические алгоритмы, клеточные автоматы, нейронные сети и искусственный интеллект».
Это хорошая отправная точка по этой широкой теме, однако в ней никогда не описывается подробно, как работает каждый метод. Он дает хороший обзор каждого из них, но его будет недостаточно, если вы еще не знаете о них.
источник
Еще в конце 90-х Microsoft создала элемент управления ActiveX под названием «Интерактивный элемент управления музыкой», который точно соответствовал вашим требованиям. К сожалению, похоже, они отказались от проекта.
источник
Не совсем то, что вам нужно, но я знал человека, который смотрел на автоматическое создание DJ-сетов под названием Content Based Music Similarity .
источник
Если вам нравятся более глубокие теории о том, как музыка взаимосвязана, на сайте Билла Сетхареса есть несколько интересных поворотов.
источник
Я искал предложения по этому проекту - «8.1 » от исследовательской группы «Теория и практика в языках программирования» из Копенгагенского университета - кафедра компьютерных наук:
На мой взгляд, это противоположное направление вашего вопроса. Я полагаю, что сгенерированные данные могут быть использованы в некоторых случаях процедурной генерации музыки.
источник
Я считаю, что генеративная музыка работает только тогда, когда она проходит тщательный отбор. Дэвид Коуп, пионер алгоритмической музыки, часами работал над музыкальным выводом своих алгоритмов (которые, я думаю, в основном основывались на цепях Маркова), чтобы выбрать несколько, которые действительно оказались удачными.
Я думаю, что этот процесс отбора можно автоматизировать, моделируя характеристики определенного музыкального стиля. Например, стиль «диско» будет давать много очков за басовую линию, в которой есть нестандартные биты и барабанные партии с малыми барабанами на бэкбитах, но вычитать очки за сильно диссонирующие гармонии.
Дело в том, что процесс сочинения музыки наполнен таким количеством идиоматических практик, что их очень сложно смоделировать без специальных знаний в этой области.
источник
Я работал над модулем Python для процедурной музыки. Я просто запрограммировал то, что знаю о нотах, гаммах и построении аккордов, а затем смог позволить ему произвольно генерировать контент из этих ограничений. Я уверен, что есть больше теории и шаблонов, которым можно было бы научить подобную систему, особенно тем, кто лучше разбирается в предмете. Затем вы можете использовать эти системы в качестве ограничений для генетических алгоритмов или генерации рандомизированного контента.
Вы можете ознакомиться с моей реализацией здесь , особенно случайным образом сгенерированный пример лида может быть вам полезен. Кто-то с твердым пониманием последовательности аккордов мог бы создать структуру песни из подобных приемов и реализовать подобные ограниченные случайные мелодии поверх нее. Мое знание теории музыки не так далеко.
Но в основном вам нужно закодировать теорию той музыки, которую вы хотите создать, а затем использовать это в качестве ограничения для некоторого алгоритма для процедурного изучения диапазона этой теории.
источник