2009-07-24 3 views
5

Меня интересует автоматическое создание музыки. Я думал о программе, для которой большое количество арпеджиоров с 1 баром (= последовательности фиксированных длин заметок, для простоты) и генерирует свои собственные последовательности, основываясь на том, что он узнал.Алгоритм имитации музыки?

Для начала я знаю, что могу использовать букву (digram? Trigram?) frequency analysis, применяемую только к нотам заметок, а затем генерировать мою последовательность, основанную на частотных вероятностях.

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

ответ

6

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

http://en.wikipedia.org/wiki/Algorithmic_composition

+0

Различные фрактальные и сортировочные алгоритмы имеют тенденцию звучать музыкально. – Quickredfox

2

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

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

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

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

Вот что уточнил мой сын. Он генерирует последовательность из 48 музыкальных событий, в которых кусок построен.

#!/usr/bin/env python 
""" 
there are 8, 3-note sets. 
each one can occur on 3 different beats. 
each pitch of the 3 note set can be in one of 3 octaves and it can either be a harmonic or a fingered note. 
""" 
import random 

noteSetChoices = [ "C-E-G", "C-F-A", "C-E-A", "D-F-A", "D-F-B", "D-G-B", "E-G-B", "F-A-C" ] 
beatChoices= [ "1 - - -", "- 2 - -", "- - - 4" ] 
octaveChoices= [ 1, 2, 3 ] 
techniqueChoices= [ 'Fingered', 'Harmonic' ] 

for n in range(48): 
    note= random.choice(noteSetChoices) 
    beat= random.choice(beatChoices) 
    octave= random.choice(octaveChoices) 
    technique= random.choice(techniqueChoices) 
    print octave, note, technique, beat 
+0

Как музыка на Spore? Я уверен, что музыка создается автоматически. –

+0

Mmmmh, это означает, что вы уже знаете жанровые каноны, и вы не извлекаете их из других песен. – janesconference

+0

@janesconference: На самом деле я не знаю, как сидеть на корточках. Я басист, поэтому я понимаю немного; мой сын - композитор. –

4

Будучи сам музыкантом и Software Engineering майор, я htink я могу пролить некоторый свет прохладный здесь: P Я сделал много работы по этому вопросу сам и планируют сделать что-то большое, основанное вокруг это в будущем.

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

Проблема с решением (hah) заключается в том, что это не только объективно, но и решение полностью открыто. С алгоритмом сортировки у вас есть только один способ сортировки списка. С музыкальной композицией у вас есть миллионы приятных песен/whatevr, ваша цель.

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

Вам необходимо сломать композицию на части - иметь GA для мелодии, GA для ритма, GA для структуры и т. Д. И сконструировать свою функцию фитнеса в соответствии с вашими потребностями.

Конечно, это только одно решение проблемы; есть много, и ссылка на wikipedia, перечисленная выше, - отличный старт.

Я рекомендую проверить: Дженджам: импровизационный джаз генетический алгоритм предназначен для торговли solos- http://www.it.rit.edu/~jab/GenJam.html

И эта книга очень поучительно: http://www.springer.com/computer/information+systems/book/978-1-84628-599-8

Я полагаю, еще один интересный способ будет с невральной сетей .... но предоставление им наборов будет немного проблемой, вероятно .... это намного больше работы.

В любом случае, удачи в ваших предприятиях: P

+0

Кроме того, изучение музыкальной композиции и гармонии будет иметь большое значение для разработки фитнес-функций: D – RyanCacophony

0

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

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

1

Хотя это, как правило, предназначено для работы с более длинными последовательностями, чем с одним баром, цепочки Markov - это простой, эффективный способ генерации музыки, подобной ее входному сигналу. Пример, написанный на Python с использованием RTcmix для генерации аудио, см. В моей реализации here.

Он основан на главе цепочки Маркова от Примечания от Metalevel, отличный текст по алгоритмической композиции.