Scorewright - Claude가 작곡하고, 도구가 렌더링합니다
0번 규칙: Claude는 score.json의 모든 창작 결정을 내리고 그 이유(direction, 큐 why)를 작성합니다. 스크립트에는 기본 스타일, BPM, 조성, 진행이 없습니다. 마지막 스코어를 템플릿으로 재사용하지 말고, 항상 비디오에서 시작하세요.
PY = requirements.txt가 설치된 Python 3.10+. SW = <이 폴더>/scripts/scorewright.py.
기기에서 첫 번째 렌더링 전에 PY SW doctor를 실행하세요. MISSING이라고 표시되면 README.md > 설치를 따르고, 사용자에게 알린 후 중단하세요.
실행 가이드 (빠른 시작)
| # | 단계 | 명령 / 작업 | 완료 조건 |
|---|---|---|---|
| 0 | 확인 | PY SW doctor | ready 출력 |
| 1 | 분석 | PY SW analyze <비디오> <작업폴더> --words <words.json> (또는 --voice) | facts.json (길이, 컷, 음성 구간, 시간 단어) + contact.jpg |
| 2 | 시청 | contact.jpg (타일 i = t i*step)와 시간 단어 읽기; 대본/스토리보드가 있다면 함께 읽기 | 메시지, 청중의 느낌, 감정적 호를 설명할 수 있음 |
| 3 | 스포팅 | 스포팅 테이블 작성: 큐 시작/끝, 히트 포인트 (단어 시간, 전환점, 반전), 침묵이 더 나은 부분, 섹션별 감정 (주요 + 보조 + 강도) | 모든 큐 시작/히트가 측정된 시간 |
| 4 | 방향 설정 | 이유와 함께 정체성 선택: 장르 혼합, 조/모드, 큐별 BPM, 악기 팔레트, 라이트모티프 (+ 변형 방식), 다이내믹 호. references/craft.md 참조 | direction에 작성 |
| 5 | 스코어 작성 | score.json 작성 (references/score-format.md, 예제 examples/bed_demo.json 참조). 각 큐는 히트 포인트에서 시작; s:<초>를 사용하여 단어에 음표 배치; PY SW fit <시간>은 큐 내에서 하나의 템포를 테스트할 때만 사용 | 유효한 JSON |
| 6 | 렌더링 | PY SW render score.json <출력폴더> | 스템, 풀, no_percussion, composition.mid, 프리뷰, SCORE_NOTES.md, qc.json, spectrogram.png |
| 7 | QC | qc.json + spectrogram.png 읽기; 수정 후 재렌더링 (버전마다 새 출력 폴더 사용) | 모든 checks true; 모든 히트 rise_db >= 3; 의도치 않은 침묵 없음 |
| 8 | 듣기 | 사용자가 preview_with_voice.mp3를 청취. Claude는 들을 수 없음: 그 사실을 알리고, 수치를 보고하며, 무엇을 바꿀지 질문 | 사용자 승인 |
| 9 | 전달 | full_soundtrack.wav (이미 원시 음성 아래 X LU, 0 dB에서 드롭인) 또는 스템을 사용자의 편집기로 전달 | - |
첫 번째 결정: 베드 또는 스코어
- 설명자 / 내레이션 비디오 (음성이 거의 연속적) = 베드. 멜로디, 라이트모티프, 음성 아래 선율 없음. 펄스, 질감, 느린 화성, 서브 베이스만 사용. 섹션 경계에서 에너지 변화; 실제 전환점에서 2-3개의 히트/드롭아웃; 정체성은 선율이 아닌 음색/리듬에서 옴. 음성이 없는 곳에서만 짧은 선율 사용 (첫 단어 전 인트로, 마지막 단어 후 1-2초).
- 음성이 없는 구간이 있는 필름 / 다큐멘터리 = 스코어. 라이트모티프와 멜로디는 그 공백에 존재함.
- 설명 아래의 멜로디는 두 번째 목소리: 시청자는 선택해야 하며, 설명은 손해를 봄.
해야 할 것
- 침묵, 절제, 대비는 도구입니다. 모든 비디오에 음악이 사방에 있을 필요는 없습니다.
- 핵심 아이디어당 하나의 라이트모티프; 스토리의 전환점에서 발전시킴 (반전, 증대, 재화성화, 한 음 변경).
- 복잡한 설명 아래에서는 밀도를 낮춤; 음성 공백과 시각적 전용 순간에 음악이 말하게 함.
- 트랙별 엔진 선택:
gm은 어쿠스틱 현실감 (피아노, 현악기, 금관, 목관, 합창, 말렛),aac는 신디사이저 / 사운드 디자인 음색 (느림: ~10x gm; 적고 드문 트랙에 사용; 선택 사항),sfx는 히트 포인트의 임팩트/스웰/서브 드롭에 사용. - 베드
bed_lu_under_voice11 (활기참) ~ 12.6 (차분함), 음성 구간에서 측정 - 스크립트가 정확히 설정함. - 새 버전 = 새 출력 폴더; 승인된 렌더링을 덮어쓰지 마십시오.
하지 말아야 할 것
- 스위시 / 우쉬 / 페이지 플립 사운드 없음.
riser/swell은 음조적 스웰이며, 드물게 사용. - 복사된 멜로디, 인식 가능한 테마 또는 참조 트랙 편곡 없음.
- 모든 비디오에 동일한 BPM/조성/진행 없음; 감정의 대용으로 음량을 사용하지 마십시오.
- 시각적 또는 스토리 이유 없는 SFX 없음; 내레이션보다 큰 SFX 없음.
알려진 한계 (테스트 완료)
- GM SoundFont 오케스트라는 좋은 목업이지만, Spitfire/Kontakt 현실감은 아님. 솔로 피아노, 패드, 플럭, 피치카토, 신디사이저가 가장 잘 유지됨.
- 큐당 하나의 템포 (템포 변경 = 새 큐). composition.mid는 첫 번째 큐의 템포로 절대 시간 사용.
- audio-as-code 렌더링은 느림 (all-aac 76초 스코어: Ryzen 5 5600H에서 약 8분; 혼합 스코어: 약 50초).
- Claude는 들을 수 없음; QC 수치 + 스펙트로그램 + 사용자 귀가 루프.