사운드 효과 (실행 가능 파이프라인)
위치: 일하는 스킬. 진짜 규칙 소스는
remotion-assembly/references/audio.md(라우드니스 체인/마스터링/일시 정지/BGM 판정)에 있으며, 충돌 시 그것을 기준으로 합니다. 교훈(반복 금지): ffmpeg 백색 잡음 합성 → 안 됨 (싸구려 느낌); 참고 영상 오디오 트랙 샘플링 → 안 됨 (보컬 제거 후 빈약함). 정답 = 전문 사운드 효과 라이브러리 + 사용자 시청 선택 (오답 #21).
0. 먼저 정립 라이브러리 확인 (대부분의 경우 여기서 끝)
public/sfx/ 현역 10음색 (2026-07-16 시청 확정 라이브러리 + 2026-07-21 승인 풀 전환 및 소스 교체, 번호/교체 기록은 audio.md 규칙 8 참조; 괄호 안은 §4 이벤트 위치):
glass 증거 카드 현상(A) / pop chip 가벼운 클릭(B, fav20으로 소스 교체, 선명하고 경쾌한 tick, 이전 '뚝' 소리 대체) / tick2(B 변형, fav33—같은 구간 B 위치 연속 사용 시 반복감 방지) / pop2 명판 부드러운 '퍽'(G, fav14로 소스 교체, 둔탁하고 볼륨감 있는 '퍽') / stamp 도장 강타(D, 전체 영상 ≤1) / rise 숫자 연속 스크롤(C, fav29 리마스터, BASE_VOL 별도 0.1로 압축) / whoosh 장면 전환 부드러운 스윕(F) / shutter 사진 촬영 전용 / bright 하이라이트 마킹 위치(fav02 선명한 '띵'—기준 영상 전체 스펙트럼에서 유일한 밝은 음색 전담) / lowthud 물리적 충돌·낙하 위치(fav13 저주파 긴 울림, 침입 비트 전용, 과중함 주의 구간 종심 검토 대기). 이전 pop/pop2는 spare/prev-*에 보관. trans, ding은 2026-07-20 사용자 시청 심의로 폐기 결정 (E 위치 기본적으로 여백, 공식 소스 추가는 §1-2 참조). 예비품은 public/sfx/spare/에 있음. 승인 풀 public/sfx/jy-fav/(2026-07-21 사용자 Jianying 컬렉션 42개 시청 보드 심의로 19개 사용 가능 결정): fav 번호 + 해시 + 음량대 그룹은 디렉토리 내 SOURCES.md 참조, 모두 사용자 귀를 거쳤음—B/G/A/E 위치 소스 교체/추가는 우선 이 풀에서 취함, 역할 확정은 구간 종심 검토에서 완료; 동일 영상 현역 음색은 여전히 A-G 표 규칙 준수 (사용자 교정: 자주 쓰는 음색도 10여 개, 효과음이 주객전도되면 안 됨).
비디오 변경 시 이 라이브러리를 그대로 사용; 새로운 역할이나 새로운 질감이 필요한 경우에만 1-3단계 참조.
1. 소스 선택 (새 효과음이 필요할 때)
우선 순위: a. Jianying 로컬 캐시 라이브러리 스캔 (사용자 지정 선호: ~/Library/Containers/com.lemon.lvpro/Data/Movies/JianyingPro/User Data/Cache/music/ 등 디렉토리에 효과음 캐시 있음, find ... -iname "*.mp3" + ffprobe 길이 ≤5s로 효과음 필터 + md5 중복 제거; 파일은 해시 명명으로 제목 없음, 시청 보드로 확인. 라이브러리 확장: 사용자가 Jianying에서 마음에 드는 효과음을 클릭하면 캐시에 저장, 스캔 스크립트 재실행—이것이 '사용자 라이브러리 확장' 표준 동작입니다) → b. @remotion/sfx (d.ts가 곧 링크 목록; 사용 가능: whip/whoosh/switch/mouse-click/page-turn/ding/shutter-modern) → c. Mixkit 무료 상업용 (분류 페이지 grep assets.mixkit.co/active_storage/sfx/<id>/<id>-preview.mp3) → d. Pixabay / kenney.nl CC0 → e. 상업용 팩 (Artlist/Epidemic).
저작권 주의: Jianying 소재 약관은 명목상 Jianying 내 사용으로 제한되지만, 국내 크리에이터 생태계 관행상 사용자 재량에 맡깁니다; 외부 상업 배포 시 b-e 우선 사용.
2. 시청 보드 (새 효과음 영상 적용 전 필수, 생략 불가)
효과음 질감은 AI가 판단 불가, 스펙트럼 하드웨어 결함만 필터 가능. 절차: 후보 -3dB로 정규화 → 각각 검정 배경에 번호+이름 카드(drawtext)로 짧은 클립 렌더링 → concat으로 시청용 비디오 하나로 합쳐 사용자 전달 → 사용자가 번호를 보고해야 영상에 적용 가능.
연결 철칙 (2026-07-16 경험): ① 각 구간 길이를 동일하게 고정—오디오 apad=whole_dur=2.1,atrim=0:2.1, 비디오 -t 2.1, -shortest 금지 (aac priming으로 인해 각 구간 길이 미세 차이 발생); ② 연결 시 -c copy 금지, 반드시 전체 다시 인코딩—그렇지 않으면 음성/화면 동기화 오류 누적, 번호와 소리 불일치 (사용자 실제 40+개 전부 오류), 사용자가 보고한 번호 모두 무효 처리 및 재작업. ③ 전달 전 구간별 음성 확인 (0715-02 사고: 4/8번 무음 보드를 사용자에게 검출기로 전달): 연결된 보드 각 구간 ffmpeg -ss <구간 시작> -t <구간 길이> -af volumedetect로 max_volume 확인, 하나라도 <-60dB면 무음—먼저 volumedetect로 해당 소스 파일 확인 (라이브러리 내 불량품 방지, 예: rise.wav -91dB), 그 다음 연결 명령 확인, 수정 후 재연결; 무음 보드 사용자 전달 금지.
음색定位은 반드시 시청 보드로, AI 추측 금지 (0715-02 종심 침전): 화면 이벤트에 어떤 음색을 배치할지는 사용자가 시청 보드를 보고 지정—AI는 음색에 대한 판단력 제로. 0715-02 AI가 추측으로 잘못된 음색 2회 배치, 결국 시청 보드로 stamp를 찾음. 새 영상 새 배치, 또는 기존 라이브러리 음색이 새 화면 이벤트와 맞지 않을 때, 먼저 시청 보드를 내보내 사용자가 지정하도록 하고, AI가 직접 음색을 지정하여 영상에 적용하는 것을 금지.
3. 가공 및入库
- 피크 -3dBFS로 통일 (
volumedetect로 max 측정 →volume=(-3-max)dB), 48k 모노. - 긴 소재 앞부분 자르기: impact 계열은 첫 1.0-1.6s + afade out.
- 연속 스크롤 합성 (숫자 스크롤/일괄 점등): 선택된 tick 40ms 자르기 +
-stream_loop 29+ 볼륨 램프volume='0.35+0.65*t/1.2':eval=frame—기준 영상 '스크롤 사운드'는 본질적으로 tick 연타, 피치 riser가 아님. - 새 역할:
sfx-<영상명>.ts의 SfxName 유니온 타입 + SfxTrack BASE_VOL 동기 추가.
4. 큐 시트 마운트: A-G 사운드 배치 문법 (2026-07-16 스펙트럼 해독 11개 앵커 포인트 확정 + 2026-07-21 두 영상 전체 통계 업그레이드 [221개 실제 이벤트]; 진짜 소스=본 섹션 A-G 표 + audio.md 규칙 8, 확정 증거: assembly/0715-01/분할 공방/사운드 디자인 스펙트럼.md + docs/기준 영상 사운드 배치 스펙트럼 v2.md)
화면 이벤트 → 음색 대응표 (비트별로 표 참조하여 소리 결정, 자유로운 창작 금지):
| 이벤트 | 음색 | 라이브러리 파일 |
|---|---|---|
| A 증거 카드/스크린샷 현상 | 유리 효과음 (짧고, 음정 있으며, 인터페이스 느낌; 기준 영상 실측 현상음은 둔탁한 bright -13.5—가장 밝은 단계 선택 금지, fav02/25/19은 영상 적용 전 밝기 교정 필요) | glass.wav (Jianying J08, 시청 보드 106번) |
| B chip/소형 요소 등장, 점진적 점등 | 짧고 선명한 tick; 일괄 시 0.15-0.3s 연속 발사 | pop.wav (2026-07-21 fav20으로 소스 교체); 같은 구간 연속 사용 시 tick2.wav로 교체해 반복감 방지 |
| C 숫자 스크롤 | tick 연타 스크롤 기간 전체 채움; 정지 시 강타 없음 (기준 영상 문법) | rise.wav (1.5s 버전) |
| D 도장/판결문 강타 | 짧고 둔탁한 타격, 묵직하고 울리지 않음 | stamp.wav (무겁게 느껴지면 spare/1143으로 교체) |
| E 챕터 전환/接管 진입 | 긴 기류 riser, 챕터 레벨에서만 | |
| F 장면 정리/퇴장 | 감쇄 부드러운 스윕, 등장보다 한 단계 가볍게 (vol ≤0.5; '한 단계 가볍게'는 본 스타일의克制裁定—기준 영상 실측 퇴장은 등장보다 가볍지 않음, 차이는 감쇄 꼬리가 약간 더 긴 것, 선택 시 '감쇄 꼬리 있음'이 볼륨보다 중요) | whoosh.wav |
| G 명판/徽章/chip 정착 | 부드러운 pop | pop2.wav (2026-07-21 fav14로 소스 교체, 둔탁한 '퍽') 또는 spare/interface-1109 |
확장 이벤트 위치 (2026-07-18 일반화 스트레스 테스트 보충, 가까운 그룹으로 귀속, 새 음원 추가 없음): hero 대문자/결론 lockup 등장 → D 경량档 (vol ≤0.5, Stamp 강타 할당량 미포함); 타임라인 카드/차트 컨테이너 등장 → A; 타임라인 노트 점등, 데이터 막대 성장, 선 draw-on → B (일괄 시 연속 발사 규칙 준수); 판결문 소형 주석/ZeroTag 정착 → B; 하이라이트 라인/강조 → bright.wav (전담 선명한 '띵', 기준 영상 전체 스펙트럼 유일한 밝은 음색 +3.0); 물리적 충돌/낙하/밀어내기 → lowthud.wav (경량档 vol 적절히 감소, 과중함 주의); punch-in 줌 → 중간 강도 짧은 소리 (D 경량档 또는 lowthud 경량档); 마이크로 챕터 다운그레이드—페이지 전환식으로 나누어진 <8s 소절, E 전환은 전체 그룹 처음과 끝에만 각 1회, 사이는 B로 대체 (전환음 연속 발사로 지루함 방지; E 위치는 현재 임시 whoosh 사용, §0 참조).
승인 풀 대응 (2026-07-21 특징 실측 분류; 주 선택은 동일일 전환入库, §0 참조; 청감 최종 교정은 구간 종심 검토에서 진행): 전환 완료—pop←fav20, pop2←fav14, tick2←fav33, bright←fav02, lowthud←fav13. 풀 대기 중: B 대비 fav27/24, G 대비 fav11/06, A 대비 fav25/19 (선명한 '띵', bright가 너무 밝으면 다운그레이드 사용), F 대비 fav16 (기류 매우 가벼움), D 경량档 대비 fav05, 물리 대비 fav08, E 위치 후보 fav17/00 (기본 여백 유지). 구간 종심 검토에서 마음에 안 들면 교체, 1분 내 풀에서 소스 교체. 전체 특징 표는 jy-fav/SOURCES.md 참조.
소리 선택 시 먼저 의미 패밀리 질문 (2026-07-21 결정, '어느 소리가 더 좋은지' 방지): 선명한 '띵'=하이라이트/강조, 시청자는 여길 봐야 함 (기준 영상 실측 유일한 밝은 패밀리는 하이라이트 라인 +3.0; 증거 카드 현상은 실측 둔탁 -13.5로 둔탁 짧은 패밀리 귀속, glass 중간档 배치); 건조한 '딱'=소형 요소 준비/항목별 점등 (진행감); 부드러운 '퍽'=정체성/결론 정착 (무게감); 저주파=물리적 동작 충돌/낙하/밀어내기 (인과감); 기류=이탈 (정리감). 화면 이벤트가 어느 의미 패밀리에 속하는지 확인 후 그 패밀리에서 소리 선택—패밀리가 맞지 않으면 차라리 소리를 내지 마라.
세 가지 메타 규칙 (음색보다 더 중요, v6 실패 근본 원인): ① 음색 세트화—전체 영상 하나의 UI 계열 소리로 통일, 카메라계/오피스계/대작계 혼용 금지; ② 볼륨克制—단 하나도 보컬을 덮지 않음, 밀도로 승부, 크기로 승부하지 않음 (기준 영상 두 영상 실측 전체 4-5s/발; '2-3s/발'은 밀도 구간 비트, 전체 평균이 아님, 사운드 배치 스펙트럼 v2 참조); ③ 하나의 사건 하나의 소리—두 개 음重叠 금지, 같은 비트 두 이벤트는 ≥0.1s 간격 유지.
훅 / 오프닝 사운드 배치 통칙 (질문 ⑩ '오프닝에 효과음 넣나요?'의 정답): 오프닝은 '사운드 배치 유무' 특례가 아님, 여전히 '주요 요소 사운드 배치 + A-G 표 참조' 통칙을 따름—훅 메인 비주얼의 소리가 필요한 곳은 소리를 내야 함: 타이핑 큰 글자=글자별 tick(B), 훅 강타 숫자=C 스크롤, 증거 카드 현상=A, 챕터 시작/接管 진입=E. 거부된 것은 '시각적 앵커 없는 장식적 시작음'뿐 (whoosh/沙沙 오프닝, 분위기 조성 위해 넣는 공백 비트)—이는 어떤 화면 이벤트에도 대응하지 않으며, 메타 규칙 ①②를 벗어난 순수 소음. 판단 기준: 오프닝의 모든 소리는 반드시 현재 정착 중인 주요 요소에 연결되어야 함; 연결되지 않으면 넣지 않음, '오프닝에 소리가 있어야 한다'는 이유로 억지로 넣지 않음.
이미 기각: 오프닝 whoosh 沙沙 (장식적 시작, 위 통칙 참조), 숫자 정착 강타, 강타满片 (이전 선 ≤2곳/영상, 2026-07-21부터 '뚝' 계열 전체 영상 ≤1로 강화, 하드라인 §4.4 참조; 기준 영상 두 영상 실측 도장 1/2곳, 음색 이미지=전체 스펙트럼 가장 둔한 bright -18.4+가장 무거운 rise 30dB, '둔탁하고 울리지 않음' 입증), BGM (기준 영상 실측 있음: 연속 저주파 침대, 머리/중간/끝 일정, 추정 상대 보컬 ≤-15dB—BGM 없음은 사용자 결정한 본 스타일 차이, 기준 영상 문법 아님, 재고 시 시작점 -15dB 일정 바닥층 참조), trans 챕터 riser 및 ding 종료음 (2026-07-20 시청 심의로 폐기, §0 참조).
4.4 전체 영상 사운드 효과 감사 게이트 (0715-02 종심 침전: 큐 마운트 완료 후 반드시 실행, 선 초과 시 수정 후 재렌더링)
- 밀도: 하드 최소 전체 영상 ≥2.5s/발 (사고: 1.95s/발이 종심에서 '너무 시끄럽다'며 반려); 목표 범위 3.5-5s/발 (기준 영상 두 영상 실측 v5=5.0/v6=4.0; 0715-02 3.05s로 줄였으나 여전히 약간 밀집, 종착점 아님). 여백도 문법이다: 연속 20-30s 큐 없음은 정상 (실측 최대 여백 28.7s), 보컬 위주 구간에 밀도 채우려 소리 추가 금지; 밀도는 30s 창으로 비교하여 파도 형성 (밀집 창 9-14발 vs 희소 창 2-3발), 균일 분포 금지. 커버리지 판단 기준이 밀도 평균보다 우선 (2026-07-21 0721-01 종심): 확정판 42발 3.02s/발 (이전 목표 범위 하한 미만) 사용자가 여전히 '많은 MG에 효과음 없음' 지적—밀도 평균 달성≠커버리지 달성; 감사는 '각 MG 주요 요소 정착 시 소리 있음, 또는 명시적 여백 사유(순수 보컬/接管 진입/의미 패밀리 불일치)'를 기준으로 하며, 목표 범위 3.5-5는 '시끄러움 방지' 참고선으로 하향, 커버리지 필요 시 3.5 미만이라도 수정 안 함 (0721-01 당시 현역 7음색이 커버리지 상한의 주원인이었음; 라이브러리 확장 이미 완료, 아래 긴장 조항 참조).
- 단일 음색 사용률 ≤35% (사고: pop 114/220=52%, 청감 '셔터 연사'—짧은 tick 계열 연속 발사가咔嚓감 원천). 기준 영상 건조 '딱' 패밀리 실측 정확히 35%(78/221), 이 라인은 실측과 일치, 하드라인 완화 불가.
- 일괄 점등 기본 '전체 그룹 첫 번째만 1발로 기록'; 0.15-0.3s 연속 발사는 ≤4개 요소의 의미적 스태거에만 사용, §4 B 위치의 기존 '일괄 연속 발사' 기본값 대체.
- BASE_VOL 기준 ≈0.25 (0.2-0.3), 강타 상한 0.55—사용자 2026-07-21 결정 '효과음 기본 볼륨은 모두 -15dB 정도':入库 피크 -3dBFS × 0.25 ≈ 유효 피크 -15dBFS (2026-07-20의 0.3-0.55 대체; 그 이전 0.8-1.0은 '너무 크다'고 판정된 구버전, 롤백 금지).
- stamp 도장음 신중히 사용 (0715-02 종심 침전): 사용자가 밀집 stamp를 '사진 셔터'로 인식—판결문/타입명/녹색 도장 모두에 stamp를 넣을 필요 없음, 시각적 여백으로 대체; 전체 영상 stamp (강타 포함)는 ≤ 개수 권장. 이는 '강타 ≤2곳/영상'과 중첩: 강타는 stamp 내 강한档 서브셋, 먼저 강타 ≤2 제한, 그 다음 stamp 음색 총 개수 ≤ 개수로 제한.
- '뚝' 계열 음색 전체 영상 ≤1 (사용자 2026-07-21 0721-01 결정, 위 stamp≤개수 강화): 사용자가 '뚝'(stamp/shutter) 청감에 매우 민감, 밀집 판결문 '뚝'=사진 연사, 귀에 거슬림; 전체 영상에서 최고조 1곳만 강타 stamp, 나머지 판결문/결론 정착은 부드러운 음색(pop2 부드러운 '퍽'/rise 성장음)으로 변경, 모든 판결문에 도장 찍지 않음.
- 상징적 음색 (rise 성장음)도 마찬가지로克制, 지역적 밀집 더욱 방지 (0721-01 교훈): rise 전체 영상 ≤4-5곳, 30s 창 내 ≥2발 금지 (0721-01 초판 rise 10곳, 111-122s에 4개 밀집, 사용자 '같은 효과음 반복' 판정—단일 음색 22%가 35% 선 초과 안 했지만 여전히 많다고 평가, 지역 밀집이 전체 사용률보다 더 치명적); 인접 성장 애니메이션은 가장 상징적인 1비트만 rise 배치, 나머지 여백 또는 pop으로 변경.
- 연속 tick 계열 음색 (rise) BASE_VOL 별도로 더 낮게 압축: rise는 ~1.2s 연속 tick, 누적 라우드니스가 단발 pop/pop2보다 훨씬 높음, 피크 동일 -3dB에서도 청감이 '더 큼'; 0721-01 사용자 결정 rise 별도로 0.1 압축 (일반 0.25보다 한 단계 낮음)—연속/지속 계열 음색은 모두 단발档보다 한 단계 더 낮게 설정.
- MG 사운드 배치 커버리지 vs 음색 라이브러리 크기 간 긴장 (0721-01 미완료, 라이브러리 확장 대기): 사용자는 '모든 MG에 소리가 있길' 원하지만 라이브러리는 7음색뿐, 커버리지 강제 충족 = 동일 음색 반복 사용 → 시끄럽고 반복적 (바로咔嚓/rise가 많다고 지적된 근본 원인). 커버리지와 '시끄럽지 않고 반복적이지 않음'은 작은 라이브러리에서 모순됨; 근본 해결 = 라이브러리 확장. 2026-07-21 이미 완료: 승인 풀에서 3개 새 역할(tick2/bright/lowthud) 전환 + B/G 소스 교체, 현역 10음색 (§0); 여전히 단조롭게 느껴지면 풀에서 추가 (19개는 이미 사용자 귀 거침, SOURCES.md 대응표 참조) 또는 사용자가 새로收藏하여 풀 확장.
- 감사 동작:
grep -c로 큐 총 수 및 음색별 분포 카운트, 하나라도 선 초과 시 먼저 일괄 위치를 줄이고, 그 다음 사용률 압축; stamp 음색은 별도로 카운트, 개수 초과 시 수정.
4.5 자동화 폐루프 (사용자 결정: 앞으로 버전별 음량 조정 없음)
사용자는 두 지점에서만 개입, 나머지 완전 자동:
- 일회성 라이브러리 확정 (진행 중): 라이브러리 스캔/소스 선택 → 시청 전체 보드 → 사용자 번호 보고 → A-G 문법으로 역할 인계 →
public/sfx/영구 라이브러리 확정. 이후 비디오 변경 시 효과음 재선택 없음. - 구간 종심 검토: 구간 완성 영상 전체 청취, 시간 지점 보고 즉시 교체 (라이브러리/spare 소스 교체 1분 내 새 버전). 구간 종심 검토 완성 영상은 항상 효과음 포함 전달—큐 자동 마운트, 시각적 먼저 확정에 의존하지 않음, 효과음 없는 중간 버전 금지 및 재렌더링 금지 (0715-02 교훈: 세 구간 두 번 렌더링, 한 번의 렌더링 공회).
중간에 수동 작업 없음: 어셈블리 각 구간마다 '컴포넌트 타입 → 이벤트 타입 → A-G 표 참조'로 큐 자동 배치—Chip/점格=B, QuoteDoc/ShotCard 현상=A, Stamp=D, BigNumber 스크롤=C, Takeover/챕터 시작=E, Exit 장면 정리=F, 명판/徽章=G; 큐
at은 요소 enterAt을 초 단위로 직접 변환. 큐 초안은 이미 스크립트화됨:node scripts/beat-to-cues.mjs <영상명>으로 어셈블리 계획 표에서sfx-<영상명>.ts초안을 기계적으로 생성 (§4.4 사전 검사 보고서 내장, 선 초과 시 빨간색 표시, 자동 삭제 안 함), 효과음 담당자는 검증만, 편집하지 않음; 스크립트 내 매핑 테이블은 본 절의 전사이며, 규칙 변경은 본 SKILL을 기준으로 함. 단일 구간을 위해 임시로 새 효과음 찾는 것 금지 (역할 부족 시에만 §1-2 절차로 라이브러리 보충).
5. 정량적 검수 (구간 렌더링 후 반드시 실행)
- 각 큐 지점
ffmpeg -ss <t> -t 0.5 -af volumedetect로 전대역 피크가 인접 순수 보컬 창보다 유의미하게 높아야 함; 밝은 질감 요소는 추가로highpass=f=8000측정: ≥ 보컬 치찰음 기준선 +6dB (해당 임계값은 2026-07-20부터 재조정 대기—BASE_VOL 다운그레이드 후 큐별 청취 가능+사용자 종심 검토 기준, dB 맞추기 위해 볼륨 올리지 않음, audio.md 규칙 1 참조). - 청취 가능 이벤트 카운트:
highpass=f=12000,silencedetect=noise=-25dB이벤트 수 ≈ 큐 수. - 잡음 피크 대조: 보컬 파열음과 BGM 드럼 비트도 피크를 형성할 수 있음 (두 영상 해독 360개 후보 중 39% 폐기), 손가락 튕김/박수 등 신체 수음은 rise 40dB까지 가능—큐 지점 검수 시 먼저 신체 수음 제외, 효과음 기준으로 오인하지 않음.
- 최종 판단 기준 = 사용자 귀: 구간 완성 영상 사용자 전달 청취, 시간 지점 보고 시 즉시 시청 보드/예비품 소스 교체, 1분 내 새 버전.