Scope & privacy
현재 모델의 범위
micarrsim 1.0은 점 음원, 구면 감쇠·분수 지연을 쓰는 자유음장 모델과 conventional
DAS를 제공합니다. 실내 반사·잔향, 실제 마이크 위치 오차와 비선형성, DAMAS,
- CLEAN-SC, DCASE/MIMII 자동 adapter는 현재 범위에 포함되지 않습니다. 결과는 실제
+ CLEAN-SC, DCASE/MIMII 자동 adapter와 실제 192채널 capture stream은 현재 범위에 포함되지 않습니다. 결과는 실제
장비의 절대 성능 보증이 아니라 같은 조건에서 배열을 비교하는 재현 가능한 기준입니다.
diff --git a/index.html b/index.html
index 4d17a8e..58b5c0c 100644
--- a/index.html
+++ b/index.html
@@ -59,7 +59,7 @@
02
Acoustic Camera
-
배열 응답을 계산하고 주파수 대역별 DAS 결과를 ground truth와 비교합니다.
+
배열 응답과 DAS 결과를 비교하고 이동 음원의 acoustic map을 시간축으로 재생합니다.
기본 예제로 바로 실행 →
@@ -72,6 +72,12 @@
Acoustic Camera를 열어 ▶ 기본 예제 실행을 누르고, 완료되면 Result JSON을 저장하세요.
기본 예제 열기 →
+
+ 이동 음원
+ 설정 없이 라이브 재생
+ Camera에서 이동 예제 → 라이브 준비 → 재생만 누르면 됩니다.
+ 이동 예제 열기 →
+
내 데이터
Builder부터 끝까지
diff --git a/packages/acoustics-core/README.md b/packages/acoustics-core/README.md
index 5849d39..140b678 100644
--- a/packages/acoustics-core/README.md
+++ b/packages/acoustics-core/README.md
@@ -8,6 +8,22 @@
- 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가 생기는 회귀 테스트로 이 부호를 고정합니다.
diff --git a/packages/ui/app-shell.css b/packages/ui/app-shell.css
index b5afdcf..5e72f2d 100644
--- a/packages/ui/app-shell.css
+++ b/packages/ui/app-shell.css
@@ -264,7 +264,7 @@ p {
.quick-start-grid {
display: grid;
- grid-template-columns: repeat(2, minmax(0, 1fr));
+ grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
gap: 18px;
margin-top: 18px;
}
diff --git a/schemas/README.md b/schemas/README.md
index 0146be9..74fc09f 100644
--- a/schemas/README.md
+++ b/schemas/README.md
@@ -5,8 +5,8 @@
JSON Schema Draft 2020-12 형식입니다.
- `array.schema.json`: 배열 크기, 좌표계, 마이크 위치와 선택적 보정값
-- `scene.schema.json`: 재현 가능한 음원 recipe, asset 참조와 ground-truth 위치
-- `experiment.schema.json`: scan plane/grid, 주파수 대역, STFT와 DAS 설정
-- `result.schema.json`: raw/display/후처리 map, 복수 peak, 실행 timing과 평가 지표
+- `scene.schema.json`: 재현 가능한 음원 recipe, asset 참조, 정적 위치와 선택적 trajectory
+- `experiment.schema.json`: scan plane/grid, 주파수 대역, STFT/DAS와 peak 검출 임계값
+- `result.schema.json`: raw/display/후처리 map, 복수 peak, 비확률 beam spread, timing과 평가 지표
중복 id, Nyquist, 시간 구간과 참조 무결성은 `packages/contracts/validation.js`에서 추가로 검증합니다.
diff --git a/tests/integration/README.md b/tests/integration/README.md
index 7866dc9..dd0ebf9 100644
--- a/tests/integration/README.md
+++ b/tests/integration/README.md
@@ -4,9 +4,11 @@
## 실행
-1. 저장소의 `start.cmd`를 실행합니다.
-2. 최신 Edge 또는 Chrome에서 을 엽니다.
-3. 모든 항목이 끝날 때까지 페이지를 열어 둡니다.
+가장 간단한 자동 실행은 저장소 루트의 `test.cmd`입니다. 임시 local server와 headless Edge/Chrome을
+실행하고 전체 browser suite가 끝나면 결과에 맞는 process exit code를 반환합니다.
+
+수동 확인은 `start.cmd`를 실행한 뒤 최신 Edge 또는 Chrome에서
+을 열고 모든 항목이 끝날 때까지 페이지를 유지합니다.
Unit과 integration test가 같은 페이지에서 실행됩니다. WebGPU 장치 초기화와 192채널 baseline은
수 초 이상 걸릴 수 있습니다. 페이지 제목과 요약이 `PASS`인지 확인하고 실패 항목의 stack을
@@ -19,8 +21,9 @@ Unit과 integration test가 같은 페이지에서 실행됩니다. WebGPU 장
adapter가 없으면 Auto CPU fallback
- `server.test.js`: 숨김 저장소 경로 차단, GET/HEAD 제한과 보안 response headers
- `builder-ui.test.js`: 파일 선택 한 번으로 오디오 음원 생성, 이미지·오디오 연결, canvas 편집,
- Preview WAV/Scene 다운로드, SHA 재연결과 잘못된 import 보존
-- `camera-ui.test.js`: Dedicated Worker CPU/WebGPU 실행, 취소, Result schema, rectangular/Fermat 비교
+ trajectory keyframe 편집, Preview WAV/Scene 다운로드, SHA 재연결과 잘못된 import 보존
+- `camera-ui.test.js`: Dedicated Worker CPU/WebGPU 실행, 취소, Result schema, rectangular/Fermat 비교;
+ 이동 예제 로드, 8×8 CPU·2 Hz live map 준비, 복수 frame, scrub, 재생 시간 증가와 일시정지
- `workflow-ui.test.js`: Dataset Builder의 Scene JSON과 원본 assets를 Acoustic Camera에 넘겨
Result JSON을 저장하는 end-to-end 흐름
diff --git a/tests/unit/README.md b/tests/unit/README.md
index 432b40c..7898684 100644
--- a/tests/unit/README.md
+++ b/tests/unit/README.md
@@ -5,9 +5,11 @@
## 실행
-1. 저장소의 `start.cmd`를 실행합니다.
-2. 최신 Edge 또는 Chrome에서 을 엽니다.
-3. 페이지 상단의 통과/실패 합계와 각 테스트 결과를 확인합니다.
+가장 간단한 자동 실행은 저장소 루트의 `test.cmd`입니다. 임시 local server와 headless Edge/Chrome을
+실행하고 결과에 맞는 process exit code를 반환합니다.
+
+수동 확인은 `start.cmd`를 실행한 뒤 최신 Edge 또는 Chrome에서
+을 열어 페이지 상단의 통과/실패 합계와 각 결과를 확인합니다.
Unit과 integration module은 같은 browser runner에서 순서대로 실행됩니다. 다시 실행하려면 페이지를
새로 고치세요. 다른 포트를 사용했다면 URL의 포트도 바꾸며, `tests/index.html`을 파일로 직접 열면
@@ -15,11 +17,13 @@ Unit과 integration module은 같은 browser runner에서 순서대로 실행됩
## 범위
-- `contracts.test.js`: Array·Scene·Experiment·Result schema, 관계 검증, 안전한 asset 경로와 fixture
-- `acoustics.test.js`: seed 재현성, mix/정규화, 자유음장 전파, calibration, STFT와 CPU DAS
-- `builder.test.js`: Builder scene model, source/asset 조작, 오디오 크기와 WAV 사전 검증
-- `evaluation.test.js`: local peak, truth matching, 위치 오차, energy, sidelobe와 main-lobe 지표
-- `camera.test.js`: canonical input hash, workload 추정, 거리 이동, Result 생성과 schema 검증
+- `contracts.test.js`: Array·Scene·Experiment·Result schema, 관계 검증, 안전한 asset 경로와 이동 fixture
+- `acoustics.test.js`: seed 재현성, 자유음장 전파, trajectory 보간, sample 정렬 시간창과
+ tone/noise/asset 절대 시간 연속성, calibration, STFT와 CPU DAS
+- `builder.test.js`: Builder scene model, source/asset·trajectory 조작, 오디오 크기와 WAV 사전 검증
+- `evaluation.test.js`: local peak와 검출 감도, truth matching, energy/sidelobe/main-lobe 및 비확률적
+ beam-spread covariance ellipse
+- `camera.test.js`: canonical input hash, workload 추정, 이동 timeline 계획·재생 보간, Result schema 검증
- `webgpu.test.js`: WGSL buffer packing, bin/point batching, 장치 한계와 typed CPU fallback 정책
WebGPU unit test 대부분은 실제 GPU 없이 planner와 binary layout을 검증합니다. 실제 GPU 수치 일치는