カット表の形式¶
カット表は、どの音声のどこをどこへ置くかを drpkit compose に伝えるものです。JSON か、同じ列名の CSV で書きます(CSV には markers がありません)。
単位¶
- 値はすべてタイムラインのフレームレートでの整数フレーム(テンプレートのタイムラインの
FrameRate)。JSON では"units": "frames"が必須。秒・タイムコード・サブフレームは受け付けません。 source_inは含み、source_outは含まない(クリップの長さはsource_out − source_inフレーム)。timeline_startはタイムライン上の絶対フレーム。24 fps で 01:00:00:00 から始まるタイムラインなら 86400 が先頭です。- 出力のタイムラインは最も早いカット(
min(timeline_start))から始まります。
例(JSON)¶
{"units": "frames",
"cuts": [
{"tracks": [1, 2], "source_in": 0, "source_out": 3600, "timeline_start": 86400},
{"tracks": [1, 2], "source_in": 7200, "source_out": 10800, "timeline_start": 90000, "crossfade": 60},
{"track": 3, "source_in": 0, "source_out": 1200, "timeline_start": 86400, "media": "bgm/intro.wav"},
{"track": 3, "source_in": 0, "source_out": 2400, "timeline_start": 87600, "media": "bgm/loop.flac",
"fade_out": 48, "volume_keyframes": [[0, -12.0], [1200, -18.0]]},
{"tracks": "all", "source_in": 18000, "source_out": 19800, "timeline_start": 93600, "fade_out": 60, "color": "Orange"}
],
"markers": [
{"frame": 86400, "color": "Blue", "name": "Opening"},
{"frame": 90000, "color": "Red", "name": "Topic 2", "note": "check levels", "duration": 48},
{"offset": 7200, "color": "Green", "name": "Ending", "custom_data": "any text"}
]}
カットの列¶
| 列 | 必須 | 型 | 意味 |
|---|---|---|---|
track/tracks |
どちらか一方 | 整数/整数の配列/"all" |
オーディオトラックの番号(1始まり・テンプレートの並び順)。複数指定した行は各トラックに1クリップずつになる |
source_in |
必須 | 0以上の整数 | 素材の最初のフレーム |
source_out |
必須 | source_in より大きい整数 |
最後のフレームの次(含まない)。素材の長さを超えてはならない |
timeline_start |
必須 | 0以上の整数 | クリップ先頭のタイムライン上の絶対フレーム |
media |
任意 | パス | このカット専用の音声ファイル(1トラックに複数の BGM を並べる等)。相対パスはカット表のファイルの場所から。空ならそのトラックの --media。追加の素材ごとに新しいメディアプール項目ができる。同じファイルを2つのトラックで使うことはできない。ここに @template は書けない |
fade_in・fade_out |
任意 | 0以上の整数 | フェードの長さ(フレーム)。fade_in + fade_out はクリップ長以下。フェードは直線(カーブ点なし) |
crossfade |
任意 | 偶数 | 同じトラックの直前のカットとのつなぎ目を中心にした、このフレーム数の Cross Fade 0 dB。両側に crossfade/2 の素材の余白が要り、2つのカットはぴったり接していて、そのつなぎ目にフェードがあってはならない |
volume_keyframes |
任意 | [[素材フレーム, dB], ...] |
クリップ音量のキーフレーム。フレームは素材のフレーム番号(クリップ先頭=source_in)。キーの間は dB で直線補間、最初のキーより前は最初の値、最後より後は最後の値。CSV では JSON の配列を文字列で書く |
color |
任意 | 色名 | クリップ色16色のいずれか:Orange, Apricot, Yellow, Lime, Olive, Green, Teal, Navy, Blue, Purple, Violet, Pink, Tan, Beige, Brown, Chocolate |
これ以外の列はエラーです。1トラック上のクリップは重ねられません。代わりに隣接するカットと crossfade を使います。
マーカー(JSON のみ)¶
| キー | 必須 | 意味 |
|---|---|---|
frame または offset |
どちらか1つだけ | frame=タイムライン上の絶対フレーム(timeline_start と同じ尺度。最初のカットより前は不可)/offset=タイムライン開始からのフレーム(Timeline.GetMarkers() が返す値) |
name |
必須 | マーカー名(Resolve は名前のないマーカーを作らない) |
color |
任意 | Blue(既定), Cyan, Green, Yellow, Red, Pink, Purple, Fuchsia, Rose, Lavender, Sky, Mint, Lemon, Sand, Cocoa, Cream |
note・custom_data |
任意 | 文字列 |
duration |
任意 | 1以上のフレーム数。既定 1 |
markersがなければテンプレートのマーカーをそのまま残し、あれば置き換え、"markers": []なら消します。- 同じフレームに2つのマーカーは置けません。
CSV¶
track,source_in,source_out,timeline_start,fade_in,fade_out,crossfade,color,media,volume_keyframes
1,0,3600,86400,,,,,,
2,0,3600,86400,,,,,,
1,7200,10800,90000,,,60,,,
3,0,1200,86400,,24,,Orange,bgm/intro.wav,"[[0,-12.0],[600,-18.0]]"
- 1行目は上の列名の見出し。UTF-8(BOM 付きも可)。
unitsはframesとみなします。 track列かtracks列のどちらか一方を使います。CSV のセルにはトラック番号を1つ(トラックごとに行を繰り返す)、またはtracks列ならallを書きます。- 空のセルは「指定なし」です。
検証¶
書き込みの前にカット表全体を検査します。次の場合は拒否し、出力ファイルは作りません。
unitsがない/framesでない、知らない列、trackとtracksの両方、存在しないトラック番号- 整数でない・負の値・空や逆向きのカット、クリップより長いフェード
- 素材の長さを超える
source_out、1トラック上で重なるクリップ - 奇数の
crossfade、直前に接するカットがない・素材の余白がない・つなぎ目にフェードがあるクロスフェード - 知らないクリップ色・マーカー色、名前のないマーカー、
frame/offsetの両方または片方もない、タイムライン開始より前、同じフレームに2つ
書き込み後は一時ファイルを reader で読み直し、全オーディオクリップとクロスフェードをカット表と照合します(トラック・順序・位置・ソースIn/Out・フェード・音量キーフレーム・色・素材ファイル)。