用途:motion-score 为影片生成一份原创的音乐与音效方案,依据影片的节拍契约(beat contract)制作。它属于 motion-studio 流程中的 Score 阶段,在 Blocking 之后、Animatic 之前运行,G4 使用其输出并按需修订。未选定或复用的音床被视为缺陷。
主要能力:读取 BRIEF.md、storyboard.json、beatmap.md 与选定的风格圣经,使用 meta.fps、meta.durationFrames、镜头范围与接缝、audio.beatFrames、强拍与 drop、shots[].soundCues 等时序信息;从已有 cue 帧中选定主揭示与 logo 位置;在选 tempo、palette 与 cue 前先读 craft.md。渲染器会为每个声明的 cue 配乐,因此只保留重要击点。
使用方式:需 Python 3.11 或更高版本,且 ffmpeg 在 PATH 中。创建本地 venv(非全局包):python3 -m venv films/<slug>/.score-venv,然后 films/<slug>/.score-venv/bin/python -m pip install -r <motion-score>/scripts/requirements.txt。Pixabay 素材在运行时从 ~/.agents/skills/media-use/audio/assets/sfx 解析,默认需要 impact-bass-1.mp3 与 click-soft.mp3,缺失即阻塞。纯合成方案需显式选择 --sfx-density 0。渲染示例:films/<slug>/.score-venv/bin/python <motion-score>/scripts/score.py films/<slug> --out films/<slug>/audio/scores/r1 --seed 51 --reveal-frame 180 --logo-frame 360 --tonic-midi 62 --palette warm。脚本直接读取 storyboard,不自行发明 cue 文件;要求 G2 前规划的恒定整帧网格,空网格或离网格 cue 会拒绝渲染。每次修订渲染到新目录。完成后 audio-report.json 需 passed: true,每个击点在一帧内,score.wav 为 -14 ± 0.5 LUFS 且真峰值不高于 -1 dBTP,第二次同种子渲染 WAV 字节一致。
导入与混音:安装 CLI 后运行 motion-studio score-import films/<slug> films/<slug>/audio/scores/r1/audio-report.json --id score-r1,再运行 motion-studio mix films/<slug>。score-import 校验输入与 WAV 哈希、测量预览、通过资产台账记录每个 WAV,并写入 storyboard;将 audio.track 设为 music.wav,用复合击点 stem 与实测峰值偏移替换每个声音 cue,旁白保持不变。score.wav 是试听预览而非音床,用作音床会重复音效。mix 提供旁白闪避、归一化与交付限幅。导入只改音床与 cue 资产,保留 G2 网格字段。若合成需要新网格,须回到 Board 重新呈现 G2。
限制与权利:logo sting 仅合成,Pixabay 禁止商标使用,其样本不进入该 stem。库存素材只能用于创意分层的复合击点 stem 或完整配乐,捆绑 MP3 须留在影片与交付包之外,不得交付纯库存 stem。license.json 记录每个 WAV、源哈希及所用 Pixabay 许可 URL。工具许可与输出权利不同:pedalboard 为 GPL-3.0,librosa 为 ISC,numpy/scipy 为 BSD,应装入 venv,未经审查不得将其代码打包进闭源产品。确定性仅覆盖相同脚本、种子、输入、源资产与已安装工具版本。客观检查无法证明情绪、掩蔽或音质,需在 G4 由用户实际聆听并回答后决定,沉默不视为批准。