절차 적 음악 생성 기술 [닫기]


89

나는 한동안 절차 적 콘텐츠 생성에 많은 생각을했고 절차 적 음악에 대한 많은 실험을 본 적이 없습니다. 우리는 모델, 애니메이션, 텍스처를 생성하는 환상적인 기술을 가지고 있지만 음악은 여전히 ​​완전히 정적이거나 단순한 레이어 루프 (예 : Spore)입니다.

그래서 최적의 음악 생성 기법을 고민 해왔고, 다른 사람들이 무엇을 염두에두고 있는지 궁금합니다. 이전에 고려하지 않았더라도 무엇이 잘 작동 할 것이라고 생각하십니까? 답변 당 하나의 기술을 사용하고 가능한 경우 예제를 포함하십시오. 이 기술은 기존 데이터를 사용하거나 아마도 일종의 입력 (분위기, 속도 등)으로 처음부터 음악을 완전히 생성 할 수 있습니다.


19
마지막으로 실제로 음악 프로그래밍 / 제작 / 생성에 대한 음악 질문! : D
Oddmund

답변:


28

Cellular Automata- 읽기 .

여기에서 시도해 볼 수도 있습니다 .

편집하다:

rakkarage는 다른 리소스를 제공했습니다. http://www.ibm.com/developerworks/java/library/j-camusic/


1
Wolfram은 정말 똑똑합니다! 이런 종류의 물건을 너무나도 쉽게 사용할 수있게 만들어
주셔서 감사합니다

