소리꽃 KeyBloom
소리꽃 KeyBloom 바로가기 ↗
소리꽃 KeyBloom 2
소리꽃 KeyBloom YouTube에서 보기 ↗
이 글은 소리꽃 KeyBloom 시리즈의 8번째 기록입니다. (총 21개)

오늘 한 일

  • 성능 측정 오버레이 — D 키로 FPS·프레임 작업시간·파티클 수(각각 min/max)를 화면에 표시. 이걸로 재보니 어제 스프라이트 아틀라스 전환으로 이미 60fps가 유지되고 있어서, 성능 항목은 감으로 더 파지 않고 닫음
  • 아틀라스 재굽기 디바운스 — 색·광택 슬라이더를 드래그하면 매 틱 스프라이트를 다시 구워 프레임이 튀었다(work 32ms). 값이 잠깐 안정된 뒤에만 굽도록 디바운스. 녹화 시작 직전엔 대기 중인 재굽기를 flush해 첫 프레임을 깨끗하게
  • 녹화 다듬기 — 녹화 중엔 ‘중지·저장’ 버튼만 빼고 모든 설정을 잠가 깨끗한 한 패스를 보장. “중지·저장”(지금까지 저장)과 “취소(저장 안 함)”를 분리
  • 파티클 tail — 곡 끝(duration) 도달 시 즉시 정지·리셋하지 않고, 파티클이 자연 소멸할 때까지 기다린 뒤 종료. 녹화도 그 여운을 포함
  • 건반 눌림 색 — 흰/검 공통 1색, 모드 선택: 단색(직접 지정) / 파스텔 / 무지개(노트 해시로 키마다 안정적 랜덤)
  • 건반 광택 — 눌린 키에 유리 하이라이트(sheen) + 위로 뻗는 발광 글로우. 키를 떼면 색·sheen은 즉시 꺼지고 글로우만 잔광으로 서서히 감쇠
  • 파티클 색 모드 — min~max 그라데이션 / 랜덤 무지개. 랜덤일 땐 min/max·선명도 컨트롤 숨김
  • 우측 패널 탭 UI — 파일·트랙 / 비주얼 / 내보내기로 분리, 재생(트랜스포트)은 탭 무관 하단 고정

막힌 부분

  • FPS min/max가 아무것도 안 해도 min 36 / max 93처럼 튀었다 — 순간(단일 프레임) FPS를 min/max로 잡아서, 프레임 간격 지터 한 번과 오버레이 켤 때의 히치 한 프레임이 값을 지배한 것. FPS는 500ms 창 평균으로 재고, 켠 직후 몇 프레임은 워밍업으로 제외해 안정화
  • 광택 슬라이더 드래그 때 work가 6.6ms → 32ms로 튐 — 아틀라스를 매 입력마다 재굽기. 디바운스로 드래그 중엔 안 굽고 멈추면 한 번만 굽게
  • 건반 잔광을 처음엔 색·sheen까지 같이 페이드시켰는데, 원하는 건 발광 글로우만 천천히 사라지는 거라 분리(색·sheen은 즉시 on/off, 글로우만 감쇠)
  • hidden 속성이 안 먹던 문제 — .ctl-rowdisplay:flex[hidden]의 기본 display:none을 덮어써서. .ctl-row[hidden]으로 명시

다음에 할 일

  • 큐(Cue) — 프리셋 + 트리거(파일=시간 자동, 라이브=스페이스·방향키). 실시간 모드와 공통 재사용되게 분리 설계
  • 실시간 연주 모드 (Web MIDI) — 비주얼 엔진은 그대로 두고 노트 입력 소스만 교체
  • 모양별 색 지정, 고화질 인코딩(ffmpeg.wasm), 합성음 피아노틱하게(조사)


Series: 소리꽃 KeyBloom


Suggested Posts