다음 이미지에서 보인 13개의 패턴 중에서 ‘브레이크(Break)’에 해당하는 것은 무엇일까?
먼저 필-인괴 브레이크의 간단한 용어 정의부터 하고 넘어가자.- Fill-in: 이어지기 위한 변화. 반복해도 어색하지 않음.
- Break: 끊기 위한 변화 (보통 다음 구간을 전제로 존재). 루프로 사용하기에는 바람직하지 않음.
위 이미지는 내가 만든 스크립트의 결과물이다. 드럼 패턴 MIDI 파일을 2-bar 단위로 분할한 뒤 시각화하여, 눈으로 확인하기 쉽게 PDF로 전환한 것이다. 눈으로 패턴을 보고, 귀로 들어서 브레이크에 해당하는 것을 대략 구별할 수는 있지만, 100% 정확하다고 보기는 어렵다. 이 PDF 파일을 ChatGPT에 업로드한 뒤 그루브와 브레이크를 구별하라고 하면 나름대로의 기준을 적용하여 꽤 그럴싸한 판별을 해 준다.
위 드럼 패턴 자료는 인터넷에서 200 Patterns라는 이름으로 돌아다니는 것이다. 한편 260 Patterns라는 이름으로 유통되는 파일은 원본 PDF 자료에서 어떤 패턴이 브레이크인지 표시해 두었지만, 정확한 매칭에는 여전히 약간의 수고가 필요하다. 예를 들어 6MISC2.MID 파일은 Ska, Twist, Waltz 패턴이 섞여 있어 파일명만으로는 내용을 파악하기 어렵다. 반면 6ROCK.MID는 파일명에서 장르를 추정할 수 있으며, 14개의 2-bar 패턴이 모두 같은 장르라 작업이 매우 수월했다. 실제로 인터넷에서는 200 + 260 + Rap pattern을 합쳐서 MIDI 파일 묶음으로 돌아다니고 있으며, 원본 자료(책 두권의 PDF)는 따로 돌아다닌다.
6FUNKBR.MID
이는 지금 언급한 파일 묶음을 풀어서 나오는 MIDI 파일의 한 사례이다. 파일명으로부터 Funk Break 패턴임을 어렴풋이 알 수 있다. 그러나 'BR'은 뭘까? 만약 원본 PDF 자료가 없었다면, 나의 드럼 패턴 분류 체계는 영원히 불완전했을지도 모른다. 이는 Funk Break 패턴을 의미하는 것이었다. 만약 파일 하나에 담긴 패턴이 모두 동일 장르였다면 자동화가 훨씬 쉬웠겠지만, 앞서 언급했듯이 6MISC1.MID, 6MISC2.MID라는 파일은 여러 장르의 패턴이 섞여 있었기 때문에 완전 자동화는 쉽지 않았다.
아직 해결되지 않은 또 다른 문제는 3/4 박자의 왈츠 패턴이다. 현재 나의 ADT 체계는 3/4 박자를 직접 수용하지 못하며, 다만 MIDI 파일 병용으로 임시 대응하고 있다.
또 하나의 문제는 ‘flam’ 처리이다. 플램은 드럼 연주에서 매우 짧은 꾸밈음에 해당한다.
|
|
| 출처: Rene-Pierre Bardet, 260 Drum Machine Patterns, p.14 |
위의 드럼 패턴 그리드에서 F로 표시된 것이 플램이다. 이 책은 1987년에 발간되었으며, 드럼 머신의 황금기를 반영하고 있다.
나의 ADT 체계에서는 1마디를 16·12·24 스텝 중 하나로 해석한다. 그러나 플램을 정규 노트로 처리하면 필요 이상으로 24스텝 체계로 세분화되는 문제가 발생한다.
| ADT 체계의 드럼 패턴은 2-bar를 기본 단위로 한다. 대부분의 경우 두 마디는 동일하지만, APS 프로그램 안에서 스텝 단위로 편집하거나 두 패턴의 마디를 하나씩 이어 붙여서 하이브리드 패턴을 만들 수 있다. |
오늘의 글에서는 MIDI 파일에서 ADT를 생성하는 과정에서 발견한 세 가지 문제를 정리해 보았다. 첫 번째는 수작업으로 해결 가능하지만, 나머지 두 문제는 ADT의 차기 메이저 버전에서 반드시 개선해야 한다.
다음은 플램 처리에 대한 하나의 현실적인 제안이다.
서브스텝(마이크로타이밍) 레이어 방식
플램은 “메인 스텝 직전의 매우 짧은 노트”이므로, 그리드를 더 쪼개지 말고 부가 정보로 장식 이벤트를 기록하는 방식이다.
@ORN # format: lane, step, type, level, offset SD, 12, FLAM, -, -1/6
offset = -1/6은 스텝 내부에서 얼마나 앞당길지를 의미한다- flam뿐 아니라 drag, ruff, roll로 확장 가능
- 단점: 플레이어와 APS가 모두 이를 인식해야 함
현실적인 절충안:
offset 값을 자유 실수가 아니라
{ -1/4, -1/6, -1/8 } 같은 제한된 enum으로 두면
임베디드 구현이 쉬워진다.
댓글 없음:
댓글 쓰기