Files
Dansori_EQ/CLAUDE.md
T
eKeerar 117afeec05 Clean up repo: prune non-dev assets, redirect build output, add .gitignore
- Remove old/unneeded material: mockups/, docs/Image (ChatGPT imgs·GIFs),
  character art docs (IMAGE_GEN_*, *.md.old, BRAND_CHARACTERS, CHARACTER_PROFILES),
  asset backups (Characters_OriginalBackup, SourceCandidates),
  unused puppet variants (LeeSoriExtended/Regenerated/Upper/V2/V3), tools/ art scripts
- Keep active assets only: LeeSori + LeeSoriDance puppets, Live2DPreview, Live2DHost, mascot PNGs
- Fix dangling references in kept docs (README, CLAUDE, ARCHITECTURE, TYPOGRAPHY, CHARACTER_UI_INTEGRATION)
- Refresh HANDOFF.md to live state (LeeSoriDance puppet, D:\Project paths)
- Redirect all build output to Build/ via Directory.Build.props (bin+obj)
- Add .gitignore and untrack previously committed bin/obj artifacts

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 12:39:09 +09:00

5.7 KiB

Dansori EQ

말로 빚는 소리. 자연어 AI로 이어폰/헤드폰 EQ를 만들어 Equalizer APO에 적용하는 Windows 앱. 코드 식별자: DansoriEQ · 표시명: Dansori EQ · 경로: C:\Users\ekeer\DansoriEQ


핸드오프 요약 (반드시 먼저 읽기)

이 프로젝트는 설계 + 대량의 선(先)생성 코드가 이미 존재한다. "아직 코드 없음"이 아니다. 이전(토의) 세션에서 핵심 사용자 여정과 부가기능 대부분을 코드 레벨로 배선해 두었고, 다만 아직 한 번도 컴파일/실행되지 않았다. 다음 단계는 빌드 + 실환경 연동이다.

  • 앱은 APO/AI키 없이도 미리보기 모드로 파이프라인이 도는 구조다(생성 config를 파일로 기록).
  • 남은 일은 대부분 실제 빌드/실행 환경이 있어야 진행된다(아래 "다음 세션 첫 작업").

먼저 읽을 순서

  1. README.md — 개요·기능·빌드·구조
  2. docs/PREBUILT.md선생성 파일 목록 + 교체/연결 지점(가장 중요)
  3. docs/DEV_PLAN.md — 마일스톤 M0~M15, 체크박스([x]선구현 / [ ]남음)
  4. docs/SCENARIO.md — 요구사항 + 핵심 사용자 여정(§4.5)
  5. docs/ARCHITECTURE.md — 스택·데이터흐름·DB/AI/APO/공유(.tweq) 스키마
  6. docs/TYPOGRAPHY.md — 폰트 규칙(최소 12·최대 24, 가독성 우선)

다음 세션 첫 작업 (순서)

  1. 솔루션·빌드·테스트
    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
    
  2. 컴파일 오류 수정 — 선생성 코드는 미검증. 특히 WPF 시그니처(EqGraphControl, Win32 P/Invoke), XAML, 패키지(WPF-UI/LiveCharts2는 아직 미추가) 확인.
  3. 실환경 연동
    • APO: 실제 config 쓰기 + 최초 1회 승격(Include+ACL). 지금은 미리보기(NullApoWriter).
    • AI: 실제 키로 프롬프트 루프 검증. provider/model은 AppSettings(AI 관리 화면)에서 선택됨.
    • DB: DesignProfileDbService(스텁) → SqliteProfileDbService로 교체 + 사이드바 바인딩.
  4. 마감(M5/M6): WPF-UI(Fluent/Mica) 테마 + 테마전환, MVVM 바인딩, 헤더 버튼 정리, 패키징/아이콘.

