지금까지 내가 설계하고 구현해 오던 Ardule '드럼 패턴학' 생태계에서는 모든 패턴이 2마디, 즉 2-bar 길이를 갖는 것이 불문율이었다. 패턴 내부의 첫 마디와 둘째 마디도 특별한 사정이 없는 한 내용은 동일하다. 그러면 처음부터 1-bar 체계였으면 좋았을까? 그렇게 되면 곡 단위의 패턴 체인을 만들 때 너무나 많은 패턴 수를 다루어야 한다.
내가 재료로 삼은 원본 책자에서는 당연히 모든 패턴을 bar 단위로만 표시해 놓았다. 이를 MIDI로 전환한 파일(인터넷에서 구할 수 있음)은 2-bar 단위로 반복하였다. 활용성을 생각하면 지극히 합리적이다. 만약 모든 패턴을 한 마디로만 기록해 놓았다면, 이를 프리뷰하다가 '어, 방금 들은게 어떤 것이었지?'하고 아쉬워할 수 있기 때문이다.
대부분의 곡은 4마디 또는 8마디 단위로 반복이 이루어진다. 문제는 각 단위의 마지막 마디가 필-인이나 브레이크 패턴을 넣어서 변화를 주거나 다음으로 넘어간다는 느낌을 갖게 하는데, 모든 패턴이 2마디 단위라면 작업이 매우 어려워진다. 그래서 일반 패턴과 브레이크 패턴의 한 마디를 조합하여 합성 패턴을 만드는 기능을 APS에 넣어 둔 상태였다.
아무리 그렇다고 해도 1-bar를 다룰 일이 생각보다 많다. 그래서 고민한 끝에 1-bar를 구현하기로 했다. 다음은 전형적인 4-bar "팝" 프레이즈이다. 2-bar 규칙을 철저히 고수한다면 이를 만들기가 매우 까다롭다.
'절반' 패턴은 여전히 2-bar 구조를 유지한다. 다만 그 안에 실제로 연주되는 유효 구간은 1-bar라는 선언(PLAY_BARS=1)을 넣고 이를 해석하게 만든 것이다. APS의 그리드 뷰 화면에서는 다음과 같이 비활성화된 bar는 백색으로 표시하여 시각적으로 차별화하였다. 대부분의 패턴은 동일한 마디가 2회 반복되는 형태이므로 half bar의 경우 첫 번째 것만 유효하게 해석하면 된다. 이 개념을 확장한다면, 아직 구현이 되지 않은 3/4 박자 패턴도 다룰 수 있게 될 것이다.
챗GPT의 표현을 빌리자면 '비침습접' 방법으로 기존 코드에 손을 되도록 적게 대고 새 기능을 구현할 수 있었다. 이것이 가능했던 것은, APS 체계를 구성하는 여러 파이썬 코드가 각자 어떤 기능을 하며 서로 연결되는지를 설명한 문서 APS Structure Map을 만들어서 수시로 참고하고 있기 때문이다. 일정 규모 수준으로 성장한 개발 프로젝트에서 문서화의 중요성을 몸으로 체험하고 있다. 혼자 하는 개발임에도 불구하고 마일스톤/로드맵/요구정의서 등의 성격에 해당하는 문서를 수시로 만들고 갱신한다.
(Nano) Ardule 생태계에 1-bar 개념을 도입한 어제의 작업은 일종의 MVP(Minimal Viable Product)의 개념을 잘 보여주는 사례라고 할 수 있다. 더불어 로컬 개발 환경에서 git를 쓰면서 수시로 GitHub에 수정된 코드를 올리는 것에도 많이 익숙해졌다.
혼자 하는 개발이라 해도, 프로젝트가 커질수록 즉흥적인 구현만으로는 유지가 어렵다. 이번 1-bar 도입을 계기로 문서화, 마일스톤, 요구 정의 같은 작업이 얼마나 중요한지를 몸으로 느끼고 있다.
Ardule은 여전히 진행 중인 프로젝트이지만, 이런 작은 선택들이 모여 결국은 내가 쓰고 싶은 도구에 조금씩 가까워지고 있다고 믿는다.
