Corpus(코퍼스)는 원래 라틴어로 ‘몸’ 또는 ‘전체’를 뜻하며, 오늘날에는 특정한 목적을 위해 체계적으로 모아 놓은 자료의 집합이라는 의미로 널리 쓰인다. 특히 언어학에서 corpus는 실제 문장과 발화 자료를 대규모로 모아 언어의 사용 양상, 단어의 빈도, 문법적 패턴 등을 분석하기 위한 말뭉치를 뜻한다. 요즘의 AI, 특히 대규모 언어 모델 시대에는 이러한 말뭉치가 기계가 언어의 패턴을 학습하고 평가하는 중요한 데이터 자원이 되면서 더욱 익숙한 용어가 되었다.
하지만 corpus라는 말이 언어 자료에만 한정되는 것은 아니다. 음악정보학에서도 일정한 원칙에 따라 수집·정리된 음악 자료의 집합을 corpus라고 부를 수 있다. MIDI 연주, 악보, 음원, 리듬 패턴 등이 모두 연구 목적에 따라 corpus가 될 수 있다. 중요한 것은 파일이 단순히 많이 모여 있다는 사실보다는, 일정한 기준으로 선별·정리되어 서로 비교하고 분석할 수 있는 자료 집합을 이룬다는 점이다.
이런 의미에서 Ardule Drum Patternology에서는 여러 출처의 드럼 자료를 분석하고 공통된 방식으로 추상화하여 각각의 drum pattern corpus를 만들고 있다. 여러 corpus는 다시 하나의 Ardule Drum Pattern Collection을 구성한다.
이번에 그 네 번째 drum pattern corpus를 완성하였다. 이 corpus의 원재료는 2025년 11월 MidiDrumFiles.com에서 공개적으로 접근할 수 있었던 80개의 MIDI 파일이었다. 즉 이 80개 자체를 Ardule의 네 번째 corpus라고 부르는 것이 아니라, 이들을 선별하고 정제하여 공통 형식의 drum pattern으로 만든 결과물이 네 번째 corpus이다. Ardule에서는 원본 MIDI 파일을 재배포하지 않고, 분석과 추상화를 거쳐 만든 ADT/ADP 패턴을 collection으로 공개한다.
이번 작업은 앞선 세 corpus보다 훨씬 어려웠다. 이미 만들어 놓은 ADC Toolkit을 그대로 적용하기 힘들 정도였다.
먼저 분류부터 문제였다. 파일 이름에는 Contemporary, ethnic, folk뿐 아니라 12bar, 34time, 68time처럼 기존의 표준 장르 체계에 맞지 않는 이름이 많았다. 실제 음악을 듣고 임의로 장르를 새로 붙이는 대신, 이번 corpus에서만 사용하는 CON, ETH, FOL, TBR, THF, SXE 등의 코드를 만들었다.
dance 10개와 world 5개는 너무 포괄적인 분류라서 처음부터 작업 대상에서 제외하였다. 이후 timing 해석이 애매했던 ethnic17.mid도 제외하여 80개의 source MIDI 중 최종 64개를 패턴 제작에 사용하였다.
| ethnic17.mid의 패턴랩 리포트(링크). 빨갛게 테두리를 두른 원(노트)은 그리드에서 벗어난 것이다. |
더 큰 문제는 timing이었다. 원래 Ardule의 원칙은 MIDI를 2-bar pattern으로 자르고 drum note를 slot으로 추상화하더라도 note-on time은 건드리지 않는 것이었다. 그러나 이번 자료에는 몇 tick씩 밀린 note, 특정 instrument group 전체의 systematic shift, 고립된 off-grid note 등이 발견되었다.
문제가 있는 MIDI 파일은 ChatGPT에 직접 업로드하여 event 수준에서 조사하였다. 주변 grid와 반복 구조를 비교하고 필요하면 직접 들어본 뒤, 명백한 오류라고 판단한 것만 systematic correction 또는 nearest-grid snap으로 보정하였다. 총 20개 파일이 이러한 tick correction을 거쳤다. 보정 여부를 확신하기 어려웠던 ethnic17.mid는 억지로 손대지 않고 제외하였다.
일부 파일의 처리 과정은 따라서 다음과 같았다.
source MIDI
↓
ChatGPT-assisted inspection & tick correction
↓
corrected MIDI
↓
ADC Toolkit / PatternLab
↓
2-bar segmentation & slot abstraction
↓
ADT / ADP
이번 작업을 통해 PatternLab 자체도 개선되었다. 예를 들어 note가 전혀 없는 마지막 빈 마디가 하나의 패턴으로 export되는 문제를 발견하여 수정하였다. adc-patternlab.py로 만든 분석 리포트도 함께 보존했으므로 off-grid note의 상세 내용은 개별 HTML report에서 확인할 수 있다. 최종적으로 ORN 대상은 없었다.
2-bar로 분할한 뒤에는 slot abstraction 결과가 동일한 패턴도 중복으로 제거하였다. 이렇게 선별 → timing 보정 → 분할 → 추상화 → 중복 제거를 거쳐 64개의 source MIDI로부터 270개의 새로운 drum pattern을 얻었다. 이 270개가 Ardule의 네 번째 derived drum pattern corpus이다.
앞선 세 corpus에는 총 1,318개의 패턴이 있었다. 이번 270개를 더하여 Ardule Drum Pattern Collection은 이제 4개 corpus, 총 1,588개 패턴이 되었다. 이제 중복 제거, 유사도 계산, 군집화, 대표 패턴 선정, 장르별 특징 비교가 가능하다. 단순한 수집을 넘어, 드럼 패턴 사이의 구조와 관계를 탐구할 단계에 들어선 것이다.
이번에 얻은 것은 270개의 패턴만이 아니다. 잘 정돈된 자료에서는 보이지 않았던 예외들이 실제 legacy MIDI에서 쏟아져 나왔고, 그 과정에서 ADC Toolkit도 훨씬 단단해졌다.
네 번째 corpus는 Ardule Drum Pattern Collection의 새로운 구성원이자, ADC Toolkit의 제대로 된 stress test였다.

댓글 없음:
댓글 쓰기