soundflowで作ろう4 "Auto Stem Bounce"

こんにちは

今回も第2回と同じように、
私がstoreにアップしている既存のスクリプトを紹介しようと思います。

最後のほうに大作できたのでお楽しみに。


Auto Offline Stem Bounceというのがありまして


画像1

オフラインとオンラインの二種類作ってます。

今回はオフラインの方の紹介をしようと思います。


インストールしましょう


インストールしていただくとこんな感じになっております。

画像2

もうこのDescription見て、動画見てもらえれば使用法わかりますが、
説明します。

やることは3つだけ!簡単です。



最初に


画像3

サンプルとして、こうしてTDが終わったセッションを作りました。

さて、Final も Inst も minusOne も作ったので、
ステムを作りますかー

1️⃣まず最初に

この先のステムバウンスのフォーマットを指定してください、

具体的にはファイルの形式、書き出し先、等です。

画像4

以後は全てこの設定で作業が続いていきますので、
そのための設定です。

⚠️このスクリプトは "Import After Bounce" する前提で組まれておりますので、
サンプルレートはセッションと同一であることが必須です。
別サンプルレートを作りたい場合は全て終了後にコンバートしましょう。


画像5

2️⃣適当な範囲指定して、一回Bounceしてください。
(このバウンスは確認行為なので、理解しているならばやらなくてもいいです)



分けたいグループを作る


3️⃣希望の分け方のグループを作ります。
命名規則があります。

01_Stem_~
02_Stem_~
03_Stem_~

とグループの数を増やしていってください。

画像6

こんな感じですので、

画像7

こんな風にしてみました。


⚠️実用時の注意点

実際にミックスして多数のグループが出来上がった状態でこのスクリプトを使用するとなにやらうまく動作しないことがあります💧

ステム作る用のセッションをSave asで作って、既存のグループを消去してからこのグループ分けをすることをお勧めします。

(このバグ、自分が使うのに困ってないので解消する気あんまりないです🙇‍♂️)



あとは簡単


4️⃣バウンスしたい範囲の Selection Marker を作ってください。

画像8


画像9

マーカーナンバーは "325" です。名前はなんでもいいです。


実行


準備OK

実行!

画像10

余談ですが、なーんでいつもこんなちっちゃい画質悪い動画かといいますと、gifであげていて、noteの一枚の画像が容量制限が10MBなためです。

ちゃんと綺麗な最後までやった動画以下にあげてます。

ヒュー!!

こんなことができます。

コーヒーでも飲みながら画面見てれば終わります。

最高すぎ😇

動作としては
1. 01_Stem_~の規則に則った名称のグループを選択
2. それらをソロにする
3. "325" のメモリーロケーションをcall
4. バウンスウィンドウ
5. 1のグループ名をファイルネームへコピー
6. バウンス実行
7. 出来上がったオーディオを新規トラックで選択範囲にインポート
8. インポートされたトラックをイナクティブにする
9. 以降繰り返し
というものです。


途中でなにか想定外の動作が起きるとエラーで止まってしまいます。
(同名ファイルがあるよ?とアラートが出てしまったり)
その場合、
その時点までできているステムのグループを消去すれば、
続きから実行することができます。


あとこういった大技系スクリプトを使う際に

途中で
「え、違う違う!」
みたいなこと起きた時のために

画像11

"Stop All Running Command" はどこかにアサインしておいた方がいいです。

画像12

メニューバーにもあるやつですけどね、

画像13

わたしはStream deckに入れてます。




さてさてさてmodしましょう


こっからが本題なんですよね、
このスクリプトをまた Mod してみようと思います🚧

私は現状で満足してるけど、
人によってはいろいろ変えたい部分があるはず、

ってことで。



セッションにインポートしたくないんだが?


まずこういう人

しといた方がいいと思うよ?😇
確認のためにも。

と思うんですけど、まぁ場合によりますよね。

画像14

Installed Package から "Make Editable Copy" しましょう。

画像15

こうして、

オーディオインポートに該当する部分のスクリプトを消します。

毎回の私のnoteを読んでいただいている方はだいたいわかってきてると思います。

画像16

ここ!

87行目が "Audio Import Option window" が表示されるまで待つ、というスクリプト

103-105行目が 出来上がったトラックをイナクティブにするスクリプト

これらの動作はインポートしないなら発生しない動作です。
なので、87-105行目を消します。

それと、

画像20

