0
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.

キューリンクを外部キューリンクに置き換えるスクリプト

Posted at

はじめに

キューシートを分割しようとしたときに、
ビルドのタイミングで、
キューリンクがあるとリンクが切れてしまう。(「親キューシートが異なるというエラー」になる)

これを修正するには、キューリンクを外部キューリンク化する必要がでてくる。
(または移動させない・・・)

ADX2でアクショントラックのパスを確認するスクリプトの記事にあるリンクキューのパスをコメントに書き込みつつも、
外部キューリンクにするのがかなり手間なので、
同じ構造のまま外部キューリンクにするスクリプトを作ってみました。

※なお、外部キューリンクは、「キュー名でリンク」 且つ、キューシートをまたいで同じキュー名は使わないという制限をつけてデータ作成しています。

スクリプト

選択したキューリンクを外部キューリンクに置き換えます。
キューリンクの位置を合わせるようにしています。

破壊的に実行するので、保存して実行か、Undoできるようにしておくとよいです。
(エラーに関してはあまり気を使っていないので)

MDS_ZChangeLinkExternalLink.py
# --Description:[tatmos][Change]キューリンクを外部キューリンクに置き換える
import sys
import cri.atomcraft.project as acproject
import cri.atomcraft.debug as acdebug

# 選択しているキューリンクを得る
cueLinks = acproject.get_selected_objects("CueLink")["data"]
if not cueLinks :
    # キューリンクが選択されていない場合は、選択項目の下のキューリンクを探す
    # 選択項目を取得
    parent_objs = []
    for parent_type in ["CueSheet", "CueSheetFolder", "CueFolder", "Cue"]:
        parent_objs.extend(acproject.get_selected_objects(parent_type)["data"])

    # 選択項目以下のキューリンクを取得
    cueLinks = []
    for parent_obj in parent_objs:
        cueLinks.extend(acproject.find_objects(parent_obj, "CueLink")["data"])

if not cueLinks :
    acdebug.warning("外部キューリンクに置き換えるキューリンクを選択してください.")
    sys.exit()

#キューリンクを外部キューリンク(ExternalCueLink)に置き換える
for cueLink in cueLinks:
    parent = acproject.get_parent(cueLink, "Track")["data"]
    tgtCueName = acproject.get_value(cueLink, "Name")["data"]
    comment = acproject.get_value(cueLink, "Comment")["data"]
    delayTimeMS = acproject.get_value(cueLink, "DelayTimeMS")["data"]

    acdebug.log("外部キューリンク作成 \"{0}\"".format(tgtCueName))

    # Create the ExternalCueLink
    externalCueLink = acproject.create_external_cuelink(parent, tgtCueName, None )["data"]
    acproject.set_value(externalCueLink, "DelayTimeMS", delayTimeMS)

    acproject.delete_object(cueLink)

ADX2で他のキューを再生したい場合以下の方法がある。

  • アクショントラックによるキュー再生
  • キューリンクによるキュー再生
  • 外部キューリンクによるキュー再生
  • サブシンセに変換してしまう

それぞれ、微妙に動作がことなるのでまとめてみた。

項目 メリット デメリット
アクショントラックによるキュー再生 プログラムでキューを再生するのと同じ感覚で使える。 参照されているキューを移動できなくなる。 呼び出しキューの音量とかの影響は受けない。 キューリミットが効いてしまう(たぶん)。
キューリンクによるキュー再生 同じキューシート内でしかリンクできない
外部キューリンクによるキュー再生 プレビューのとき「選択キューのみビルド再生」だと音がでない
サブシンセに変換してしまう リソースは増えてしまうかもだけど確実。 途中で元を変更した場合に追従しない。

おわりに

今回はキューリンクから外部キューリンクへの変換でしたが、
他のリンク系の変換とかもいろいろあると良いかもと思いつつ。

環境

Craft 3.45.00

0
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
0
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?