이 그림은 무엇인가? Rhythm and blues 종류의 어떤 드럼 연주 패턴 2마디에 해당하는 MIDI 파일을 html-midi-player에서 시각화한 것이다.
이를 내가 고안한(이라고 말하기는 민망하지만...) Ardule Drum Pattern 체계, 즉 ADP로 전환한 다음 실제 연주와 관련한 이벤트만 바이트 어레이로 정리하면 86바이트에 해당하는 이런 모습이 된다.
0x41, 0x44, 0x50, 0x32, 0x16, 0x00, 0x20, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x91, 0x42, 0x00, 0x00, 0x00, 0x02, 0x02, 0x0A, 0x00, 0x02, 0x02, 0x0A, 0x00, 0x02, 0x06, 0x0A, 0x01, 0x02, 0x01, 0x0A, 0x01, 0x02, 0x01, 0x0A, 0x00, 0x02, 0x02, 0x0A, 0x01, 0x02, 0x02, 0x06, 0x0A, 0x01, 0x02, 0x01, 0x0A, 0x00, 0x02, 0x02, 0x0A, 0x00, 0x02, 0x02, 0x0A, 0x00, 0x02, 0x06, 0x0A, 0x01, 0x02, 0x01, 0x0A, 0x01, 0x02, 0x01, 0x0A, 0x00, 0x02, 0x02, 0x0A, 0x01, 0x02, 0x02, 0x06, 0x0A, 0x01, 0x02, 0x01, 0x0A, 0x00,
ADP 파일은 MIDI 파일의 표현력을 약간 희생하여 단순화한 것이다. 노트가 많든 적든 2-bar 드럼 연주 패턴은 동일한 크기의 그리드로 나타낼 수 있다. 이는 바이너리 형태의 데이터라서 아두이노의 두뇌가 되는 8비트 마이크로컨트롤러에서 사용하기에 매우 적당하다. ADP 파일은 헤더를 포함하고 있으며, 노트의 수와 관계 없이 triplete이 아닌 경우(total 32스텝/2마디) 775 바이트의 고정 크기를 갖는다. 위에서 보인 바이트 어레이의 크기는 더 작다. MIDI 파일은 노트가 많아지면(예를 들어 펑크 리듬과 같이 16비트 하이햇 타격이 난무하는 경우) 당연히 커진다.
지난 수 개월 동안 내가 몰두한 것은 마이크로SD카드에 저장한 ADP 파일을 반복하여 재생하는 아두이노 코드를 짜는 것이었다. 이제는 선별한 소수의 ADP 파일을 아예 비상용으로 코드에 내재화하려 한다. 우선적으로 36개를 골라서 byte array를 만든 뒤, InternalPatterns.h라는 파일로 저장하였다. 이 비상용 패턴은 SRAM이 아니라 PROGMEM에 적재되므로 부담도 적다. 결과가 몹시 기대된다.
댓글 없음:
댓글 쓰기