Ищем пример кода эволюционной музыки
Я хотел бы реализовать интерактивный эволюционный алгоритм для генерации музыки (возможно, просто простые мелодии для начала).
Я хотел бы использовать JFugue для этого. Его веб-сайт утверждает, что он хорошо подходит для эволюционной музыки, но я не могу найти никаких эволюционных примеров.
У меня уже есть рамки для обеспечения эволюционного оборудования. Что я ищу, так это какой-то простой, работающий код, который демонстрирует жизнеспособные подходы для музыкальной части (например, подходящие кодировки и эволюционные операторы для эволюционирующих мелодий).
У меня есть некоторые идеи, как этого достичь, но я не особо разбираюсь в теории музыки, поэтому для начала я хотел бы просто переопределить то, что, как известно, работает.
Так есть ли у кого-нибудь или известен какой-либо свободно доступный код (любой язык в порядке), который демонстрирует один или несколько подходов к эволюционной музыке?
РЕДАКТИРОВАТЬ: Я специально ищу эволюционный код, а не другие методы, которые могут быть использованы для синтеза музыки.
3 ответа
До сих пор я нашел только это, что является примером генетического программирования на C.
Обновление (январь 2010): И эта онлайн-система, которая не имеет исходного кода, но является примером того, чего можно достичь. Я также нашел Граммидность, которая позволяет развивать последовательности событий MIDI из грамматик.
Обновление (июль 2011): я только что нашел соответствующий код Python на сайте MIT Open Courseware.
Вы, вероятно, захотите заглянуть в цепочки Маркова - они, вероятно, более полезны для вас, чем эволюционный алгоритм для начала, так как оценка качества выходных данных для выявления лучших будет кошмаром (субъективным и временным). потреблять), и они идеально подходят для объединения с эволюционным программированием.
Для них есть хорошее введение в Coding Horror. Статья объясняет концепцию и демонстрирует замечательные результаты, в комментариях упоминается музыка гораздо больше (я был потерян часами в комментариях и на сайтах, на которые они ссылались). В Википедии есть несколько более подробных деталей и дальнейшее чтение.
Цепи Маркова имеют элемент вероятности, поэтому вы можете объединить их с эволюционным программированием, развивая метод выбора альтернатив, отличных от броска костей.
Существует некоторое исследование использования Cellular Automata для создания музыки. Как и в случае со всем другим поколением музыки, на самом деле это вопрос отображения, а не поколения. Вы можете использовать почти все что угодно в качестве входных данных, пока вы определяете свое отображение так, чтобы оно звучало "хорошо" (ну, я думаю, интересное - это лучшее слово).
Погуглив "сотовую музыку автоматов", вы получите немало хитов. Другим хорошим источником информации является Computer Music Journal, если вы можете получить доступ к их архивам.