# Dansori EQ

> **말로 빚는 소리.** 이어폰·헤드폰에 딱 맞는 EQ를, 자연어로 만드는 Windows 앱.
> Equalizer APO 위에서 동작하며, AI가 "보컬 가까이 · 저음 단단히" 같은 문장을 파라메트릭 EQ로 바꿔 즉시 적용합니다.

코드 식별자: `DansoriEQ` · 표시명: **Dansori EQ**

---

## 이게 뭔가요
Luxsin X8의 "AI EQ" 경험을 **소프트웨어로 재현**한 도구입니다. DAC/앰프를 새로 사지 않고, **PC의 Equalizer APO** 를 통해 소리를 보정합니다.
- **AutoEQ 프로파일**을 베이스로 로드하고, 그 위에 **AI가 취향(델타)** 을 얹습니다.
- 클라우드 AI(Claude/ChatGPT/Gemini)뿐 아니라 **로컬 AI(Ollama, 오프라인)** 도 선택 가능.
- 만든 EQ는 `.tweq` 파일로 **공유**하고, 받은 사람은 **불러와서 재편집**할 수 있습니다.

> DAC/앰프는 EQ 대상이 아닙니다(주파수 응답이 평탄). 유효 변수는 **트랜스듀서(이어폰/헤드폰) + 귀 + 취향** 입니다.

## 주요 기능
- 🎙 **자연어 AI EQ** — "치찰음 줄여줘", "따뜻하게" → 파라메트릭 EQ 생성·적용·설명
- 📊 **인터랙티브 그래프** — 드래그(Fc/Gain)·휠(Q)·더블클릭 추가·우클릭 삭제, **가변 밴드(최대 40)**
- 🎚 **이펙트** — 크로스피드·좌우 밸런스·베이스 부스트
- 📚 **프리셋 라이브러리 + 공유(.tweq)** — 저장·전환·내보내기/가져오기(대상 기기·AI 히스토리 포함)
- 🔀 **앱/장치 자동 전환** — 게임 실행 시 게이밍 프리셋 등
- ⌨ **핫키** — Ctrl+Alt+B(바이패스), Ctrl+Alt+[ / ](프리셋 전환)
- 🔊 **볼륨/출력장치 제어** — 그래프 옆에서 Windows 볼륨과 동기화, 출력장치 전환
- 🧩 **AI 관리** — 로컬 런타임(Ollama) 자동설치·모델 다운로드·계정 모델 선택·저장공간 안내
- ❓ **온보딩 도움말** — 오른쪽 슬라이드 패널 + API 키 발급 공식 링크

## 동작 원리
```
기기 선택 → 베이스 EQ 로드
   → 자연어 입력 → AI(클라우드/로컬) → EqDelta(JSON)
   → 그래프/이펙트 반영 → APO config 렌더 → Equalizer APO 라이브 리로드
```

## 기술 스택
.NET 8 · WPF · (WPF-UI Fluent 예정) · 커스텀 그래프 컨트롤 · SQLite(Microsoft.Data.Sqlite) · NAudio(볼륨/장치) · DPAPI(키 암호화) · Anthropic/OpenAI/Gemini/Ollama REST

## 프로젝트 구조
```
DansoriEQ/
├─ src/DansoriEQ.Core/     # 순수 로직(EQ 수학·모델·APO 렌더·AI 스키마·프리셋·스위칭)
├─ src/DansoriEQ.App/      # WPF 앱(창·컨트롤·서비스: Apo/Ai/Audio/Switching/Profiles …)
├─ tests/DansoriEQ.Core.Tests/  # 단위테스트(Filter 수학·파서·직렬화·이펙트 렌더)
└─ docs/                   # SCENARIO / ARCHITECTURE / DEV_PLAN / HANDOFF / TYPOGRAPHY / PREBUILT
```

## 빌드 & 실행 (개발 세션)
```powershell
dotnet new sln -n DansoriEQ
dotnet sln add src/DansoriEQ.Core/DansoriEQ.Core.csproj
dotnet sln add src/DansoriEQ.App/DansoriEQ.App.csproj
dotnet sln add tests/DansoriEQ.Core.Tests/DansoriEQ.Core.Tests.csproj
dotnet restore
dotnet build
dotnet test
dotnet run --project src/DansoriEQ.App
```
- APO 미설치 PC에서도 **미리보기 모드**로 실행됩니다(생성된 config를 `%LOCALAPPDATA%\DansoriEQ\preview_apo_config.txt`에 기록).
- 실제 적용하려면 Equalizer APO 설치 후 `config.txt`에 `Include: ai_eq.txt` 연결(앱의 최초 설정에서 안내).

## 상태
**설계 + 선(先)생성 코드 단계.** 대부분의 화면·서비스·로직이 작성되어 있으나 **아직 컴파일 검증 전**입니다.
남은 작업(실환경 연동·MVVM 바인딩·Fluent 테마·마감)은 `docs/DEV_PLAN.md`, 선생성 목록은 `docs/PREBUILT.md` 참조.

## 문서
- `docs/SCENARIO.md` — 요구사항/핵심 사용자 여정
- `docs/ARCHITECTURE.md` — 스택·데이터 흐름·DB/AI/APO/공유 스키마
- `docs/DEV_PLAN.md` — 마일스톤·잔여 작업
- `docs/TYPOGRAPHY.md` — 타이포그래피 규칙(가독성 우선)
- `docs/PREBUILT.md` — 선생성 코드 목록·교체 지점

## 라이선스
미정(TBD). AutoEQ 등 측정 데이터는 각 출처 라이선스를 따르며, 배포 불가 소스는 배포 빌드에서 제외합니다(`--exclude-restricted`).
