소리꽃 KeyBloom
소리꽃 KeyBloom 바로가기 ↗
이 글은 소리꽃 KeyBloom 시리즈의 18번째 기록입니다. (총 21개)

오늘 한 일

  • 무료 네이티브 데스크톱 앱 착수 — 웹이 원천적으로 못 하는 저지연 라이브 연주를 위해 Tauri로 데스크톱 앱화
    • 이유: 브라우저는 오디오 출력 지연 바닥이 ~48ms라 빠른 패시지를 제대로 못 친다. 화면(파티클·건반·큐)은 웹 그대로 재사용하고 소리만 네이티브로 바꾸면 지연을 넘길 수 있음
    • 유료가 아니라 무료 버전 — 라이브가 목적이지 페이월이 목적이 아님
  • 저지연부터 검증 — 큰 작업 전에 Rust로 피아노 소리 하나 내보고 지연을 실측. 22ms(웹 58ms의 절반 이하) 확인 후 진행
  • 라이브 소리를 네이티브로 완성 — 서스테인 페달, 누르면 계속 울리고 떼면 멎기, 세게/약하게, 스타카토. 웹에선 지연·페달·강약이 다 안 됐던 것들
  • ASIO 붙여 12ms 달성 — 오디오 인터페이스(UR22C) 전용 드라이버로 직접 출력. 실제로 BPM140 16분음표를 칠 만한 수준
  • 라이브 녹화 방식 교체 — 실시간 화면 캡처(기기가 버벅이면 그대로 박힘) 대신, 연주를 이벤트로 기록했다가 정지 후 완벽한 프레임으로 렌더. 샘플 피아노 소리도 함께 담김
  • 라이브 UI 정리 — 모드 토글(파일 재생/실시간 연주)을 프로젝트 탭 안으로, 재생 자리에 메트로놈(소리+비주얼, 볼륨 조절), 스크롤바를 다크 톤으로
  • 저장 흐름 명확화 — 웹은 조용히 다운로드 폴더로 가던 걸, 네이티브는 “다른 이름으로 저장” 대화상자로. 나아가 저장 폴더를 미리 정해두면 대화상자 없이 그 폴더로 바로
  • 편의 기능 — 피아노 볼륨 슬라이더, 연주를 MIDI 파일로도 추출(페달·강약까지)
  • 광고는 웹 전용으로 — 네이티브 앱에선 안 뜨는 광고 자리를 빼고 그 공간을 미리보기·시퀀서에 돌려줌
  • 시작 로딩바 — 피아노 음원(120개)을 다 불러올 때까지 진행률을 보여주고, 끝나면 사라져 쓸 수 있게. 준비 전에 눌러 소리가 안 나던 걸 없앰

막힌 부분

  • 네이티브에서 소리가 노트북 스피커로 나거나 아예 안 났다
    • 원인: 오디오 인터페이스 전용 드라이버(ASIO)가 목록에서 빠져 범용 드라이버가 엉뚱한 곳으로 보냈다. 오디오 라이브러리가 드라이버를 한 번에 하나만 열 수 있어서, 목록을 한꺼번에 쥐면 두 번째(인터페이스) 드라이버가 조용히 탈락하던 것
    • 해결: 이름만 먼저 훑고(드라이버를 바로 놓아줌) 고른 하나만 다시 여는 방식으로. 그제야 인터페이스 드라이버가 잡힘
  • 소리가 작아서 forte를 내려면 건반을 부술 듯이 쳐야 했다
    • 해결: 세기 곡선이 중간을 너무 눌러 그랬음. 곡선을 덜 누르게 바꾸고 전체 볼륨을 올린 뒤, 사용자가 직접 조절하는 볼륨 슬라이더를 달았다
  • 오디오 지연 표시가 사라졌다
    • 원인: 샘플 로딩이 오래 걸려서 지연값을 읽는 창이 먼저 끝나버림
    • 해결: 값이 들어올 때까지 계속 확인하게

다음에 할 일

  • 인터페이스 버퍼를 낮춰 지연 더 줄이기
  • 유료화(결제·라이선스) — 네이티브의 수익 모델
  • 알파를 편집툴이 읽는 형식으로 — 네이티브 앱에서 ProRes 4444
  • 4K 구매 유도 — 결제 붙인 뒤

Series: 소리꽃 KeyBloom


Suggested Posts