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


はじめに

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

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

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

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

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

全体の流れ

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

入力ダイアログ

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

ソース

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も使えるのが分かったので、いろいろはかどりそう。

使い方書いてないじゃないか!( 20210414 追記)

久しぶりに大量に名前をつけて保存したい機会がきたのでここをみて、実行しても動きませんでした・・・

pythonのスクリプトを動かすとかのところまでは一緒なので、以下の順で

これで動くはず。

1.リージョンを選択し、 
2. aaa,bbb,ccc, といったカンマ区切りの文字列をテキスト入力(ペースト)して
3. OKを押す

※トラック名を空にしておく必要があるかも(トラック名がリージョンに付与される場合があるようなので)

あとは、こんな感じの設定で出力すると リージョン名(アイテム名)でファイルが保存できます。