오디오 / 음악 전환
탐험과 전투를 오가며 이벤트·예약·실제 음악의 시각을 비교하세요.
템포·구성을 바꾸면 시계와 예약을 초기화합니다. 정지는 소리·예약·시계를 함께 초기화합니다.
‘마디 0.10초 전’ → ‘전투’를 누르세요. 준비 여유 0.15초 때문에 바로 앞 마디를 놓칩니다. 이어 ‘탐험’을 누르고 예약 취소 여부를 비교하세요.
게임 이벤트의 시각과 음악의 허용 진입점은 다릅니다. 같은 순간 Play 명령을 보내는 것만으로 음악 구조가 연결되지는 않습니다. 화면 갱신과 오디오 시계도 분리됩니다.
한 마디 T=4×60/BPM. 다음 마디는 ceil((현재 시각+예약 여유)/T)×T입니다. 120 BPM에서 3.90초+0.15초면 4초를 놓쳐 6초에 들어갑니다. 이 계산은 자체 스케줄 정책이며 Web Audio의 강제 규칙은 아닙니다.
레이어 방식은 공통 박자 위치에서 베이스·선율·리듬을 조합합니다. 구간 방식은 새 구간의 첫 박으로 바꿉니다. 즉시 구간 전환은 마디 중간에 리듬을 재시작하므로 연결이 달라집니다.
게임이 탐험으로 돌아왔는데 전투 예약을 남겨 두면 뒤늦게 전투 음악이 실행됩니다. 예약 ID를 취소하면서 미리 예약한 합성음도 중단합니다. 다음 마디를 기다리면 반응이 늦어져 짧은 반응음으로 보완할 수 있습니다.
자작 3개 합성 악기를 AudioContext.currentTime에 예약합니다. 화면 갱신 옵션은 UI만 늦춥니다. 메인 스레드를 실제로 막는 부하·장치 출력 지연·화성 연결 품질은 측정하지 않습니다. 무음 ¼박 진행은 같은 예약 상태를 계산합니다. 음파 위상의 일치를 뜻하지 않습니다.