REAPERで時間ソートしてラベル付け

はじめに

REAPERでアイテムの名前を一括で変えるスクリプトはもとからあったので使っていたのですが、

image.png

トラックが分かれていると、それぞれのトラックごとに名前を流し込む感じだった。
一つのトラックでわけたものならよかったけど・・・

気づいた時にはトラック分けてしまっていた。

ので、
時間順で名前を流し込むようなスクリプトを書いてみた。

(あと、あまりに数が多いと文字オーバーしてるみたいで途中までしかうまくいかなかった)

全体の流れ

1.選択アイテム数を得る
2.選択アイテムを得る
3.カレントテイクを得る
4.カレントテイクの開始時刻とテイクを得る
5.時間で並び替える(ソート)
6.ダイアログで、リネーム用の文字を得る
7.ボタンが押されたらリネームする

入力ダイアログ

Python tkinterを使いました。
こんな画面がでます。

image.png

ソース

tatLable.py
RPR_ClearConsole()

#Get Selected Items
itemNum = RPR_CountSelectedMediaItems(0)

itemList = []

for itemidx in range(itemNum):
  mediaItem = RPR_GetSelectedMediaItem(0,itemidx)
  itemList.append(mediaItem)

# Sort Items
dict = {}  

for item in itemList:
  currentTakeId = RPR_GetMediaItemInfo_Value(item, "I_CURTAKE")
  startTime = RPR_GetMediaItemInfo_Value(item, "D_POSITION")
  currentTake = RPR_GetMediaItemTake(item,int(currentTakeId))

  retval, tk, parmname, stringNeedBig,setnewvalue = RPR_GetSetMediaItemTakeInfo_String(currentTake, "P_NAME", "", False)

  dict[startTime] = currentTake
  #RPR_ShowConsoleMsg(str(startTime) + ",")
#RPR_ShowConsoleMsg(str(startTime) + "\n")

# Sort Start Time    
sortedList = sorted(dict.items(), key=lambda x: x[0], reverse=False)

for item in sortedList:
  retval, tk, parmname, stringNeedBig,setnewvalue = RPR_GetSetMediaItemTakeInfo_String(item[1], "P_NAME", "", False)
  RPR_ShowConsoleMsg(stringNeedBig + ",")

# Dialog
import tkinter
root = tkinter.Tk()
root.title("Rename Item with CSV")
root.geometry("400x200")

label = tkinter.Label(root, text="Names(separated by \",\")")
label.grid()

txtbox = tkinter.Entry()
txtbox.grid()

def clicked():
  nameList = txtbox.get().split(',')

  index = 0
  length = len(nameList)
  for item in sortedList:

    if index <= length :
      newName = nameList[index]
      retval, tk, parmname, stringNeedBig,setnewvalue = RPR_GetSetMediaItemTakeInfo_String(item[1], "P_NAME", newName, True) 
      index += 1

  root.destroy()

button = tkinter.Button(root, text = "OK", command= clicked)
button.grid()

root.mainloop()

まとめ

時間ソートもなんとかできることがわかった。
簡単なGUIも使えるのが分かったので、いろいろはかどりそう。

tatmos
mydearest
VR×日本的アニメコンテンツで世界中にときめきを!一人称視点による主人公体験をVR上で提供します。
https://mydearestvr.com/company/
ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
コメント
この記事にコメントはありません。
あなたもコメントしてみませんか :)
すでにアカウントを持っている方は
ユーザーは見つかりませんでした