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

StackOverflow https://stackoverflow.com/questions/180858

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top