72.73行目、Bounce window の Import After Bounce チェックボックスをEnableにする
というスクリプトなので、これを Disable に変えましょう。


    sf.ui.proTools.windows.whoseTitle.is("Bounce Mix").first.groups.whoseTitle.is("Location").first.checkBoxes.whoseTitle.is("Import After Bounce").first.checkboxSet({
       targetValue: "Disable",
   });


これでOK

できました。



マーカー325使いたくないんだが?


いる?そんな人🤔

でもこれもスクリプトを見れば簡単!

画像17

ここにマーカー325を呼び出している行があるので
62行目の数字を自分のすきなマーカーのナンバーにすればよし。



グループ作るとかじゃなくて全バラで出したいんだが?


これが本題。

ううう、これ難しそうだなぁ……

さて、出来上がっておりますこの "Auto Offline Stem Bounce" ちゃんですが、
私は大して頑張っておらず、
これもforumのマスターたちによって教えてもらって出来上がったものです。

ですから、このスクリプトの中身、私完全に理解はできてないんですよねぇ……

この大きなmod、作れるだろうか……

とりあえず設計としては、

全部のトラック、というか、選択しているトラックを全てバラで書き出す

が利便性もよさそうですよね。

えーっと、Forumで

selected, multipul, repeat, とかそういう言葉で検索します。

🌝🌝🌝🌝🌝🌝

🌞

これや!きっと!

function doForAllSelectedTracks(action) {
   var originallySelectedTrackNames = sf.ui.proTools.selectedTrackNames;

   try {
       sf.ui.proTools.selectedTrackHeaders.forEach(track => {
           track.trackSelect();
           action(track);
       });
   }
   finally {
       sf.ui.proTools.trackSelectByName({ names: originallySelectedTrackNames });
   }
}

/**@param {AxPtTrackHeader} track */
function trackFunc(track) {

   //Insert your code here
   log(track.normalizedTrackName);

}

doForAllSelectedTracks(trackFunc);

こういったコードを記載してくれています。
//Insert your code here
って親切に書いてくれているので、ここに試しに選択しているトラックをイナクティブにするスクリプトを入れてみましょう。

画像18

これ

そうするとこうなります


function doForAllSelectedTracks(action) {
   var originallySelectedTrackNames = sf.ui.proTools.selectedTrackNames;

   try {
       sf.ui.proTools.selectedTrackHeaders.forEach(track => {
           track.trackSelect();
           action(track);
       });
   }
   finally {
       sf.ui.proTools.trackSelectByName({ names: originallySelectedTrackNames });
   }
}

/**@param {AxPtTrackHeader} track */
function trackFunc(track) {

   //Insert your code here

   sf.ui.proTools.trackSetActive({
       targetValue: "Toggle",
   });

   log(track.normalizedTrackName);

}

doForAllSelectedTracks(trackFunc);

はい。

動作確認

画像19

おおー!すごい!

選択している全てのトラックに対して同じ行動が順番に行われています。

見づらいですが右上のとこに各トラックネームが出てます。

つまり各トラックの名前もgetできているということですね。

これを組み合わせればいけそう。

……

試行錯誤中……

⚠️🔨💦⚠️🔨💦⚠️🔨💦

(1時間後)


できた……!!!!!!

選択したトラックを全て個別にバウンス

もちろん全トラック選べば全部バラになる。

オーディオトラックだけ選ぶ必要はありますが。


こういうのを作る時には一つづつ一つづつ機能を追加していくことが大事です。
さきほどイナクティブを順番に行うことに成功したので、
この場合まず1つづつソロにするスクリプトを完成させます。
それができたらソロにした後にバウンスウィンドウを開けるように。
その場合一旦バウンスウィンドウは毎回クローズするようにして確認します。
そこまでうまくいったら次はバウンスウィンドウにトラックネームが正しく入るようにできるか確認
…………


といった工程を経て無事完成しました。



Storeにあげました


これ助かる人いるんじゃないかなー、いたら嬉しいです。

画像21

storeにあげました。


使用上の⚠️注意点は、説明にも書いてあるんですが、

画像22

Import ver を使用する場合は
範囲選択の "325" セレクションマーカーを作る際に、
一番下のトラックを選択してマーカー作成してください。

こうしないとうまく動きません。



みなさんガンガン使ってください。


引き続き記事を購入してもらえるようにしてます。

買っても買わなくても読める内容は変わらないのですが、
これはかなりの自信作なのでスタバおごってもいいかな、
というくらいの気持ちの方いらしたらどうぞよろしくお願いします🙇‍♂️



ここから先は

11字

¥ 300

この記事が気に入ったらサポートをしてみませんか?