# 실측 대조 절차 — CAA vs REW

`caa-validate`(65항목)와 `rew_compare.py`는 **정답을 아는 신호**로 계산이 맞는지만 확인합니다.
마이크·인터페이스·차량이 낀 진짜 측정에 대해서는 아무것도 증명하지 못합니다.
이 문서는 그 마지막 한 칸을 채우는 절차입니다 — **같은 마이크로, 같은 자리에서, 같은 스피커를
CAA와 REW로 한 번씩 재고 두 곡선을 겹쳐 봅니다.**

결과는 `field_compare.py`가 표·JSON·SVG로 만들어 줍니다.

---

## 준비물

- 측정 마이크 1개 (UMIK-1 등) — **두 측정에 같은 마이크, 같은 위치**
- 오디오 인터페이스 1개 — 두 프로그램 모두 같은 장치·같은 샘플레이트
- REW V5.40 이상 (API 지원 버전)
- Python 3 + numpy

## 절차

### 1. 물리 세팅 (여기가 제일 중요합니다)

- 마이크를 삼각대나 헤드레스트에 **고정**합니다. 두 측정 사이에 마이크가 움직이면
  그 차이가 그대로 오차로 나옵니다. 손으로 들지 마세요.
- 사람이 타고 내리면 실내 음향이 바뀝니다. 두 측정 모두 문을 닫고, 사람은 같은 자세로 있거나
  모두 내린 상태로 통일합니다.
- 공조·엔진·와이퍼는 끕니다.
- 한 채널만 냅니다(예: 프론트 좌측 미드). 여러 유닛이 동시에 울면 무엇을 비교하는지 알 수 없습니다.
- 두 프로그램의 **샘플레이트를 같게** 맞춥니다(권장 48 kHz).

### 2. CAA에서 측정

1. Device에서 인터페이스와 마이크 채널을 고릅니다.
2. Time Alignment에서 그 채널 하나만 측정합니다(스윕).
3. Save & Report → 세션을 `.caa`로 저장합니다. 예: `runA.caa`

### 3. REW에서 같은 것을 측정

1. 마이크를 **그대로 둔 채** REW를 엽니다.
2. 같은 채널을 스윕으로 측정합니다.
3. 창을 닫지 말고 그대로 둡니다.

REW를 API가 켜진 상태로 실행해야 스크립트가 값을 읽어 옵니다:

```
"C:\Program Files\REW\roomeqwizard.exe" -api
```

(이미 켜져 있었다면 껐다가 위 명령으로 다시 켜고, 측정을 다시 하거나 `.mdat`를 불러오면 됩니다.)

### 4. 대조

```bash
python Tools/Validate/field_compare.py --caa runA.caa
```

주요 옵션:

| 옵션 | 뜻 |
|---|---|
| `--channel 이름` | `.caa` 안의 어느 채널인지 (기본: 첫 번째) |
| `--rew 번호\|이름` | REW의 어느 측정인지 (기본: 선택된 것) |
| `--band 30 16000` | 비교할 구간 (기본 30 Hz ~ 16 kHz) |
| `--measure` | REW에게 지금 스윕을 시킵니다 — **소리가 납니다** |
| `--out 폴더` | 결과 파일 위치 |

나오는 것:

- 콘솔에 1/3 옥타브 표
- `field-compare.svg` — 두 곡선을 겹친 그래프와 아래쪽 차이 곡선
- `field-compare.json` — 평균/최대 편차 등 숫자

---

## 읽는 법

스크립트는 **레벨 상수 하나만** 빼고 비교합니다(두 프로그램이 절대 음압까지 맞을 이유는
같은 기준으로 교정하지 않는 한 없기 때문입니다). 그래서 남는 것은 **곡선의 모양** 차이입니다.

| 평균 \|차이\| | 해석 |
|---|---|
| 0.5 dB 이하 | 두 도구가 사실상 같은 것을 보고 있습니다. 정상입니다. |
| 0.5 ~ 1.5 dB | 대개 마이크가 움직였거나, 창(window) 설정이 다르거나, 배경소음이 큽니다. 아래를 확인하세요. |
| 1.5 dB 이상 | 세팅이 어긋났다고 보는 편이 맞습니다. 같은 채널을 잰 게 맞는지부터 확인하세요. |

**차이가 클 때 의심할 순서**

1. **마이크가 움직였다** — 가장 흔합니다. 1 cm만 옮겨도 고역은 몇 dB씩 바뀝니다.
2. **저역(100 Hz 아래)만 다르다** — 두 프로그램의 IR 창 길이가 다릅니다. REW의 IR windows와
   CAA의 캡처 길이를 맞추거나, `--band 100 16000`으로 창의 영향이 적은 구간만 비교하세요.
3. **고역(8 kHz 위)만 다르다** — 마이크 보정 파일이 한쪽에만 적용돼 있을 수 있습니다.
   둘 다 적용하거나 둘 다 빼고 비교하세요.
4. **전 대역이 들쭉날쭉하다** — 배경소음이 큽니다. 출력을 6 dB 올리고 다시 재세요.
5. **차이 곡선이 주파수에 따라 규칙적으로 진동한다** — 두 측정의 시간 창 시작점이 다릅니다.
   REW에서 `Estimate IR delay` 후 `Offset t=0`을 적용하고 다시 읽어 보세요.

---

## 도구 사슬 자체의 오차

같은 임펄스 응답 파일을 CAA 세션과 REW에 각각 넣고 이 스크립트로 비교하면
**평균 0.01 dB, 최대 0.05 dB(16 kHz)** 가 나옵니다. 즉 이 대조 방법 자체가 만드는 오차는
0.05 dB 수준이고, 실측에서 그보다 큰 차이가 나오면 그것은 도구가 아니라 **측정 조건**입니다.

이 수치는 `Tools/Validate/rew_results.json`을 만든 것과 같은 LR4 2.5 kHz 기준 파일로 확인했습니다.
