top of page

Track

6

トラック/メディア検知同セットを自動複製

RANK

AZSTOKE_AllTrackMediaSetSameAutoSetter

import sys


sys.path.append(RPR_GetResourcePath() + r"/UserPlugins")

from AZSTOKE_BRONZE_python import *

from AZSTOKE_SILVER_python import *


def Msg(parm):

    RPR_ShowConsoleMsg(str(parm) + "\n")


trackNameList = ["pl0000", "pl1000", "pl2000", "pl3000", "pl4000"]

trackColorList = [33554304, 33521664, 25165824, 16777471, 21004543]


retval,inputList = AZ_GetUserInputList("SourceImportPath", 1, "Path :", "D:/")


if retval:

#Get Master Select Track 

   masterColor = 0

   

   masterTrack = AZ_GetTrackItemSelect(0,0,1)

   _, _, masterName, _  = AZ_GetTrackItemName(masterTrack, "", 1024)

   _, _, masterDepth = AZ_GetTrackItemDepth(masterTrack, 0)


   for i, trackName in enumerate(trackNameList):

       if masterName == trackName:

          AZ_SetTrackItemColor(masterTrack, trackColorList[i])

          masterColor = trackColorList[i]


#Get FileList

   fileAllList = []

   _, fileList = AZ_GetFilePathList(inputList[0], "Wav")

   for filePth in fileList:

       _, splitList = AZ_GetStringSplitList(filePth,"\\")

              

       fileInfo = {}

       fileInfo["Path"] = filePth

       _, _, _, _, fileInfo["SourceName"], _ =  AZ_ReplaceSearchString(splitList[-1], ".wav", "", "", 1024)

       fileAllList.append(fileInfo)

      

#Get Master Track Children

   _, childList, masterChildCount = AZ_GetTrackItemChildList(masterTrack)


   childInfoList = []

   

   for child in childList:

       childInfo = {}

       _, _, childInfo["TrackName"], _ = AZ_GetTrackItemName(child, "", 1024)

       AZ_SetTrackItemColor(child, masterColor)

       _, _, _, childInfo["TrackMediaCount"], _ = AZ_GetTrackItemMediaTypeCount(child, "", 0, 0)

       _, _, childTrack = AZ_GetTrackItemIndex(child, 0)

    

       for i in range(childInfo["TrackMediaCount"]):

           childInfo[i] = {}

           _, _, _, _, childInfo[i]["MediaName"], _ = AZ_GetTrackMediaName(0, childTrack, i, "", 1024)

           _,  _, _, _, childInfo[i]["MediaPos"] = AZ_GetTrackMediaStartTimeSeconds(0, childTrack, i, 0)

           

       childInfoList.append(childInfo)


#delet trackNameList & trackBaseList create 

   _, _, _, trCount = AZ_GetTrackCountSelect(0, 0, 0)

   deletIDList = []


   for i in range(trCount):

        _, _, _, name, _ = AZ_GetTrackIdName(0, i, "", 1024)

        

        for j, trackName in enumerate(trackNameList):

            if name == trackName:

               deletIDList.append(j)


   for id in reversed(deletIDList):

       del trackNameList[id]

       del trackColorList[id]




#InsertTrack

   for i, trackName in enumerate(trackNameList):

        _, _, _, count = AZ_GetTrackCountSelect(0, 0, 0)

        track = AZ_InsertTrackId(0, count)

        AZ_SetTrackItemName(track, trackName)

        AZ_SetTrackItemDepth(track, masterDepth)

        AZ_SetTrackItemColor(track, trackColorList[i])

   

        for e in range(masterChildCount):

            childTrack,_ = AZ_InsertChildTrack(track, 0)

            AZ_SetTrackItemName(childTrack, childInfoList[e]["TrackName"])

            AZ_SetTrackItemColor(childTrack, trackColorList[i])

            

            for x in range(childInfoList[e]["TrackMediaCount"]):

                retval, _, _, _, newMediaName, _ = AZ_ReplaceSearchString(childInfoList[e][x]["MediaName"], masterName.lower(), trackName.lower(), "", 1024)

                for z in range(len(fileAllList)):

                    if newMediaName == fileAllList[z]["SourceName"]:

                       AZ_InsertMediaTrackItemSecond(childTrack, fileAllList[z]["Path"], 0, childInfoList[e][x]["MediaPos"])

import sys

sys.path.append(RPR_GetResourcePath() + r"/UserPlugins")

from AZSTOKE_SILVER_python import *


・SilverAPIを利用可能にする


def Msg(parm):

    RPR_ShowConsoleMsg(str(parm) + "\n")


・デバック表示用のコンソール出力関数を用意



trackNameList = ["pl0000", "pl1000", "pl2000", "pl3000", "pl4000"]

trackColorList = [33554304, 33521664, 25165824, 16777471, 21004543]



・ベース名と色を配列に設定


retval,inputList = AZ_GetUserInputList("SourceImportPath", 1, "Path :", "D:/")


・テキスト入力を設定(フォルダ階層をユーザーに指定させる)


if retval:


・テキスト入力が有効の場合以下を実行


#Get Master Select Track 

   masterColor = 0

   

   masterTrack = AZ_GetTrackItemSelect(0,0,1)

   _, _, masterName, _  = AZ_GetTrackItemName(masterTrack, "", 1024)

   _, _, masterDepth = AZ_GetTrackItemDepth(masterTrack, 0)


