Final Cut Pro XでWAVファイルにロールを自動割り当てする機能の仕様を特定した
概要
Final Cut Pro Xには、オーディオファイルを読み込んだ時に、オーディオロールを自動的に設定する機能があります。
なのですが、その仕様の詳細がよくわからなかった。
このたび、試行錯誤の末、なんとか動作する仕様を特定したので、
まとめておきます。
Final Cut Pro X: オーディオレーンを使ってタイムラインを整理する https://support.apple.com/kb/PH12652
Final Cut Pro X: 読み込み時に割り当てられるオーディオロールを設定する https://support.apple.com/kb/PH26179
特定した仕様
iXML Chunkの構造
まず、iXML Chunkの定義。
次のようなChunkの構造を、wavファイルの最後に突っ込む。
wavファイルに含まれるRIFF Chunkにはファイルサイズの項目があるから、既存のwavファイルにiXML Chunkを追加する時は、そちらのサイズも増やさないとダメです。
bytes | 定義 | 入れるデータ |
---|---|---|
1-4 | Chunk ID | iXML |
5-8 | Chunk Size | iXML Chunkの長さ |
9- | iXML Meta Data | iXMLメタデータ |
iXMLメタデータ
Final Cut Pro Xで動作する、最小のiXMLメタデータの定義は次の通りです。
BWFXML/TRACK_LIST/TRACK/NAMEの位置(audio role nameと入っている場所)で、自動割り当てしたいオーディオロール名を指定します。
("&"、"<"、">"を値に使う場合はエスケープが必要。)
<?xml version="1.0" encoding="UTF-8"?> <BWFXML> <IXML_VERSION>1.27</IXML_VERSION> <TRACK_LIST> <TRACK_COUNT>1</TRACK_COUNT> <TRACK> <CHANNEL_INDEX>1</CHANNEL_INDEX> <INTERLEAVE_INDEX>1</INTERLEAVE_INDEX> <NAME>audio role name</NAME> </TRACK> </TRACK_LIST> </BWFXML>
拡張子
確認した限りでは、ファイルの拡張子は.wavでないと動作しない。
正直、別の拡張子を当てたかった(-_-;)
.bwfとか。
割り当てられるオーディオロール
ドラッグアンドドロップで、wavファイルをインポートする場合、
audio subroleはiXMLチャンクで指定できますが、親のオーディオロールは
指定できない(断言)。
デフォルトでは、ダイアログ(dialogue)の子ロールに割り当てられてしまう。
これを変えたい場合は、
- メディアの読み込み機能からインポート時にロールを指定するか、
- 環境設定でデフォルトで割り当てるロールを変更する、と良い。
ロールの編集で、ロールをドラッグすると、ロールどうしをマージできるので、
一度、取り込んでから、正しいロールに統合するのでも良いとは思います。
でも、一時でも、ダイアログ(dialogue)に割り当てられちゃうと面倒くさい使いづらい
その他、やったこと
まず、npmモジュールを作ってみた
npmモジュールを作った。
このFinal Cut Pro X用の、iXMLチャンクをwavファイルに追加できる。
https://www.npmjs.com/package/fcpx-audio-role-encoder
フォルダアクションでwavファイルを変換
作ったnpmモジュールを利用して、
wavファイルを変換するAutoMatorのアクションと、
フォルダに入れられたwavファイルを変換処理するフォルダアクションを作った。
https://github.com/taku-o/fcpx-audio-role-workflow
これで、フォルダに音声ファイルを突っ込むだけで、
ファイル名のパターンに従って、
オーディオロールが自動設定されるようになったのである。
めでたしめでたし。
なんだか、めずらしく役に立つ話、した気がする!!!