PatternLab이 만들어진 뒤 드럼 패턴이나 MIDI 파일 재생 등의 기능이 모듈 형태로 추가되면서 새로운 아이디어를 떠올리고 이를 실제로 구현하는 속도가 점점 빨라지는 것을 느낀다. 최근에 있었던 가장 획기적인 개선은 사용자 인터페이스를 웹 기반으로 전환하였다는 점이다. 말 그대로 '대전환'에 해당하지만 개발 자체는 그다지 어렵지 않았다. 불과 6개월 전만 하더라도 CLI에서 APS.py의 텍스트 기반 UI를 구현하느라 얼마나 애를 먹었던가? 하지만 웹 브라우저에서 다채로운 그림을 포함하는 패턴 분석 리포트를 만들고, 분할한 각 패턴의 소리에 추상화를 적용한 뒤 원본과 더불어 각각의 실제 소리를 들어보고 싶다는 욕구를 충족해 나가는 과정은 그렇게 고생스럽지 않았다.
아래 이미지를 보라. 위의 것은 반년 전에 만들었던 aps.py(Ardule Pattern Studio)이고, 아래는 오늘 머리에 떠오르는 아이디어를 바이브 코딩으로 순식간에 구현한 웹 GUI 기반의 패턴 편집/재생기인 adx-web-editor.py이다. PowerShell에서 파이썬 스크립트를 실행하면 웹 화면이 뜸과 동시에 FluidSynth가 구동되면서 웹 GUI에서 조작한대로 사운드폰트 기반의 음성 합성이 일어난다. 이전에는 전혀 생각하지 못했던 방식이었다.
APS.py를 개발하느라 고생했던 순간들이 갑자기 한심하게 느껴지기 시작하였다. 왜 그때는 웹 GUI를 사용하려는 생각을 못했을까? 오로지 CLI에서 curses 라이브러리를 써서 텍스트 기반의 UI를 짜는 것이 가장 간단한 방법이라고만 생각했었다. 지금은 HTML, CSS, JavaScript만으로도 패턴 편집기와 재생기, 앞으로는 ORN 편집기와 패턴 체인 편집기까지 자연스럽게 구현할 수 있다는 사실을 깨닫고 있다.
나의 '개발 일지'를 전문가가 들여다 본다면 정말 기형적이고 희한하면서 비능률적인 방식으로 개발을 이어오고 있다고 평가할지도 모른다. 이론적 배경이나 경험 없이 그저 필요한 때마다 문제를 해결하면서 기능을 하나씩 쌓아 올렸기 때문이다. 실제로는 인공지능 덕분에 지시문을 던지고 검증하며 개선점을 찾아내는 일만 하는 셈이지만.
어설프기는 해도 최근 생산성이 갑자기 높아졌다는 느낌이 든다. 이는 초기부터 ADT, ADP, ORN 등의 파일 형식과 슬롯맵, 액센트 체계 등을 명세서 형태로 표준화해 둔 때문일 것이다. 안정적으로 기반이 구축되면서 새로운 프로그램은 그 위에 모듈을 하나씩 얹듯이 빠르게 개발할 수 있게 되었다.
지금의 ADX 프로젝트는 더 이상 개별 프로그램들의 집합이 아니다. PatternLab, MIDI Inspector, ADX Player, 그리고 Web Editor는 하나의 공통된 데이터 구조와 명세를 공유하는 생태계로 성장하고 있다. 아이디어를 떠올리고 이를 실제 도구로 구현하는 시간이 계속 짧아지고 있다는 점에서, 이제야 비로소 플랫폼다운 모습을 갖추기 시작한 것 같다.
댓글 없음:
댓글 쓰기