알고리즘 작곡

**알고리즘 작곡**(Algorithmic composition)은 알고리즘을 사용하여 음악을 만드는 기술이다.

알고리즘(또는 적어도 공식적인 규칙 집합)은 수 세기 동안 음악을 작곡하는 데 사용되어 왔다. 예를 들어, 서양 대위법에서 성부 진행을 계획하는 데 사용되는 절차는 종종 알고리즘적 결정성으로 환원될 수 있다. 이 용어는 우연 절차의 도입을 통해 지속적인 인간 개입 없이 실행되는 음악 생성 기술을 설명하는 데 사용될 수 있다. 그러나 라이브 코딩 및 기타 인터랙티브 인터페이스를 통해 알고리즘 작곡에 대한 완전히 인간 중심적인 접근 방식이 가능하다.

일부 알고리즘이나 즉각적인 음악적 관련성이 없는 데이터는 작곡가에게 음악에 대한 창의적인 영감으로 사용된다. 프랙탈, L-system, 통계 모델, 심지어 임의의 자료 (예: 인구 조사 수치, GIS 좌표 또는 자기장 측정)와 같은 알고리즘이 소스 자료로 사용되었다.

## 모델
작곡 알고리즘은 일반적으로 사용하는 특정 프로그래밍 기술에 따라 분류된다. 그런 다음 프로세스의 결과는 1) 컴퓨터로 작곡된 음악과 2) 컴퓨터의 도움으로 작곡된 음악으로 나눌 수 있다. 알고리즘이 생성 과정에서 자체적으로 선택을 할 수 있을 때 음악은 컴퓨터로 작곡된 것으로 간주될 수 있다.

작곡 알고리즘을 분류하는 또 다른 방법은 작곡 과정의 결과를 검토하는 것이다. 알고리즘은 1) 다른 악기를 위한 표기법 정보(악보 또는 MIDI)를 제공하거나 2) 음 합성의 독립적인 방법(그 자체로 작곡을 연주)을 제공할 수 있다. 표기법 데이터와 음 합성을 모두 생성하는 알고리즘도 있다.

작곡 알고리즘을 분류하는 한 가지 방법은 구조와 데이터 처리 방식에 따라, 부분적으로 겹치는 6가지 유형의 모델을 살펴보는 것이다.

* 수학적 모델
* 지식 기반 시스템
* 문법
* 진화적 방법
* 학습 시스템
* 하이브리드 시스템

### 번역 모델
이는 기존의 비음악적 매체에서 정보를 새로운 소리로 "번역"하는 것을 포함하는 음악 합성 접근 방식이다. 번역은 규칙 기반이거나 추계학적일 수 있다. 예를 들어, 그림을 소리로 번역할 때 수평선의 JPEG 이미지는 소리에서 일정한 음높이로 해석될 수 있는 반면, 위로 기울어진 선은 오름차순 음계가 될 수 있다. 종종 소프트웨어는 매체에서 개념이나 은유(예: 높이 또는 감정)를 추출하고 추출된 정보를 사용하여 음악 이론이 일반적으로 이러한 개념을 나타내는 방식으로 노래를 생성하려고 한다. 또 다른 예는 텍스트를 음악으로 번역하는 것이다. 이는 감정 분석과 같은 기계 학습 방법을 사용하여 텍스트에서 감정(긍정 또는 부정)을 추출하고 생성된 음악 출력에서 단조(슬픈) 또는 장조(행복한) 화음과 같은 화음의 품질로 해당 감정을 표현함으로써 작곡에 접근할 수 있다.

### 수학적 모델
수학적 모델은 수학적 방정식과 무작위 사건을 기반으로 한다. 수학을 통해 작곡을 만드는 가장 일반적인 방법은 확률 과정이다. 확률 모델에서는 비결정론적 방법의 결과로 음악 작품이 작곡된다. 작곡 과정은 무작위 사건의 가능성에 가중치를 부여함으로써 작곡가에 의해 부분적으로만 제어된다. 확률 알고리즘의 대표적인 예로는 마르코프 연쇄와 가우스 분포의 다양한 사용이 있다. 확률 알고리즘은 종종 다양한 의사 결정 과정에서 다른 알고리즘과 함께 사용된다.

음악은 또한 자연 현상을 통해 작곡되어 왔다. 이러한 혼돈 모델은 자연의 고조파 및 비고조파 현상에서 작곡을 생성한다. 예를 들어, 1970년대 이래로 프랙탈은 알고리즘 작곡의 모델로도 연구되어 왔다.

수학적 모델을 통한 결정론적 작곡의 예로, 온라인 정수열 사전은 정수열을 12음정 평균율 음악으로 연주하는 옵션을 제공한다. (초기 설정은 각 정수를 88로 모듈로 연산하여 88건반 건반의 음표로 변환하고 일정한 리듬으로 연주한다. 따라서 123456, 즉 자연수는 반음계의 절반과 같다.) 또 다른 예로, 모든 음정 시리즈는 컴퓨터 지원 작곡에 사용되어 왔다.

### 지식 기반 시스템
작곡을 만드는 한 가지 방법은 특정 음악 장르의 미적 코드를 분리하고 이 코드를 사용하여 새로운 유사한 작곡을 만드는 것이다. 지식 기반 시스템은 동일한 스타일이나 장르의 새로운 작품을 작곡하는 데 사용될 수 있는 미리 만들어진 일련의 논증을 기반으로 한다. 일반적으로 이는 작곡이 완성되기 위해 충족되어야 하는 일련의 테스트 또는 규칙을 통해 달성된다.

### 문법
음악은 또한 독특한 문법 집합을 가진 언어로 검토될 수 있다. 작곡은 먼저 음악 문법을 구축한 다음 이를 사용하여 이해할 수 있는 음악 작품을 만드는 방식으로 이루어진다. 문법은 종종 단일 음표보다는 화성과 리듬과 같은 거시적 수준의 작곡 규칙을 포함한다.

### 최적화 접근 방식
잘 정의된 스타일을 생성할 때 음악은 조합 최적화 문제로 볼 수 있으며, 목표는 목적 함수를 최소화하는 올바른 음표 조합을 찾는 것이다. 이 목적 함수는 일반적으로 특정 스타일의 규칙을 포함하지만, 마르코프 모델과 같은 기계 학습 방법을 사용하여 학습할 수도 있다. 연구원들은 정수 프로그래밍, 변수 이웃 탐색, 그리고 다음 하위 섹션에서 언급된 진화적 방법 등 수많은 다양한 최적화 방법을 사용하여 음악을 생성했다.

### 진화적 방법
음악 작곡의 진화적 방법은 유전 알고리즘을 기반으로 한다. 작곡은 진화 과정을 통해 구축된다. 돌연변이와 자연선택을 통해 다양한 해결책이 적합한 음악 작품으로 진화한다. 알고리즘의 반복적인 행동은 나쁜 해결책을 제거하고 과정을 거쳐 살아남은 해결책에서 새로운 것을 생성한다. 이 과정의 결과는 비평가에 의해 감독되며, 비평가는 생성된 작곡의 품질을 제어하는 알고리즘의 필수적인 부분이다.

### 에보-데보 접근법
진화적 방법은 발달 과정과 결합하여 복잡한 구조의 생성 및 최적화를 위한 에보-데보(evo-devo) 접근 방식을 구성한다. 이러한 방법은 음악 작곡에도 적용되었으며, 음악 구조는 매우 단순한 작곡(몇 개의 음표로 구성됨)을 복잡하고 완전한 작품(악보 또는 MIDI 파일)으로 변환하는 반복적인 과정을 통해 얻어진다.

### 학습 시스템

학습 시스템은 작업하는 음악 장르에 대한 사전 지식이 없는 프로그램이다. 대신 사용자가 제공하거나 프로그래머가 제공하는 예제 자료에서 학습 자료를 스스로 수집한다. 그런 다음 이 자료는 예제 자료와 유사한 음악 작품으로 처리된다. 이 알고리즘 작곡 방법은 스타일의 알고리즘 모델링, 기계 즉흥 연주, 그리고 인지 과학 및 인공 신경망 연구와 같은 연구와 밀접하게 관련되어 있다. 아사야그(Assayag)와 두브노프(Dubnov)는 다양한 길이의 모티브와 프레이즈 연속을 학습하기 위한 가변 길이 마르코프 모형을 제안했다. 마치니(Marchini)와 푸르윈스(Purwins)는 비지도 클러스터링 및 가변 길이 마르코프 연쇄를 사용하여 리듬 타악기 단편의 오디오 녹음 구조를 학습하고, 이를 통해 음악적 변형을 합성하는 시스템을 제시했다.

