# Acoustics Core 두 앱이 공유하는 무의존성 수치 기준 구현입니다. - 결정적 tone/white/pink noise 및 오디오 asset resampling - 자유음장 점 음원의 `delay = r / c`, `amplitude = 1 / r` 구면 전파 - zero-padded FFT phase shift 기반 fractional sample delay - radix-2 FFT, Hann STFT와 선택 bin 추출 - scan grid 거리 cache 및 conventional frequency-domain DAS ## 이동 음원과 분석 시간창 `sourcePositionAtTime`은 scene 시작 기준의 절대 시각에서 trajectory keyframe 사이를 선형 보간하며, 경로 범위 밖에서는 가장 가까운 끝점 위치를 유지합니다. `sampleQuasiStaticWindow`는 요청 경계를 sample 경계로 올림 정렬하고, 시간창 중앙의 위치에서 이동 음원을 정지한 것으로 근사합니다. 시간창은 활성 source만 잘라 짧은 Scene으로 만들지만 `signalOffsets`에 원래 scene/source의 절대 sample offset을 보존합니다. 이를 `synthesizeMicrophoneSignals`에 전달하면 각 창을 따로 합성해도 tone phase, seed 기반 noise index, audio asset 재생 위치와 ambient가 전체 timeline 합성과 연속됩니다. ## Beam spread 의미 Peak의 `beamSpread`는 half-power 연결 성분을 power 가중한 공간 covariance(`covarianceM2`, m²)와 그 RMS 주축 ellipse로 요약한 빔 폭입니다. 가우시안 확률 모델, 위치 확률 또는 신뢰구간으로 보정된 값이 아니며 `calibrated: false`를 유지합니다. FFT는 `X[k] = Σ x[n] exp(-j2πkn/N)` 규약을 사용합니다. 마이크 신호의 전파 phase `exp(-j2πfr/c)`를 정렬하기 위해 DAS steering은 `exp(+j2πfr/c)`를 곱합니다. 단일 tone의 ground-truth 위치에서 peak가 생기는 회귀 테스트로 이 부호를 고정합니다. 마이크 `sensitivityDb`와 `phaseOffsetDeg`는 수신 channel에 편차로 적용하고, DAS에서는 알려진 calibration 값의 역 gain/phase로 보정합니다. raw power map과 표시용 normalized map은 서로 다른 buffer로 보존합니다. bin spectrum은 제한된 batch로 처리하며 point batch 사이에서 event loop를 양보해 진행 callback과 `AbortSignal` 취소가 동작합니다. 현재 전파 모델은 자유음장·무지향성 점 음원이며 잔향은 포함하지 않습니다. 전체 signal을 메모리에 보관하는 CPU 기준 구현이므로 source/channel과 delay FFT working set을 512 MiB로 제한합니다. 장시간 입력은 이후 chunk/STFT streaming backend에서 지원합니다. 192채널·50×50 fixture는 브라우저 통합 테스트에서 실제 합성부터 DAS peak 검출까지 실행합니다.