2009-07-24 6 views
5

자동 음악 제작에 관심이 있습니다. 나는 많은 수의 1-bar arpeggios (간단하게하기 위해 고정 길이의 음표 시퀀스)가 공급되는 프로그램을 생각하고 배운 내용을 기반으로 자체 시퀀스를 생성했습니다.음악 모방을위한 알고리즘?

먼저, 음표에 적용된 문자 (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

음, 이것은 이미 장르 캐논을 알고 있으며 다른 노래에서 추출하지 않았 음을 의미합니다. – janesconference

+0

@ janesconference : 저는 쪼그리고 앉는 사람을 모릅니다. 나는베이스 연주자이기 때문에 조금 이해합니다. 내 아들은 작곡가 야. –

4

, 내가 여기에 몇 가지 멋진 조명을 흘릴 수 htink : P 나는 큰 기반으로 뭔가를 만드는 주제에 자신과 계획을 많은 일을했습니다 이 미래에.

알고리즘을 작성할 때 문제는 정렬 된 목록을 갖는 문제를 해결할 때 예를 들어 해결 방법을 찾는 것입니다. 알고리즘 음악 구성에서 솔루션은 (보통) 노래 나 멜로디가 기쁘거나 구조가있는 것입니다.

문제의 해결책은 객관적이지만 해결책은 아닙니다. 엄청나게 끝났다. 정렬 알고리즘을 사용하면 목록을 정렬하는 방법은 하나뿐입니다. 음악 작곡으로 당신은 수백만 가지의 즐거운 노래/당신의 목표를 가지고 있습니다.

따라서 정확한 솔루션을 찾지 못하는 알고리즘은 필요하지만 최적의 솔루션은 필요합니다. 내 제안은 유전 알고리즘 또는 유사합니다. 유전 알고리즘은 다양한 최적 솔루션 풀을 생성 할 수 있기 때문에 훌륭합니다.

멜로디를위한 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

일반적으로 마르코프 체인은 한 마디보다 긴 시퀀스에서 작동하기위한 것이지만 입력과 비슷한 음악을 생성하는 간단하고 효과적인 방법입니다. 오디오 생성을 위해 RTcmix를 사용하여 파이썬으로 작성된 예제는 내 구현 here을 참조하십시오.

이것은 Markov 체인 챕터 에 기반합니다. 알고리즘 구성에 관한 훌륭한 텍스트 인 Metalevel의 참고 사항.