Whistle Synth Mac App

Jeff Kaufman

휘슬 신스 Mac 앱

원문은 Jeff Kaufman님이 에 게재했습니다. 이 블로그 구독하기

휘파람으로 신시사이저를 제어하는 내 프로그램이 이제 Mac App Store에서 이용 가능합니다:

무료이며 광고도 없고 오픈소스입니다. Mac이 있고 휘파람을 좋아한다면 한번 써 보시겠어요? 외장 마이크나 헤드폰(지연 시간을 최소화하기 위한 유선) 또는 둘 다 필요합니다. 저는 전자를 추천합니다.

이런 지니의 시대에 살면서 Claude에게 구현을 대대적으로 다시 맡겼고, 덕분에 지연 시간은 더 짧아지고 끊김은 사라졌으며 선택할 수 있는 보이스도 더 많아졌습니다. 게다가 위에서 본 것처럼 이제 Mac 앱이 되었습니다.

지연 시간 개선이 가장 쉽고 빨랐습니다. 마이크를 헤드폰에 갖다 대고 Claude에게 지연 시간을 줄여 달라고 했습니다. 이렇게 하니 왕복 지연 시간을 측정하는 데 필요한 모든 정보를 갖추게 되었고, 몇 가지 다른 방법을 시도해 본 끝에 콜백 API와 몇 가지 추가 조정이 필요하다는 걸 알아냈습니다. 이를 통해 (피치 감지와 합성을 제외한) 오디오 왕복 시간이 80ms에서 5ms로 줄었습니다.

끊김 현상을 고치는 건 로직을 신스에 지시를 내리는 디텍터로 분리하는 문제였습니다. 아이러니하게도 이번 리팩터링은 제가 원래 설계했던 방식으로 되돌아가는 것이었는데, 5년 전에 더 좋은 소리는 나지만 결국 매우 제한적임이 드러난 기묘한 아이디어를 위해 그 방식을 버렸던 것입니다.

새로운 시스템에서는 보이스를 작성하는 것이 훨씬 쉬워졌습니다. 적어도 그렇다고 생각합니다. 어쨌든 작성은 전부 Claude가 했으니까요. Claude에게 다양한 종류의 베이스를 브레인스토밍하게 하고 프로토타입을 코딩하게 한 뒤, 제가 만족할 때까지 함께 반복 작업을 했습니다. 여기에는 음이 높아질수록 하모닉 믹스를 서서히 바꿔 체감 옥타브를 일정하게 유지하는 옥타브리스 베이스도 포함됩니다.

마침내 마음에 드는 트레블 보이스도 하나 얻었습니다. 처음부터 계속 시도해 온 것이지만, 지금까지 시도한 것은 전부 마음에 들지 않았습니다. Claude에게도 이건 더 어려웠습니다. 프로토타입으로 만든 베이스 보이스 중 70%는 마음에 들었지만, 트레블 보이스 중 연주할 만한 건 아직 하나뿐입니다. 드로바(Hammond) 오르간입니다. 높은 음역에서는 우리 귀가 훨씬 더 예민하기 때문입니다. 베이스 라인이 더 단순해서(망치기 어렵고) 튜닝이 더 빨리 인식되는(누군가 알아차리기 전에 음을 완전히 잡을 시간이 더 짧은) 점도 어느 정도 작용합니다.

youtube

트레블 보이스를 더 추가하고 싶지만, 가장 큰 걸림돌은 (a) 괜찮게 들리고 (b) Claude가 구현할 수 있는 보이스가 어떤 종류인지 파악하는 일이었습니다. 실제 플루트 소리 샘플까지 주면서 좋은 플루트 소리를 내게 하려고 오랫동안 시도했지만, 물리적 모델링에 오랜 시간을 들인 뒤에도 만족할 만한 결과를 얻지 못했습니다. 다양한 신스 리드와 타인 피아노(Rhodes)도 시도해 봤지만 성공하지 못했습니다.

드로바가 왜 괜찮게 들리는지 생각해 보면, 회전 스피커(Leslie)가 지속음에서 빠졌을 생동감을 많이 더해주기 때문인 것 같습니다. 비슷한 것이 무엇일지 고민하다 Claude에게 아코디언 소리도 만들어 보게 했는데, 괜찮긴 하지만 아직 만족스럽지는 않습니다.

휘파람 부는 음보다 5도 아래로 연주하는(D -> G) 설정도 추가했는데, 이는 휘파람이 3배 하모닉의 배음을 채우게 된다는 뜻입니다. 이 아이디어는 Ugo Conti에게서 얻은 것으로, (충분히 크게 틀어 놓기만 하면) 뇌가 얼마나 빨리 소리 제어에 적응하는지 놀랍습니다. 이를 통해 원래 음역대에는 잘 맞지 않는 키의 곡도 휘파람으로 불 수 있습니다.

Mac App Store를 통해 무언가를 배포해 본 적은 한 번도 없었는데, 부분적으로는 Apple의 심사 과정이 까다롭기로 유명하기 때문이었습니다. Claude가 그 과정을 안내해 줄 수 있는지 시험해 보기로 했습니다. 그러기 전에 먼저 아이콘이 필요했습니다. Gemini에게 하나 만들어 달라고 했고, 몇 차례 추가 프롬프트를 거쳐 얻은 결과는 다음과 같습니다:

아이디어를 표현한 것으로서 아주 나쁘지는 않지만, 정말 너무 복잡합니다. 훨씬 더 단순한 버전을 시도해 보게 했습니다:

그 다음 Claude에게 이걸 코드로 재현하게 해서 다양한 크기와 점점 단순해지는 디테일의 아이콘을 만들게 했습니다. Claude에게는 매우 어려운 작업이었고, 제가 많이 도와줘야 했습니다. 완전히 정확하게 해내지는 못했고 제가 조금 더 단순화해야 했지만, 충분히 괜찮다고 생각합니다:

128x128에서는 디스플레이의 파형이 사라집니다:

그리고 32x32에서는 컨트롤이 사라지고 화려한 녹색 휘슬의 인상만 남습니다:

App Store에 올리려면 개발자 멤버십 비용을 지불하고(예전보다 짠돌이가 덜해진 모양입니다) 신원을 확인해야 했습니다. 제가 알아차리지 못했는데 Apple이 제 신분증의 성을 "Kaufhan"으로 읽었습니다. Apple 지원팀과 통화해야 했지만, 고쳐 주었습니다. Claude가 스크린샷 촬영과 데모 비디오 제작을 포함해 나머지 과정을 안내해 주었습니다:

youtube

이건 AI가 보완재로서 기능하는 좋은 예입니다. 이 모든 걸 직접 코딩해야 했다면 절대 해내지 못했을 겁니다. 함께 작업한 덕분에 제가 직접 코딩한 신스보다 훨씬 더 좋은 소리를 내고, 훨씬 더 다재다능하며, App Store에서 설치할 수 있는 무언가를 만들 수 있었습니다. AI가 매우 유용할 만큼은 충분히 좋지만 제가 더 보탤 여지가 아예 없을 정도는 아닌 이 시기를 최대한 활용하려고 합니다.

이 글은 muse-spark-1.2-contributor 모델을 사용해 번역했습니다.

댓글