1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Adobe Auditionのマルチトラックセッションから複数の設定でミックスダウンしエクスポートするExtendScriptスクリプト

Posted at

Adobe Auditionのマルチトラックセッションから複数の設定でミックスダウンしエクスポートするExtendScriptスクリプト

やりたいこと

  • 例えばボイスドラマの編集と書き出しをやっており、次のような設定で最終出力したいとします。
    • SEなし、MP3
    • SEなし、PCM
    • SEあり、MP3
    • SEあり、PCM
  • 12トラックあると48回の出力作業。設定間違えやすいので楽にしたい。

環境

  • iMac (Retina 4K, 21.5-inch, 2019) macOS Big Sur 11.1
  • Adobe Audition 2020
  • Visual Studio Code

Auditionでスクリプティング

  • Auditionでは、「ファイル」-「スクリプトを参照して実行」でjsxファイルを実行できます。ExtendScriptというAdobeに独自拡張されたJavaScriptです。
  • デバッガとしてVisual Studio Code拡張機能でExtendScript Debuggerが供給されています。

実例

  • Auditionにはセッションテンプレートという機能があり、そこでトラック2〜5はSEに設定してあるという想定です。実際には名前で判断したほうがいいかもですね。

var document;
var minSeTrack = 2;
var maxSeTrack = 5;

function main() {
  if (app.name.indexOf("Audition") < 0) {
    alert("Audition用のスクリプトです", "エラー", true);
    return;
  }
  document = app.activeDocument;
  if (!document) {
    alert("アクティブなドキュメントがありません", "エラー", true);
    return;
  }
  if (document.reflect.name != "MultitrackDocument") {
    alert("マルチトラックセッションを選択してください", "エラー", true);
    return;
  }
  var fileNameWithoutExt = document.path.substr(0, document.path.lastIndexOf("."));
  setSeTrackActive(false);
  mixdownAndSave(fileNameWithoutExt + "_noSe");
  setSeTrackActive(true);
  mixdownAndSave(fileNameWithoutExt + "_Se");
  setSeTrackActive(true);
  app.invokeCommand("File.CloseUnusedMedia");
  alert("変換完了しました", "完了", false);
}
function setSeTrackActive(isActive) {
  for (var i = 0; i < document.audioTracks.length; i++) {
    var isMute = false;
    if (minSeTrack <= i && i <= maxSeTrack) isMute = !isActive;
    document.audioTracks[i].mute = isMute;
  }
}
function mixdownAndSave(name) {
  var num = app.documents.length;
  app.invokeCommand("Multitrack.MixdownAllToNewFile");
  while (num == app.documents.length) {
    $.sleep(500);
  }
  var mixdown = app.documents[app.documents.length - 1];
  saveAs(
    mixdown,
    new AudioFileFormat(AudioFileFormat.FORMAT_WAVE_PCM),
    name + ".wav"
  );
  saveAs(
    mixdown,
    new AudioFileFormat(AudioFileFormat.FORMAT_MP3_),
    name + ".mp3"
  );
  document.activate();
}

function saveAs(target, audioFileFormat, filename) {
  var params = new WaveDocumentSaveAsParameters();
  params.fileFormat = audioFileFormat;
  params.includeMetadata = true;
  params.sampleTypeConversion = null;
  target.saveAsDocument(filename, params);
  while (target.isBusy) {
    $.sleep(500);
  }
}

main();

参考にしたもの

  • まともな情報がありません。ディベロッパーコンソール https://console.adobe.io/apisandservices からAdobe Audition SDKが落とせて、その中に入ってるJSXでCommands.jsx,ScriptDictionary.jsx,ScriptDictionary2html.jsx,ScriptDictionaryElements.jsx,utils.jsxを使うと、app.invokeCommandに投げるAudition固有のコマンド文字列とクラスライブラリのドキュメントが一応得られますので、それを読んで頑張れば結構色々出来ます。
    • リフレクションで情報を取得して出力しているらしい。リフレクションを自分で使って解析もある程度は出来そうです。昔Sketchプラグインの仕事で似たようなことしてた経験が生きた。
  • ExtendScript共通のクラスや関数、使い方についてはこちら。 https://extendscript.docsforadobe.dev/extendscript-toolkit/index.html 特にExtendScript Tools and Featuresのところから飛べる奴は最初に読んでおくべきかも。

次にやること

  • 台本処理のrubyスクリプトから何かしら吐いてそれを元に自動でリソースを取り込んでいい感じに連結して準備してくれるツールを作ろうと思っています。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?