내 Ubuntu 상자에서 작동하지 못했습니다. :(
Calmarius


이것의 문제는 12 톤 시스템에 갇혀 있다는 것입니다. 진정한 음악 생성 알고리즘은 일반 악기보다 우수하며 자유로운 고조파 톤 제어 기능을 제공합니다. 피아노는 당시 표준으로 합의 된 특정 톤 시스템으로 설계되었습니다. 그럼에도 불구하고 12 톤 시스템은 당시로서는 훌륭했습니다.
Timothy Swan

42

가장 성공적인 시스템은 여러 기술을 결합 할 가능성이 높습니다. 모든 장르의 음악에서 멜로디, 하모니, 리듬 및베이스 시퀀스 생성에 잘 맞는 기술을 찾을 수 있을지 의심됩니다.

예를 들어 마르코프 체인 은 멜로디 및 하모닉 시퀀스 생성에 적합합니다. 이 방법은 체인 전환 확률을 구축하기 위해 기존 노래를 분석해야합니다. Markov 체인의 진정한 아름다움은 주가 원하는대로 될 수 있다는 것입니다.

  • 멜로디 생성의 경우 건반에 상대적인 음표 번호를 시도합니다 (예 : 건반이 C 단조이면 C는 0, D는 1, D #은 2 등).
  • 하모니 생성을 위해 코드의 근음, 코드 유형 (메이저, 마이너, 감소, 증가 등) 및 코드 반전 (근, 첫 번째 또는 두 번째)에 대한 건반 관련 음표 번호 조합을 시도해보십시오.

신경망시계열 예측 (예측)에 적합합니다. 즉, 기존의 인기있는 멜로디 / 하모니에 대해 훈련 할 때 음악 시퀀스를 '예측'하는 데 똑같이 적합합니다. 최종 결과는 Markov 체인 접근 방식의 결과와 유사합니다. 메모리 풋 프린트를 줄이는 것 외에 Markov 체인 접근 방식에 비해 어떤 이점도 생각할 수 없습니다.

피치 외에도 생성 된 음 또는 코드의 리듬을 결정하기위한 기간이 필요합니다. 이 정보를 Markov 체인 상태 또는 신경망 출력에 통합하도록 선택하거나 별도로 생성하고 독립적 인 피치 및 기간 시퀀스를 결합 할 수 있습니다.

유전 알고리즘 을 사용하여 리듬 섹션을 발전시킬 수 있습니다. 간단한 모델은 처음 32 비트가 킥 드럼의 패턴을 나타내고, 두 번째 32 비트는 스네어, 세 번째 32 비트는 닫힌 하이햇 등을 나타내는 이진 염색체 를 사용할 수 있습니다 . 이 경우의 단점은 새로 진화 된 패턴의 적합성을 평가하기 위해 지속적인 인간 피드백이 필요하다는 것입니다.

전문가 시스템은 다른 기술에 의해 생성 된 서열을 확인하는 데 사용될 수있다. 이러한 유효성 검사 시스템에 대한 지식 기반은 좋은 음악 이론 책이나 웹 사이트에서 가져올 수 있습니다. Ricci Adams의 musictheory.net을 사용해보십시오 .


10

컴퓨터 음악과 알고리즘 구성의 역사에 익숙하지 않은 개발자들이 종종 간과하는 이러한 기술에 대한 50 년 이상의 연구가 있습니다. 이러한 문제를 해결하는 시스템 및 연구의 수많은 예는 여기에서 찾을 수 있습니다.

http://www.algorithmic.net


7

쉽고 다소 효과적인 알고리즘은 1 / f 노이즈 ( "핑크 노이즈"라고도 함)를 사용하여 스케일에서 지속 시간과 음표를 선택하는 것입니다. 이것은 일종의 음악처럼 들리며 좋은 출발점이 될 수 있습니다.

더 나은 알고리즘은 "markov chains"를 사용하는 것입니다. 몇 가지 예제 음악을 스캔하고 확률 표를 만듭니다. 가장 간단한 경우에는 C가 A를 따를 가능성이 20 % 일 것입니다.이를 개선하려면 지난 몇 개의 음표의 순서를 살펴보십시오. 예를 들어 "CA B"는 15 % 뒤에 B가 올 가능성이 있습니다. 4 % 뒤에 Bb 등이 올 가능성이 있습니다. 그런 다음 이전에 선택한 노트의 확률을 사용하여 노트를 선택합니다. 이 놀랍도록 간단한 알고리즘은 꽤 좋은 결과를 생성합니다.

음악 생성을위한 마르코프 체인



4

내 소프트웨어 는 응용 진화론을 사용하여 음악을 "성장"시킵니다. 이 과정은 Richard Dawkins의 The Blind Watchmaker 프로그램 과 비슷합니다. MusiGenesis는 음악적 요소를 무작위로 추가 한 다음 사용자가 추가 된 각 요소를 유지할지 여부를 결정합니다. 아이디어는 당신이 좋아하는 것을 유지하고 옳지 않은 것은 버리고 그것을 사용하기 위해 음악 교육을받을 필요가 없습니다.

인터페이스가 나빠졌지만 오래되었습니다. 저를 고소하세요.


4

나는 항상 iMuse 시스템을 사용하는 오래된 Lucasarts 게임을 좋아했습니다.이 게임은 끝없이 반응하는 사운드 트랙을 만들어 내고 매우 음악적이었습니다 (대부분은 여전히 ​​작곡가가 만들었 기 때문입니다). 여기에서 사양 (특허 포함)을 찾을 수 있습니다. http://en.wikipedia.org/wiki/IMUSE

Nintendo는 iMuse와 유사한 접근 방식을 사용하여 즉석에서 음악을 만들거나 영향을 미치는 유일한 회사 인 것 같습니다.

당신의 프로젝트가 매우 실험적이지 않다면 나는 작곡가의 사용을 포기하지 않을 것입니다. 실제 인간 작곡가는 산술보다 훨씬 더 음악적이고 듣기 좋은 결과를 만들어 낼 것입니다.

시를 쓰는 것과 비교 해보자 : 아주 전위적인 소리를내는 무의미한시를 쉽게 만들 수 있지만, 산술로 셰익스피어를 복제하는 것은 어렵고, 가볍게 표현하기는 어렵다.


매우 사실,하지만 난 사용자가 "확인"또는 "괜찮은"음악에 훨씬 더 관심이있을 것이라고 생각 이상 같은 5 "큰"트랙 이상의 게임 플레이에 반응해서 또 다시 ...
RCIX

@RCIX : iMuse 시스템으로 게임을 해본 적이 있습니까? 그것은 많은 것들에 반응하며 필요에 따라 매우 미묘하거나 분명하지만 인간 작곡가가 쓴 음악을 사용합니다. 완전히 새로운 음악을 생성하지는 않지만, 큐 사이의 훌륭한 전환을 수행하고, 배열을 변경할 수 있으며 (새 악기를 가져오고, 다른 악기를 혼합), 비트를 놓치지 않고 속도를 높이거나 낮출 수 있습니다. . 이것은 "계속해서 같은 5 개의 위대한 트랙"과는 거리가 멀다. 나는 그것을 "현재의 게임 분위기에 맞는 하나의 연속적인 음악 스트림"이라고 부를 것이다.
Galghamon

3

SoundHelix (http://www.soundhelix.com)를 살펴 보셨습니까? 매우 깔끔한 음악을 생성하는 알고리즘 무작위 음악 제작을위한 오픈 소스 Java 프레임 워크입니다. SoundHelix를 독립 실행 형 응용 프로그램, 웹 페이지에 포함 된 애플릿, JNLP 기반 애플릿으로 사용하거나 자체 Java 프로그램에 포함시킬 수 있습니다.

SoundHelix로 생성 된 예제는 http://www.soundhelix.com/audio-examples 에서 찾을 수 있습니다 .


3

지루하지 않은 절차 적 음악 생성에 대한 연구는 과거로 거슬러 올라갑니다. Computer Music Journal http://www.mitpressjournals.org/cmj (실제 도메인 이름이 없습니까?) 의 이전 및 새 문제를 찾아보십시오. 여기에는 음악 합성 땜장이, 납땜 인두 기수, 비트 목동 자 및 학술 연구자에게 실제로 사용되는 심각한 기술 기사가 있습니다. 그것은 당신이 주요 서점에서 찾을 수있는 몇몇 잡지와 같은 푹신한 리뷰와 인터뷰 넝마가 아닙니다.


이 잡지에 대한 내 지식은 내가 구독했지만 몇 년 전에 지나간 것에 근거한 것임을 언급해야합니다. 나는 그것이 여전히 좋다고 생각한다!
DarenW

2

너무 큰 주제입니다. morganpackard.com에서 내 iPad 앱, Thicket 또는 Ripple 소프트웨어를 살펴볼 수 있습니다. 제 경험상, 다이나믹 한 음악 생성에 대한 대부분의 학문적 접근 방식은 학문적으로 들리는 것들이 나옵니다. 클럽 / 일렉트로니카 세계의 변두리에서 더 성공적인 것들이 발견되었다고 생각합니다. Monolake는이 점에서 나의 영웅입니다. 매우 듣기 좋은 것, 매우 많은 컴퓨터 생성. 내 음악도 나쁘지 않습니다. Paul Lansky의 "Alphabet Book"은 특히 그가 학업적인 사람이라는 점을 고려할 때 매우 듣기 좋은 알고리즘 음악의 좋은 예입니다.


1
또한 음악가가 물건을 만드는 데 사용하는 도구 (Pure Data, SuperCollider, Max)에 대한 커뮤니티를 확인하세요. 개념적으로 흥미로운 기술을 찾는 것보다 먼저 좋아하는 음악가를 찾고 그로부터 거꾸로 작업하는 것으로 시작합니다.
morgancodes

1

제가 고려한 기술은 바 정도까지 작은 음악 패턴을 만드는 것입니다. 이러한 패턴에 '흥분', '강렬함'등의 느낌 식별자를 태그합니다. 상황에 맞는 음악을 생성하려면 이러한 태그를 기반으로 몇 가지 패턴을 선택하고 연주 할 악기를 선택합니다. 악기를 기반으로 패턴을 결합하는 방법을 파악한 다음 (예 : 피아노에서는 핸드 스팬에 따라 모두 함께 연주 할 수 있고 기타에서는 빠르게 연속적으로 음을 연주 할 수 있음)이를 PCM으로 렌더링합니다. . 또한 키 변경, 속도 변경, 효과 추가 등을 할 수 있습니다.


1

당신이 설명하고있는 구체적인 기술은 토마스 돌비가 10 년 또는 15 년 전에 작업했던 것입니다.하지만 지금은 그가 그것을 무엇이라고 불렀는지 기억이 나지 않아서 좋은 검색어를 제공 할 수 없습니다.

그러나 이것을보십시오 위키 백과 문서와 Metafilter 페이지를.


1
당신은 "생성 음악"과 "Koan"이라는 프로그램을 생각하고 있습니다.
MusiGenesis

1

알고리즘 구성 은 사용 된 여러 방법에 대한 좋은 둘러보기입니다.

"다루는 주제는 다음과 같습니다 : markov 모델, 생성 문법, 전환 네트워크, 혼돈 및 자기 유사성, 유전 알고리즘, 셀룰러 오토마타, 신경망 및 인공 지능."

이 광범위한 주제에 대한 좋은 출발점이지만 각 방법의 작동 방식을 자세히 설명하지는 않습니다. 각각에 대한 좋은 개요를 제공하지만 아직 이에 대한 지식이 없다면 충분하지 않습니다.


0

90 년대 후반에 Microsoft는 "Interactive Music Control"이라고하는 ActiveX 컨트롤을 만들었습니다. 불행히도 그들은 프로젝트를 포기한 것 같습니다.


그것은 그것이 만든 음악이 완전히 불었기 때문입니다. 이것은 알고리즘 적으로 구성된 음악의 매우 일반적인 특징입니다.
MusiGenesis

위의 @thekidder가 참조한 Wolfram Tones 프로젝트는 불지 않는 데 놀랍도록 성공적입니다. 나는 일반적인 rnd noodling을 기대하고 있었다 ...
defmeta



0

저는 코펜하겐 대학의 "프로그래밍 언어 이론 및 실습"연구 그룹의 "8.1 " 프로젝트 제안을 검토했습니다 . CS 부서 :

8.1 음악 코포 라의 자동 수확 및 통계 분석

악보의 전통적인 분석은 한 곡의 리듬, 코드 시퀀스 및 기타 특성을 분석하는 한 명 이상의 사람으로 구성되며, 같은시기의 다른 작곡가 나 같은 작곡가가 다른 곡을 모호하게 비교하는 맥락에서 설정됩니다.

전통적인 자동 음악 분석은 악보를 거의 다루지 않았지만 신호 분석과 기계 학습 기술을 사용하여 예를 들어 분위기 또는 장르 내에서 추출하고 분류하는 데 중점을 두었습니다. 반대로 DIKU의 초기 연구는 악보 분석의 일부를 자동화하는 것을 목표로합니다. 부가가치는 손으로 쉽게 할 수없고 기계 학습 기술로 의미있게 분석 할 수없는 대량의 악보에서 정보를 추출 할 수있는 잠재력입니다.

이것은-내가보기에-당신의 질문과 반대 방향으로, 생성 된 데이터는-제 생각에-음악의 절차 적 생성의 경우에 사용될 수 있습니다.


0

제 생각에는 제 너러 티브 음악은 엄격한 선택 과정을 거쳐야만 작동합니다. 알고리즘 음악의 선구자 인 David Cope는 자신의 알고리즘 (대부분 Markov Chain 기반이라고 생각 함)에서 몇 시간 동안 음악 출력을 통해 실제로 잘 나온 몇 가지를 골라 냈습니다.

이 선택 과정은 특정 음악 스타일의 특성을 모델링함으로써 자동화 될 수 있다고 생각합니다. 예를 들어, "디스코"스타일은 백 비트에 스네어가있는 색다른 비트와 드럼 파트를 특징으로하는베이스 라인에 대해 많은 점수를 부여하지만 심하게 불협화음 인 하모니에 대해서는 포인트를 뺍니다.

사실 음악 작곡 과정은 관용적 관습으로 가득 차서 분야에 대한 특별한 지식 없이는 모델링하기가 매우 어렵습니다.


0

저는 절차 음악을위한 Python 모듈을 작업하고 있습니다. 방금 음표, 스케일 및 코드 구성에 대해 알고있는 내용을 프로그래밍 한 다음 이러한 제약 조건에서 무작위로 콘텐츠를 생성하도록 할 수있었습니다. 나는 특히 주제를 더 잘 이해하는 사람이 가르 칠 수있는 것과 같은 시스템에 더 많은 이론과 패턴이 있다고 확신합니다. 그런 다음 이러한 시스템을 유전 알고리즘 또는 무작위 콘텐츠 생성을위한 제약 조건으로 사용할 수 있습니다.

여기 에서 내 구현을 살펴볼 수 있습니다. 에서 살펴볼 수 있습니다. 특히 무작위로 생성 된 리드 예제가 유용 할 수 있습니다. 코드 진행에 대한 확실한 이해가있는 사람은 이와 같은 기술로 노래 구조를 만들고 이와 같은 제한된 무작위 멜로디를 구현할 수 있습니다. 음악 이론에 대한 나의 지식은 그렇게까지 확장되지 않습니다.

그러나 기본적으로 생성하려는 음악 종류의 이론을 인코딩 한 다음 해당 이론의 범위를 절차 적으로 탐색하기위한 일부 알고리즘의 제약 조건으로 사용해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.