fcp-audio — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited fcp-audio (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<asset-clip lane="-1"> (audio-only) として BGM や 環境音、 SE を spine に配置する。 オーディオ専用 lane (lane=負値) で配置することで、 video lane と並列に再生される。 audio fade は `<adjust-volume>` 内 `<param name="amount">` の子要素 として書く。
/30000s とは違う (24倍精度)<resources>
<asset id="g_bgm1" name="BGM1 Aesthetic Lofi"
uid="..." start="0/1s" duration="144/1s"
hasVideo="0" hasAudio="1"
audioSources="1" audioChannels="2" audioRate="44100">
<media-rep kind="original-media"
src="file:///path/to/bgm1.mp3"/>
</asset>
</resources>| 属性 | 値 |
|---|---|
hasVideo | "0" (audio-only) |
hasAudio | "1" |
audioSources | "1" (mono) or "1" (stereo, 1ペア) |
audioChannels | "2" (stereo) |
audioRate | "44100" (mp3標準) or "48000" (m4a標準) |
start | "0/1s" (mp3冒頭) |
duration | "<sec>/1s" (mp3実duration) |
典型は 映像の `<asset-clip>` の子要素として繋ぐ(connected clip)。これなら「どのカットに紐づくBGMか」が構造で固定される。
<spine>
<asset-clip ref="rVideo" lane="1"
offset="0/30000s"
name="Scene A"
start=".../30000s"
duration="300300/30000s">
<!-- audio-only は lane が負数 -->
<asset-clip ref="g_bgm1" lane="-1"
offset="<親asset-clip.start値>"
name="BGM1"
start="0s"
duration="3132/30s"
audioRole="music">
<adjust-volume amount="-12dB"/>
</asset-clip>
</asset-clip>
</spine>別パターンとして spine 直下に lane="-1" を並べる構成もあるが、プロジェクトによって見通しが悪くなりやすい。迷ったら FCP で実際に繋いだ形を Export XML して写経する。
| 属性 | 値 |
|---|---|
lane | `-1` (audio-only) - 負数で audio専用 lane |
audioRole | "music" (BGM) / "dialogue" (会話) / "effects" (SE) |
start | "0s" (mp3冒頭から) or "<offset_in_mp3>/30000s" (途中から) |
duration | spine上の表示時間 |
audio asset-clip は典型として 対象の video `<asset-clip>` の子要素 (connected clip) として書く。親 asset-clip の duration を超えても OK(設計次第で「シーン全体に被せる」もできる)。
正規構造 (FCP正規exportから確定):
<asset-clip ref="g_bgm1" lane="-1" ...>
<adjust-volume amount="-12dB">
<param name="amount">
<fadeIn type="easeIn" duration="2825569/720000s"/>
<fadeOut type="easeIn" duration="756277/720000s"/>
</param>
</adjust-volume>
</asset-clip><adjust-volume> 直下ではない"easeIn" / "easeOut" / "easeInOut" / "linear"N/720000s = N/720000 秒
1.0秒 = 720000/720000s
1.5秒 = 1080000/720000s
2.0秒 = 1440000/720000s
3.0秒 = 2160000/720000s| BGM | 役割 | fadeIn | fadeOut |
|---|---|---|---|
| 先頭 (Intro直後) | 世界に入る | 長め (3-4s) | 短め (1s) |
| 中盤 1 | crossfade | 短め (1s) | 中 (3-4s) |
| 中盤 2 | crossfade | 短め (1s) | 中 (2-3s) |
| 末尾 (Outro前) | 静かに閉じる | 短め (1s) | 長め (8-9s) |
中間境界では crossfade (前BGM の長めfadeOut + 次BGMの短めfadeIn が重なる) で自然に遷移。
連続する2つの audio-clip 間でクロスフェード:
前BGM 次BGM
===== =====
fadeOut --→ ←-- fadeIn
| 重複 |
offset_2 - offset_1 < duration_1fadeOut 末尾と 次BGM の fadeIn 先頭が同時刻に重なるよう offset/duration を計算| Role | 用途 |
|---|---|
"music" | BGM、 主題曲 |
"dialogue" / "dialogue.dialogue-1" | ナレーション、 現地会話 |
"effects" / "effects.effects-1" | SE (whoosh, water, temple bell 等) |
"natural" | 環境音として割り当てたいケースで たまに見えるが、環境依存 |
FCP は role ごとに track を分ける → ミキシングしやすい。
`natural` は推測で書かない。自分の library / テンプレで本当にその文字列が成立するかは、対象クリップを FCP → Export XML して audioRole="..." を確認する。成立しない場合は、プロジェクトの運用に合わせて `effects` 系に寄せるなど代替を選ぶ。
BGM の音色を整える時に使う。 Final Cut Pro 標準の Channel EQ (Apple AudioUnit)。 Logic 由来の preset (Drums / Keyboards / Guitar / Horns / Voice / Mastering / EQ Tools) があり、 BGM には `06 Mastering` 系 (Final Mix - Pop / Rock / Smooth / Bright 等) が無難。
<resources>
<effect id="rN" name="Channel EQ" uid="AudioUnit: 0x61756678000000ec454d4147"/>
</resources>
<spine>
<asset-clip ref="rX" lane="-1" name="BGM..." ...>
<adjust-volume amount="-15dB">
<param name="amount">
<fadeIn type="easeIn" duration="..."/>
<fadeOut type="easeIn" duration="..."/>
</param>
</adjust-volume>
<filter-audio ref="rN" name="Channel EQ" presetID="[2]06 Mastering/Final Mix - Pop.pst"/>
</asset-clip>
</spine>| 項目 | 真値 | 注意 |
|---|---|---|
| effect uid | AudioUnit: 0x61756678000000ec454d4147 | 環境依存性は低いが念のため正規 export で確認 |
| presetID 形式 | [2]<カテゴリ>/<プリセット>.pst | 例: [2]06 Mastering/Final Mix - Pop.pst、 [2]05 Voice/Warm.pst |
| 配置 | <adjust-volume> の 後 | 直後に1行で <filter-audio .../>、 自己閉じ |
| ref | resources で name="Channel EQ" を動的取得 | resource ID は再番号付けされる前提 |
1個の BGM に手で Channel EQ + preset を適用 → Export XML → 残り N-1 本に同じ <filter-audio> 行を </adjust-volume> 直後に挿入する。
# 例: 各 BGM の </adjust-volume> 直後に 1行追加
TEMPLATE = '<filter-audio ref="r4" name="Channel EQ" presetID="[2]06 Mastering/Final Mix - Pop.pst"/>'key/value をいじらず1行追加で済むので、 Typewriter のような param re-key と比べて軽い。
迷ったら 06 Mastering / Final Mix - Pop か Final Mix - Smooth。 楽器構成不明な royalty-free 素材集なら preset-default のまま乗せるだけでも効果がある (将来 Inspector で値を回せば全 BGM に適用される構造になる)。
<filter-audio> と <adjust-volume> の併用両方を併存させる典型 BGM 構造は:
<adjust-volume> で全体音量 + fade<filter-audio> (Channel EQ など) で音色順序: adjust-volume → filter-audio。 これは FCP正規 export と一致。
この節は「発動させない」ためスキル説明のトリガーから外している。必要になったらツール化してから description に戻す。
clip 切り替えを BGM の拍に合わせる手法:
aubio tempo / librosa.beat.beat_track)ツール:
brew install aubio → aubio tempo file.mp3librosa.beat.beat_track(y, sr) で動的 BPM 取得<adjust-volume> → <param name="amount"> の中/720000s"easeIn" 等を書くmusic / dialogue / effects は確実)。natural を使うなら export で実在を確認してから/1s でOKpresetID="[2]..." の prefix [2] を [1] で書く等、 細かい syntax は必ずFCP正規 export を見る。 推測すると preset が読み込まれず default に戻る silent failurefeedback_fcpxml_audio_fade.md — fadeIn/fadeOut の正規構造 (実測ベース)feedback_fcpxml_resource_id_dynamic.md — audio asset id も再番号付け対象feedback_music_selection_temperature.md — BGM選曲は映像の温度で決める~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.