はじめに
ブロックの長さを知りたい時がよくあるので、
キューを選択して実行すると長さが得られるような
ADX2ロボット機能のスクリプトを書いてみた。
やっていること
選択キューを取得
キューの中にあるブロックを取得
ブロックの長さ(BlockEndPositionMs)を得る
少し整形してログに表示
出力結果
何か最後に長いブロックが入っている・・・ これはいらないブロックかもしれない。
なんてことに気が付けたりする。
あと、長さが一定だった場合は、ここでも同じ値になっていれば心配ないなど安心できる。
スクリプト
.py
# --Description:[tatmos][Analyze]選択したキューのブロックの長さをログに表示
import cri.atomcraft.debug as acdebug
import cri.atomcraft.project as acproject
# 選択しているCueを得る
selected_Cues = acproject.get_selected_objects("Cue")["data"]
if not selected_Cues :
acdebug.warning("Please select at least a Cue.")
sys.exit()
for cue in selected_Cues:
# パス表示
acdebug.log("Target Path:\"{0}\"".format(acproject.get_object_path(cue)["data"] ))
Blocks = acproject.get_child_objects (cue, "Block")["data"]
for block in Blocks:
blockEndPositionMs = acproject.get_value(block, "BlockEndPositionMs")
if blockEndPositionMs["succeed"]:
length = "{:,.3f}".format(float(blockEndPositionMs["data"]))
acdebug.log(" {0}\t {1}".format( "{:>12}".format(length) ,acproject.get_value(block, "Name")["data"]))
おわりに
ブロックの長さ、ビートに合わせていたりした場合などに、半端なタイミングだとうまくループにならなかったりといろいろあるので、そういうチェックを入れても良いかもしれない。