### 하이브리드 시스템
단일 알고리즘 모델을 기반으로 한 프로그램은 미학적으로 만족스러운 결과를 거의 성공적으로 만들어내지 못한다. 이러한 이유로 다른 유형의 알고리즘이 종종 함께 사용되어 이러한 알고리즘의 강점을 결합하고 약점을 줄인다. 음악 작곡을 위한 하이브리드 시스템을 만드는 것은 알고리즘 작곡 분야를 개척하고 알고리즘적으로 작곡을 구성하는 많은 새로운 방법도 만들어냈다. 하이브리드 시스템의 유일한 주요 문제는 복잡성이 증가하고 이러한 알고리즘을 결합하고 테스트하는 데 필요한 자원이다.

컴퓨터 지원 작곡이라고 부를 수 있는 또 다른 접근 방식은 "수작업" 작곡을 위해 특정 구조를 알고리즘적으로 생성하는 것이다. 이미 1960년대에 고트프리트 미하엘 쾨니히는 우연성 음악을 위한 컴퓨터 프로그램 프로젝트 1과 프로젝트 2를 개발했는데, 그 결과물은 연주 지시를 통해 "수동으로" 현명하게 구성되었다. 2000년대에 안드라니크 탕기안은 리듬 카논과 리듬 푸가를 위한 시간 이벤트 구조를 결정하는 컴퓨터 알고리즘을 개발했으며,
이는 나중에 화성 작곡인 Eine kleine Mathmusik I과 Eine kleine Mathmusik II로 발전되었다. 악보와 녹음은 다음을 참조하라.

## 같이 보기
* AIVA
* 체인징 벨
* 계산 창의성
* 데이비드 코프
* 유클리드 리듬 (유클리드 호제법으로 생성된 전통적인 음악 리듬)
* 생성 음악
* 음악 주사위 게임
* 대중 음악 자동화
* 음악 소프트웨어 목록

## 각주

## 추가 자료
* 마이클 에드워즈의 "Algorithmic Composition: Computational Thinking in Music". 커뮤니케이션스 오브 더 ACM, vol. 54, no. 7, pp. 58–67, 2011년 7월 
* 칼하인츠 에슬: Algorithmic Composition. In: Cambridge Companion to Electronic Music, Nicholas Collins 및 Julio d'Escrivan 편집, Cambridge University Press 2007. . 초록
* Computer Music Algorithms by Dr. John Francis. 모든 음악 스타일을 나타내는 음악 알고리즘 컴퓨터 프로그램, C 소스 코드 포함, 미디 파일 생성. 19판 2019년, 현재 57개의 프로그램, 20개의 스타일, 24개의 챕터를 포함.
* 도리엔 헤레만스, 칭화 좡(Ching-Hua Chuang), 일레인 추의 "A Functional Taxonomy of Music Generation systems". ACM 컴퓨팅 서베이, vol. 55, no. 5, pp. 69:1–30 .
* 에두아르도 렉 미란다: Composing Music with Computers. 포컬 프레스 2001.
*게르하르트 니어하우스(Gerhard Nierhaus): Algorithmic Composition – Paradigms of Automated Music Generation. 스프링거 2008. 
* 커티스 로드스(Curtis Roads): The Computer Music Tutorial. MIT Press 1996. .
* 로버트 스미스(Robert Smith) 외 "Automatic Composition from Non-musical Inspiration Sources".
* 마르틴 슈페르(Martin Supper)의 "A Few Remarks on Algorithmic Composition". 컴퓨터 음악 저널 25.1 (2001) 48–53.
*필 윈서(Phil Winsor)와 진 드 리사(Gene De Lisa): Computer Music in C. 윈드크레스트 1990. 
*울러, 르네, 브라운, 앤드류 R, 미란다, 에두아르도, 디데리히, 요아힘, 베리, 로드니(2005) "A framework for comparison of process in algorithmic music systems." In: Generative Arts Practice, 2005년 12월 5–7일, 시드니, 호주.
* "Composing with Process: Perspectives on Generative and Systems Music" , 팟캐스트

## 외부 링크

* 
* Algorithmic Composer, 알고리즘 작곡 튜토리얼 시리즈
* Instructional Guides by 크리스토퍼 도브리안

분류:음악 이론
분류:마르코프 모형
분류:컴퓨터 음악
분류:절차적 생성