parksy-audio 개발 현황 리포트

최종 업데이트: 2026-02-07

레포: https://github.com/dtslib1979/parksy-audio (Private)

부모: dtslib-papyrus (Tier 2, inherit: strict)


프로젝트 포지션 전환

Before (v1.0 — 2025-12 ~ 2026-01)

AIVA 워크플로우용 통합 오디오 도구 (Capture/Trim/Convert/Batch)

After (Mini-DAW — 2026-02~)

Parksy Mini-DAW: One-Cycle Audio Production System

CUT → MIDI → RENDER 통합 파이프라인. 실시간 DAW 완전 배제.

항목정의
목적기존 오디오에서 구간 컷 → MIDI 근사 변환 → 상용 음원 엔진으로 고음질 WAV 생산
포지션연출용 음원 생산 파이프라인 (작곡 툴 ❌, 실시간 DAW ❌)
핵심 철학사이클은 하나. 한 번 돌리면 결과가 나온다
품질 목표전공자 5% 제외, 95% 통과

기본 정보

항목
기본 브랜치main
생성일2025-12-21
공개 여부Private
감사 점수72/100 (B+)
최신 커밋`a9fdb8e` (2026-02-07)

Mini-DAW 아키텍처

[PWA (GitHub Pages)]          ← Phase 2
        |
        |  HTTP (Local / VPN)
        v
[Local Agent (Python, PC)]    ← Phase 1 (NOW)
        |
        |-- ffmpeg (Audio Cut)
        |-- basic-pitch (WAV → MIDI)
        |-- MIDI Clean / Merge     ← Phase 2
        |-- Render Engine          ← 스텁 완료
        |     ├── Pianoteq (CLI)         ← Phase 1: 피아노/재즈/보사
        |     ├── BBC SO Discover + REAPER (CLI) ← Phase 2~3: 오케스트라/스트링
        |     └── FluidSynth (dev/테스트)
        v
[Output WAV 48kHz / 24bit]
        |
        v
[FFmpeg 그라데이션 MP4]        ← Phase 2
        |
        v
[YouTube Upload]               ← Phase 2

Dual-Track MIDI 전략

MIDI 출처가 달라도 파이프라인은 동일.

Track A (Extract): WAV → basic-pitch → MIDI (근사치 60~75점)
Track B (Curated):  구매/선별 퍼블릭도메인 MIDI (85~95점)
                          ↓
                    clean_midi.py
                          ↓
                    render (Kontakt / Pianoteq)
                          ↓
                    WAV 48kHz / 24bit

렌더 엔진 전략 (확정)

엔진용도CLI 렌더Phase비용
**Pianoteq**피아노/재즈/보사✅ `--midi --wav`1 (지금)보유 중
**BBC SO Discover + REAPER**오케스트라/스트링/추모/다큐✅ `reaper -renderproject`2~3둘 다 무료
FluidSynth개발/테스트 전용✅ `-F output.wav`-무료

BBC SO Discover는 VST 플러그인이라 단독 CLI 렌더 불가.

REAPER가 VST 호스트 + CLI 배치 렌더 역할을 한다.

Pianoteq는 CLI 네이티브 지원이라 REAPER 없이 바로 동작.

장르 매핑

장르엔진라이브러리
피아노 솔로Pianoteq내장
재즈/보사Pianoteq내장
오케스트라REAPER + BBC SODiscover (무료)
추모/다큐 BGMREAPER + BBC SODiscover (무료)
뉴에이지/앰비언트REAPER + BBC SO스트링 패드

확장 경로

BBC SO Discover (무료, 지금)
       ↓ (MIDI/코드 변경 없이 교체)
BBC SO Core ($449)
       ↓
BBC SO Pro ($949)

지금 작업 = 미래 자산. 업그레이드 시 렌더만 다시 돌리면 끝.


레포지토리 구조 (현재)

parksy-audio/
├── .github/workflows/
│   ├── build-apk.yml              # APK 빌드 자동화
│   ├── deploy-pages.yml           # GitHub Pages 배포
│   └── update-manifest.yml        # 에셋 매니페스트 자동 갱신
│
├── 00_TRUTH/
│   ├── _inherit.json              # 상속 (parent: dtslib-papyrus)
│   └── index.md
│
├── local-agent/                   # ★★★ Mini-DAW 핵심 (NEW)
│   ├── server.py                  # FastAPI 6 endpoints
│   ├── audio_cut.py               # ffmpeg CUT (기존 cli.py에서 이관)
│   ├── extract_midi.py            # basic-pitch WAV→MIDI (이관)
│   ├── render.py                  # Pianoteq/FluidSynth 오프라인 렌더 (NEW)
│   ├── config.py                  # 경로/설정 통합
│   ├── requirements.txt           # fastapi, uvicorn, basic-pitch, mido
│   ├── README.md                  # PC 실행 가이드
│   └── .gitignore                 # sources/, outputs/, .venv/ 제외
│
├── app/                           # Flutter 앱 (v1.0 레거시)
│   └── (Android/iOS/Web/Desktop)
│
├── assets/
│   └── manifest.json              # OrbitPrompt 연동 에셋
│
├── docs/                          # GitHub Pages
│   ├── index.html                 # 퍼블릭 랜딩
│   ├── office/index.html          # Secret Office (PIN: 1126)
│   ├── releases/                  # APK 배포
│   ├── DEV_STATUS.md              # 이 문서
│   ├── AUDIT_REPORT.md
│   └── MANUAL.md
│
├── local-engine/                  # v1.0 레거시 CLI (리팩 원본)
│   └── parksy_audio/cli.py        # → local-agent/로 이관 완료
│
├── server/                        # v1.0 레거시 Cloud Run API (리팩 원본)
│   └── app/main.py                # → local-agent/server.py로 이관 완료
│
├── releases/                      # 에셋 릴리스 (bgm/sfx — 비어있음)
├── scripts/update-manifest.js     # 매니페스트 자동 갱신
├── test-samples/                  # MIDI/MP3 테스트 샘플
├── CLAUDE.md
└── README.md

Local Agent API 스펙 (6 endpoints)

MethodPath설명상태
GET`/health`서버 생존 확인
GET`/status`ffmpeg/basic-pitch/pianoteq/fluidsynth 사용 가능 여부
GET`/files?dir=`소스 폴더 오디오 파일 목록
POST`/cut`ffmpeg로 구간 잘라 WAV 생성
POST`/extract-midi`basic-pitch로 MIDI 변환
POST`/render`Pianoteq/FluidSynth 오프라인 렌더 → WAV

실행 방법 (PC)

cd parksy-audio/local-agent
python -m venv .venv && .venv\Scripts\activate
pip install -r requirements.txt
uvicorn server:app --host 0.0.0.0 --port 8787 --reload

풀사이클 테스트 (PC)

# 1. CUT
curl -X POST http://localhost:8787/cut \
  -H "Content-Type: application/json" \
  -d '{"input_path": "C:/Music/source.wav", "ss": "00:12:30", "to": "00:15:10"}'

# 2. MIDI 추출
curl -X POST http://localhost:8787/extract-midi \
  -H "Content-Type: application/json" \
  -d '{"clip_path": "outputs/clips/.wav"}'

# 3. RENDER (Cubase 안 켠다)
curl -X POST http://localhost:8787/render \
  -H "Content-Type: application/json" \
  -d '{"midi_path": "outputs/midi/.mid"}'

코드 이관 맵 (v1.0 → Mini-DAW)

기존 위치새 위치내용
`server/app/main.py``local-agent/server.py`FastAPI 서버 (CORS, 라우팅)
`local-engine/cli.py` → `trim()`, `run_ffmpeg()``local-agent/audio_cut.py`ffmpeg 컷/트림
`local-engine/cli.py` → `convert()` + `server/main.py``local-agent/extract_midi.py`basic-pitch 변환
(신규)`local-agent/render.py`Pianoteq/FluidSynth 오프라인 렌더
(신규)`local-agent/config.py`경로/설정 통합

`local-engine/`과 `server/`는 아직 삭제하지 않음. PC 검증 후 정리 예정.


음원 퍼블리싱 전략

제작 원칙