・選択しているマスタートラック/名前/階層を取得して各変数に代入


   for i, trackName in enumerate(trackNameList):

       if masterName == trackName:

          AZ_SetTrackItemColor(masterTrack, trackColorList[i])

          masterColor = trackColorList[i]



・マスタートラックの一致する配列の中身を確認して色を探して変数に代入


#Get FileList

   fileAllList = []

   _, fileList = AZ_GetFilePathList(inputList[0], "Wav")


・指定されたフォルダパスに含まれているwavを配列出力してfileListに代入


   for filePth in fileList:

       _, splitList = AZ_GetStringSplitList(filePth,"\\")

              

       fileInfo = {}

       fileInfo["Path"] = filePth

       _, _, _, _, fileInfo["SourceName"], _ =  AZ_ReplaceSearchString(splitList[-1], ".wav", "", "", 1024)

       fileAllList.append(fileInfo)

   

・filePathからsource名を出力してfillAllList配列に代入

   

#Get Master Track Children

   _, childList, masterChildCount = AZ_GetTrackItemChildList(masterTrack)



・マスタートラックの子トラックを出力してchildListに代入と子トラックの数をmasterChildCountに代入


   for child in childList:

       childInfo = {}

       _, _, childInfo["TrackName"], _ = AZ_GetTrackItemName(child, "", 1024)


・各子トラックの名前をchildInfoListに代入


       AZ_SetTrackItemColor(child, masterColor)


・マスターの子トラックにはマスターと同じ色を設定


       _, _, _, childInfo["TrackMediaCount"], _ = AZ_GetTrackItemMediaTypeCount(child, "", 0, 0)


・各子トラックに入っているメディア数を取得


       _, _, childTrack = AZ_GetTrackItemIndex(child, 0)


・各子トラックアイテムからidを取得してchildIdに代入

    

       for i in range(childInfo["TrackMediaCount"]):


・各子トラックのメディア数でループ再生


           childInfo[i] = {}

           _, _, _, _, childInfo[i]["MediaName"], _ = AZ_GetTrackMediaName(0, childTrack, i, "", 1024)

           _,  _, _, _, childInfo[i]["MediaPos"] = AZ_GetTrackMediaStartTimeSeconds(0, childTrack, i, 0)

       childInfoList.append(childInfo)


・メディアの名前と位置を取得して各変数に代入


       end

    end


#delet trackNameList & trackBaseList create 

   _, _, _, trCount = AZ_GetTrackCountSelect(0, 0, 0)

   deletIDList = []


   for i in range(trCount):

        _, _, _, name, _ = AZ_GetTrackIdName(0, i, "", 1024)


・全トラックの名前を取得してnameに代入


        for j, trackName in enumerate(trackNameList):


・ベース名の配列分ループ再生


            if name == trackName:


・全トラック名とベース名が一致した場合以下を実行


               deletIDList.append(j)


・ベース名と一致したのであればベースから削除対象

 ※すでに作られたものと認識する


   for id in reversed(deletIDList):

       del trackNameList[id]

       del trackColorList[id]

・ベース配列から削除を行う




#InsertTrack

   for i, trackName in enumerate(trackNameList):


・ベース名分ループ再生


        _, _, _, count = AZ_GetTrackCountSelect(0, 0, 0)


・全トラックの数を取得してcountに代入


        track = AZ_InsertTrackId(0, count)


・トラックの最後にトラックをインサート


        AZ_SetTrackItemName(track, trackName)

        AZ_SetTrackItemDepth(track, masterDepth)

        AZ_SetTrackItemColor(track, trackColorList[i])

   

・インサートトラックに名前、階層、色を設定


        for e in range(masterChildCount):


・子トラックの数分forループ対応


            childTrack,_ = AZ_InsertChildTrack(track, 0)


・各追加したベーストラックに子トラックをインサート


            AZ_SetTrackItemName(childTrack, childInfoList[e]["TrackName"])

            AZ_SetTrackItemColor(childTrack, trackColorList[i])


・子トラックに名前と色を設定


            for x in range(childInfoList[e]["TrackMediaCount"]):


・子トラックにメディアの数分forループ


                retval, _, _, _, newMediaName, _ = AZ_ReplaceSearchString(childInfoList[e][x]["MediaName"], masterName.lower(), trackName.lower(), "", 1024)


・メディア名に対してベース名を入れ替えてnewMediaNameに代入


                for z in range(len(fileAllList)):

・全ファイル分ループ再生


                    if newMediaName == fileAllList[z]["SourceName"]:


・sourceNameにnewMediaNameが一致したら以下を実行


                       AZ_InsertMediaTrackItemSecond(childTrack, fileAllList[z]["Path"], 0, childInfoList[e][x]["MediaPos"])


・一致したメディアを指定トラックと指定秒数に並べる



APIの利用にはBRONZEに

加入し専用APIを

ダウンロード

する必要があります。

  • ベースのトラック/子トラックを作成しておく

  • 使用しているベースのpl0000のメディアとベース名以外を一致した状態ですべて用意しておく

- Script Code -
- Script Image -
- Warm Up -
- Script Detail -
- API LINK -

PYTHON

​ReaScript File Download 👇

​※実行するには専用APIが必要です

- Script Download -
bottom of page