핵심 교체/연결 지점 (dev)

  • DB: SqliteProfileDbService(App/Profiles) — Search()=사이드바, LoadEq(id)=프로파일 base EQ, UpdateAsync=AutoEq zip 다운로드(무겁다 → curated 서브셋 권장).
  • AI: AiProviderFactory.Create(store) 가 provider 생성. 프롬프트창(MainWindow.SendPromptAsync)은 이미 연결.
  • APO: ApoWriterFactory 가 설치 감지 → 실제/미리보기 자동 선택.
  • 크로스피드: ApoRenderer 상단 메모대로 저역통과+딜레이 정식 구현 필요(현재 플레이스홀더).
  • DefaultDeviceSwitcher: IPolicyConfig(undocumented COM) vtable 검증 필요.

절대 제약 (유지)

  • 아름다운 모던 Fluent GUI(단순/텍스트 UI ✗, 웹앱 ✗) · EQ 그래프 포함
  • 저권한: 최초 1회만 승격, 이후 무승격
  • 프로파일 목록 IEM/헤드폰 분리 · 라이선스 배포불가 소스는 배포 빌드 제외(UI엔 병합 표시)
  • AutoEQ 베이스 + 귀로 AI 미세조정(측정 마이크 없음) · DAC/앰프는 EQ 대상 아님
  • API 키는 런타임에 사용자 제공(DPAPI 암호화 저장) · 초보자 친화 최우선

선구현 범위 (코드 레벨 완료, 미컴파일)

  • Core: EQ 수학(RBJ)·모델·ApoRenderer(+이펙트)·PreampCalculator·프리셋(.tweq)· AI(IAiEqProvider·4개 provider·EqDelta(+Effects)·파서·프롬프트/스키마)·스위칭 규칙/평가·AutoEqParser
  • App 창: MainWindow(그래프·AI 프롬프트 실배선·Undo/Reset·바이패스+프리셋전환 핫키·볼륨패널·가변40밴드)
    • Settings/DbManager/Effects/PresetLibrary/Command/ApoSetup/AiManager/SwitchRules/PresetInfo/도움말드로어
  • App 서비스: Apo(추상화+미리보기+installer/setup), Ai(4 provider+factory+계정모델조회+Ollama설치/모델pull), Audio(NAudio 볼륨/출력장치전환·Windows볼륨 양방향 동기화), Switching(앱+장치 감지→프리셋 자동전환, 런타임 리로드), Profiles(SQLite 실저장소+AutoEq import + 디자인 스텁), Security(DPAPI), Input(전역 핫키)
  • 테스트: Filter 수학 / AutoEqParser / PresetSerializer / ApoRenderer 이펙트
  • AI 제어: EQ + 이펙트(크로스피드/밸런스/베이스)를 자연어 한 문장으로 동시 제어

범위 결정 사항

  • 스피커 확장 제외(측정 기반이 정석인데 그 트랙은 안 함).
  • 로컬 AI = Ollama만(무인 자동설치 확실). LM Studio/GPT4All 등은 LocalRuntime.cs 메모의 "추후 테스트 후보".
  • 서라운드/리버브는 향후(M13). .tweq 확장자 유지.

컨텍스트 (왜 이 앱인가)

사용자는 하이엔드 오디오 보유자(iFi Pro iDSD/iCAN Signature, SMSL DO400 등). Luxsin X8의 "AI EQ"에 관심 → X8은 DAC/앰프가 기존 플래그십과 중복이라 비효율 → X8의 AI EQ 경험만 소프트웨어로 재현. 하드웨어 PEQ 역분석(FiiO K13)은 리스크로 폐기 → Equalizer APO + AI(클라우드/로컬) 조합으로 확정.

⚠️ 이 시점에서 남은 것은 대부분 실환경 의존

빌드·컴파일 검증 · APO 실적용 · AI 키/네트워크 · NAudio/Win32/winget/Ollama · SQLite/AutoEq 다운로드 · MVVM 바인딩 · Fluent 테마. 여기서부터는 개발 세션(실행 환경 필요)에서 진행한다.