2026년 8월 13일 목요일

1,318개의 드럼 패턴이 Fluid Ardule로 들어왔다

라즈베리파이 3B(+ I2S DAC), 아두이노 우노, 그리고 몇 가지 주변부품을 이용하며 만든 Fluid Ardule은 원래 사운드폰트 기반의 DIY MIDI 사운드 모듈을 목표로 하였었다. '전원을 넣고 건반을 연결하여 눌러대면 소리가 난다'는 기본 기능을 갖추게 되면서 MP3, OGG 등 음원 파일 재생과 인터넷 라디오 등 일반적인 음악 감상용 도구 역할도 자연스럽게 추가하였다. 라즈베리파이는 작은 컴퓨터로서 일정 수준의 성능을 갖추고 있기 때문이다. 만약 라즈베리파이 5를 썼다면 성능은 훨씬 더 좋았을 것이다.

여기까지 오니 자연스럽게 드럼 패턴 플레이어 기능도 넣고 싶어졌다. Ardule 패밀리의 가장 초기 작품이었던 Nano Ardule, 즉 아두이노 나노에 부품을 붙여 만든 기기에서 활용하기 위해 공들여 만든 패턴 파일을 활용하면 될 것이라 생각하였다. 이를 위해서 인터넷에 공개된 드럼 MIDI 파일을 분석하여 2-bar 단위로 잘라 다듬고 장르에 맞추어 이름과 일련번호를 붙인 뒤 독자적인 포맷의 파일 체계(ADT/ADP)를 만드는 등 고된(?) 작업을 했었다. Fluid Ardule에 아주 기본적인 드럼 패턴 재생 기능을 구현해 놓았더니 ADT/ADP의 포맷을 개선해야 할 필요성이 대두되었다.

이에 따라서 기존의 v2.2를 수정하여 v2.3을 고안하였고, MIDI 파일에서 패턴을 분리하여 ADT/ADP로 정리하는 툴킷을 대대적으로 뜯어 고쳤다. v2.2 시절의 툴킷은 GitHub의 Nano Ardule 프로젝트에 속해 있었으나, 이번 작업을 통해서 아예 Ardule이라는 프로젝트로 독립하였다. 이렇게 하여 다음의 세 개 프로젝트가 각각 고유한 성격을 갖게 되었다.

  • Ardule - Drum Patternology 생태계 그 자체. 주로 ADT/ADP 파일을 만드는 과정에 필요한 스크립트와 패턴 아카이브로 구성. 패턴 재생/편집 및 체인 재생용 application 포함(웹GUI, 7.69 MB, v0.4.2).
  • Nano Ardule(드럼패턴/MID 재생기 및 모듈 컨트롤러) - Arduino Nano(Every 포함)로 만든 하드웨어와 구동용 펌웨어.
  • Fluid Ardule(DIY synth이자 일종의 미디어 스테이션?) - 라즈베리 파이 3B로 만든 하드웨어와 리눅스 기반 OS 및 파이썬 스크립트.

ADT/ADP의 새로운 버전이 확립되어 이에 맞추어 만든 1,318개의 패턴이 마련되었으니 이를 Fluid Ardule에서 연주하게 만드는 것은 별로 어렵지 않았다. 여기에 더하여 TFT-LCD 모니터에서 패턴 섬네일을 표현하도록 만들었다. 패턴의 이름(아래의 예에서는 RCK_0011)으로는 장르 정도를 표현할 수 있을 뿐이라서, 직접 소리를 듣거나 눈으로 패턴을 관찰하여 이것이 groove인지 break인지 판단하는 것이 효율적이다. 

Stop 버튼 위에 패턴 섬네일이 표시되었다.

실제로 Fluid Ardule에 복사해 넣은 패턴은 'instant-200 collection'에서 추출한 182개 패턴의 거의 전부이다. PDF로 만든 패턴북도 있다.

세 프로젝트는 드럼과 MIDI라는 공통의 축을 통해 매우 강하게 연결되어 있다. 어느 하나에서 생긴 필요가 다른 프로젝트의 기능 개선으로 이어지고, 그 결과가 다시 처음의 프로젝트로 돌아오는 매우 긍정적인 관계를 이루고 있다. Nano Ardule에서 시작한 드럼 패턴 파일은 Fluid Ardule에서 다시 필요해졌고, 그 과정에서 ADT/ADP가 개선되었으며, 이를 위한 분석·변환 도구가 성장하면서 독립된 Ardule 프로젝트가 탄생했다. 부수적으로 지나치게 복잡한 성격을 띠었던 Nano Ardule 프로젝트는 하드웨어와 펌웨어 위주로 훨씬 단순해졌다. 그리고 Ardule에서 정비된 패턴과 새로운 ADP v2.3은 다시 독립 application을 통해 패턴의 재사용을 용이하게 하였으며, Fluid Ardule의 드럼 플레이어를 훨씬 풍부하게 만들었다.

앞으로는 'Pattern of the week' 같은 것을 통해서 널리 쓰이는 드럼 패턴을 소개할지도 모른다. RCK_0011은 일종의 accession number처럼 관리될 수도 있다. 지금은 GitHub에서 모든 자료를 flat file처럼 제공하고 있지만, 앞으로는 부가 정보와 함께 체계적으로 제공할 수도 있다.

필요에 따라 기능을 하나씩 덧붙이는 방식이므로 자칫 개발이 무질서해질 수도 있다. 이를 어느 정도 막아 주는 것이 미리 작성하는 '명세서'이다. 구현에 앞서 데이터 구조와 동작 원칙을 문서로 정리하고, 이를 바이브 코딩의 기준으로 삼는다. 실제 코드는 AI의 도움으로 빠르게 만들어지더라도, 무엇을 만들 것인지에 대한 규칙은 먼저 사람이 정해 놓는 셈이다.

명세서가 개발 시간을 크게 단축시킨 사례가 패턴을 연결하여 곡 단위의 정보를 저장하는 ARR(Arrangement)이다. 처음에는 패턴을 마우스로 끌어다 놓아 조립하는 별도의 GUI를 구상했다. 그러나 ARR 명세서를 만들고 보니 구조가 워낙 단순하고 명확해서 굳이 복잡한 편집기를 만들 필요가 없었다. 텍스트 편집기만으로도 충분히 곡의 구조를 작성할 수 있었고, 이를 읽어 체인을 재생하는 도구를 구현하는 것으로 목적을 달성할 수 있었다.

결국 명세가 먼저 만들어지면 코드는 오히려 단순해질 수 있다. Ardule 패밀리에서 최근 반복해서 경험하고 있는 일이다.

댓글 없음: