MVP v1.0

시스템 개요

가수의 음성 지문(Pitch · Style)을 분석하여 ① 기존 데모곡과의 매칭과 ② 신곡 제작 조건 자동 생성을 동시에 수행합니다.
MVP 원칙 — 빠르게 런칭하고, 수정하며 발전시킵니다.

🔍 매칭 시스템

기존 데모곡 DB와 가수 프로필을 비교하여 적합도를 자동 판단합니다.

L1 음역 필터 → L2 스타일 랭킹

📋 4-View 명세서

가수 프로필을 4종의 수신자별 형식으로 자동 변환하여 출력합니다.

작곡가 · Suno 프롬프트 · A&R · 가수 본인
데이터 파이프라인
입력
가수 음원
음원 분리
Demucs
피치 추출
RMVPE
프로필 저장
JSON → Supabase
출력
매칭 + 4-View
MVP 범위
✅ MVP에 포함
Pitch Profile (Range · Tessitura · Ceiling)
Style Profile (비브라토 · 슬라이드 · 프레이징)
L1 음역 필터 + L2 스타일 랭킹
4-View 출력 (작곡가 · Suno · A&R · 가수)
가수 JSON + 데모곡 JSON → Supabase
❌ 나중에 (고급 기능)
Vocal Dose
버전 태그 (데뷔기 / 전성기 / 현재)
민감도 분석 (Demucs vs Spleeter)
L3 음색 타이브레이커
장르 모드별 분리 저장

기술 스택

개발 · 버전관리 · 배포 · 데이터를 각각 최적의 도구로 분리합니다.

전체 워크플로우
코드 작성
Firebase Studio
버전 관리
GitHub
자동 배포
Cloudflare Pages
보컬 분석
로컬 PC
JSON 생성
Python 스크립트
DB 저장
Supabase
화면 표시
Cloudflare Pages
코드 작성
🔥 Firebase Studio
클라우드 기반 개발 환경. 브라우저에서 코드 작성 · GitHub 연동 · AI 코딩 지원
버전 관리
🐙 GitHub
코드 버전 관리. Cloudflare Pages와 연동하여 push 시 자동 배포
프론트엔드 배포
☁️ Cloudflare Pages
HTML 대시보드 호스팅. GitHub 연동 자동 배포. demomatching.pages.dev
데이터베이스 + 스토리지
⚡ Supabase
가수 프로필 JSON · 데모곡 프로필 JSON · 음원 파일 저장. 무료 티어로 시작
보컬 분석 (로컬)
🎵 Demucs + RMVPE
Applio 환경 재활용. 음원 분리 → 피치 추출 → JSON 생성. 학습 불필요, 추론만
분석 스크립트
🐍 Python
보컬 분석 파이프라인. 분위수 계산 → JSON 생성 → Supabase 자동 업로드
새 가수 추가할 때 업데이트 흐름
1
로컬 PC에서 음원 준비 → Python 스크립트 실행
2
Demucs + RMVPE 자동 실행 → singer_이름.json 생성
3
Supabase에 자동 업로드 → 대시보드 즉시 반영. 끝.

매칭 시스템

가수 프로필과 데모곡을 2단계 레이어로 비교합니다. L1에서 탈락한 곡은 L2 없이 즉시 제외됩니다.
MVP: L1 + L2만 구현합니다.

L1 하드 게이팅

음역 필터 — 물리적 한계선 먼저 차단

가수의 Range와 곡의 음역을 비교합니다. 여기서 탈락하면 스타일이 아무리 좋아도 제외됩니다.

통과 조건곡 음역의 90% 이상이 가수 Range (q5~q95) 내에 포함
Ceiling 체크곡 최고음 ≤ 가수 Ceiling (q95) − 0.5 반음
탈락 시키 변경 시뮬레이션 → ±2반음 조정 가능 시 보조 정보로 표시
L2 스타일 랭킹

스타일 유사도 점수화

L1을 통과한 곡들을 스타일 벡터 유사도로 정렬합니다. 알고리즘: 코사인 유사도 + DTW.

비브라토Rate (Hz) · Extent (cent) · Onset Delay
슬라이드Slope (semitone/s) · Prevalence (%)
프레이징Onset Rate · Silence Ratio
최종 매칭 점수 = (L1 통과) × L2 스타일 유사도
출력: Top-K 랭킹 + 자연어 이유 + 키 변경 제안 (해당 시)

데이터 스키마

Supabase에 저장되는 두 가지 JSON 구조입니다. MVP 기준으로 필수 필드만 포함합니다.

가수 프로필 — singer_이름.json
{
  "singer_id":   "unique_uuid",
  "name":        "아이유",
  "updated_at":  "2024-02-18",

  "pitch_profile": {        // 필수 — 항상 활성화
    "range_hz":     [196.0, 554.4],  // q5 ~ q95
    "tessitura_hz": [261.6, 392.0],  // q25 ~ q75
    "ceiling_hz":   523.3           // q95
  },

  "style_profile": {        // 조건부 활성화
    "vibrato": {
      "rate_hz":        5.2,
      "extent_cent":    45,
      "onset_delay_ms": 320
    },
    "slide": {
      "slope_st_per_s": 8.1,
      "prevalence_pct": 28
    },
    "phrasing": {
      "onset_rate_bpm": 4.2,
      "silence_ratio":  0.18
    }
  }
}
데모곡 프로필 — song_곡명.json
{
  "song_id":    "unique_uuid",
  "title":      "블루밍",
  "artist":     "아이유",
  "genre":      "ballad",

  "pitch_profile": {
    "melody_range_hz":   [220.0, 523.3],
    "chorus_ceiling_hz": 493.9
  },

  "style_tags": {
    "vibrato_recommended": true,
    "slide_prevalence":    "medium"
  },

  "audio_url":  "supabase_storage_url",  // 음원 파일
  "key_center": "C"
}

4-View 출력 엔진

동일한 가수 프로필에서 수신자별로 최적화된 4종의 출력을 동시 생성합니다.

작곡가용 — 언어 명세서

작곡 시작 전 참조하는 설계 지침서입니다.

[ 멜로디 배치 조건 ]
• 핵심 멜로디 라인의 70% 이상을 Tessitura (C4~G4) 내에 배치할 것
• 코러스 최고음은 B♭4 이하를 유지할 것

[ 창법 조건 ]
• 슬라이드 습관 (28%) 고려 — 버스 구간 3도 이상 도약 연속 3회 금지
• 비브라토 자연 발생 구간 (장음 320ms 이후)에 안정 포인트 배치

[ 구조 조건 ]
• 브릿지 고음 지속은 4마디 이내 제한
• 전조 시 Ceiling (B♭4) 초과 여부 재확인 필수
Suno 프롬프트 — 바로 붙여넣기용

가수 프로필을 Suno가 이해하는 자연어 프롬프트로 자동 변환합니다.

[ 생성된 Suno 프롬프트 ]

soft emotional ballad, warm mid-range female vocals,
melody centered in comfortable range C4 to G4,
no high belting above B♭4, gentle natural vibrato,
smooth legato phrasing, occasional pitch slides,
intimate and melancholic mood, lush orchestral arrangement
💡 Suno 프롬프트 DB를 별도 구축하여, 가수 조건 → 검증된 프롬프트 조합을 참조하는 방식으로 고도화 예정
A&R용 — 신호등 대시보드
발라드 적합도
🟢
안정
테시투라 일치율 94%
리스크 플래그
🟡
브릿지 최고음 주의
B♭4 Ceiling 근접
R&B 적합도
🟢
추천
슬라이드·프레이징 유사도 0.87
댄스 적합도
🔴
키 조정 필요
코러스 고음 과부하 예상
자동 리포트

황금 구역(C4~G4)이 곡의 핵심 멜로디(D4~F4)와 92% 일치
브릿지 B♭4 지속음 Power Zone 초과 → 반음 낮추거나 A4로 수정 권장 ⚠️
가수 본인용 — 셀프 인식 리포트
🎤 나의 음성 프로필

내 황금 구역은 C4 ~ G4 입니다.

📋 곡 받을 때 체크리스트
✅ 후렴 최고음 B♭4 이하 → 안정
⚠️ B♭4 ~ C5 → 컨디션 확인 후 도전
❌ C5 초과 → 키 조정 요청

💪 연습 포인트
브릿지 진입 전 성대 워밍업 필수
급격한 도약 구간에서 슬라이드 의식적 제어 연습

개발 로드맵

빠르게 런칭하고 수정하며 발전시킵니다. 처음부터 완벽하게 만들지 않습니다.

P0
환경 설정 지금
Firebase Studio → GitHub → Cloudflare Pages 연동
Supabase 프로젝트 생성 + 테이블 스키마 설계
로컬 Python 환경 확인 (Applio 재활용)
산출물: 배포 파이프라인 완성
P1
보컬 분석 스크립트 다음
가수 음원 → Demucs 분리 → RMVPE 추출 Python 스크립트
분위수 계산 → singer_이름.json 자동 생성
Supabase 자동 업로드까지 연결
산출물: 가수 프로필 JSON 자동 생성기
P2
데모곡 DB 구축 예정
데모곡 음원 분석 → song_곡명.json 생성
Supabase Storage에 음원 파일 업로드
가수 3명 × 데모곡 10곡으로 시작
산출물: 데모곡 프로필 DB (MVP)
P3
매칭 엔진 예정
L1 음역 필터 구현
L2 스타일 랭킹 구현 (코사인 유사도)
Top-K 결과 + 자연어 이유 출력
산출물: 매칭 결과 출력 기능
P4
4-View 출력 연결 예정
작곡가용 언어 명세서 자동 생성
Suno 프롬프트 자동 생성 (프롬프트 DB 참조)
A&R 신호등 대시보드 + 가수 본인 리포트
산출물: 완성된 MVP 서비스 🎉