| 그림 출처: Yoshimi synth |
어제의 퇴근 후 개발은 Yoshimi를 매끄럽게 작동하기 위한 투쟁이었다. Yoshimi에 대한 ChatGPT의 설명을 인용해 보자.
Yoshimi는 Linux 환경을 위한 오픈소스 소프트웨어 신시사이저로, SoundFont를 재생하는 FluidSynth와 달리 실시간 음색 합성을 통해 소리를 만들어 낸다. Additive, Subtractive, PadSynth 등 다양한 합성 방식을 지원하며, 풍부한 패드, 리드, 베이스, 아르페지오와 같은 신디사이저 음색에 특히 강점을 가진다.
Fluid Ardule에서는 SoundFont(FluidSynth)뿐 아니라 Yoshimi도 하나의 음원 엔진으로 사용할 수 있다. 그런데 악기를 바꿀 때마다 Yoshimi를 다시 시작해야 했고, 그때마다 "붕~" 하는 짧은 소리가 났다. 실 사용에는 매우 거북한 상황이었다.
처음에는 당연히 Python 코드의 문제라고 생각했다. 운영 스크립트를 이리저리 고쳐 보았고, 실행 중인 Yoshimi에 명령을 보내 악기만 교체하는 방법도 시도했다. 화면은 정상적으로 바뀌었지만 정작 소리는 바뀌지 않았다. 결국 그 방법은 폐기했다.
여기까지였다면 "Yoshimi는 원래 그런가 보다." 하고 끝냈을지도 모른다. 일단 다른 쪽으로 UI를 안정화한 파이썬 운영 스크립트의 최신 버전을 커밋한 다음 5km 야밤 달리기를 하고 돌아왔다.
운동을 하고 돌아오니 정신은 더욱 맑아졌다. 이대로 잠자리에 들기에는 아까웠다. 다시 노트북 컴퓨터 앞에 앉아 커맨드 라인에서 Yoshimi의 프리셋 변경 테스트를 실시해 보았다.
놀랍게도 실행 중인 Yoshimi에서도 다음과 같은 명령으로 악기를 바꿀 수 있었다.
load instrument /path/to/file.xiz
그런데 이상한 점이 있었다. 공백이 없는 파일은 잘 바뀌는데, 공백이 들어 있는 파일 이름만 계속 실패하는 것이다.
한참을 테스트한 끝에 원인을 찾았다. Yoshimi의 CLI는 쉘(shell)이 아니다. 따옴표도, 백슬래시도 일반적인 리눅스 셸처럼 해석하지 않는다. 결국 공백이 없는 심볼릭 링크를 만들어 그 경로를 전달하자 실행 중인 Yoshimi의 패치가 즉시 바뀌었다.
아직 Fluid Ardule에 적용한 것은 아니다. 하지만 오늘 얻은 것은 훨씬 더 중요하다.
"실행 중인 Yoshimi의 패치를 바꾸는 것은 가능하다."
그동안은 재시작이 필수라고 생각했지만, 이제는 부드럽게 전환할 수 있는 길이 보이기 시작했다.
개발을 하다 보면 가끔은 몇 시간 동안 한 발짝도 앞으로 나가지 못하는 것처럼 느껴진다. 그런데 하루를 접고 운동을 하고 돌아와 마지막 5분 동안 결정적인 단서를 발견하는 경우가 있다.
그래서 나는 요즘 이런 생각을 한다.
개발은 하루 종일 하는 것이지만, 진짜 해결은 마지막 5분에 이루어지는 경우가 많다고.
더불어서 이런 깨달음도 있다. 어제까지 만든 것이야말로 정말 최선의 안정화 버전이라고 생각했는데, 오늘 다시 돌이켜 보면 이렇게 부끄러운 것을 어떻게 세상에 내어 놓겠는가 하고 부끄러워 하게 된다는 것이다. 운영 스크립트에 거는 기대 수준이 나날이 올라가고 있으며, 개선에 드는 시간도 생각보다 점점 짧아지는 느낌이다. 빨리 소개용 동영상을 찍고 싶은데, 내일 아침 일찍 서울에서 열리는 회의를 참석하기 위해 하루 먼저 와서 서울역 근처의 허름한 호텔에서 밤을 보내는 내가 너무나 처량하다.
















