top of page

5

Track

AZSTOKE_TrackSetSameAutoSetter

トラックのセットを同セット自動複数作成

RANK

os = reaper.GetOS()

if "Win" == string.match(os,"(Win)") then

   package.cpath = package.cpath .. ";"..reaper.GetResourcePath() .."/UserPlugins/?.dll"

else

   package.cpath = package.cpath .. ";"..reaper.GetResourcePath() .."/UserPlugins/?.dylib"

end

require("reaper_AZSTOKE_SILVER")


function Msg(param)

   reaper.ShowConsoleMsg(tostring(param).."\n")

end


trackNameList = {"pl0000","pl1000","pl2000","pl3000","pl4000","pl5000"}

trackColorList = {33554304,33521664,25165824,16777471,21004543,20988032}



--Get Master Select Track 

masterTrack = reaper.AZ_GetTrackItemSelect(0,0,1)

_,masterName = reaper.AZ_GetTrackItemName(masterTrack)

_,masterDepth = reaper.AZ_GetTrackItemDepth(masterTrack)


for i, value in pairs(trackNameList) do

   if masterName == trackNameList[i] then

      reaper.AZ_SetTrackItemColor(masterTrack,trackColorList[i])

      masterColor = trackColorList[i]

   end

end


--Get Master Track Children

_,childList,masterChildCount = AZ_SILVER.AZ_GetTrackItemChildList(masterTrack)


childInfoList = {}

for i, value in pairs(childList) do

    childInfoList[i] = {}

    _,childInfoList[i]["TrackName"]= reaper.AZ_GetTrackItemName(value)

    reaper.AZ_SetTrackItemColor(value,masterColor)

end


--delet trackNameList & trackBaseList create 

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

deletIDList = {}

idCount = 0


for i = 0,trCount-1 do

    _,name = reaper.AZ_GetTrackIdName(0,i)

    for i, value in pairs(trackNameList) do

        if name == value then

           idCount = idCount + 1

           deletIDList[idCount] = i

        end

    end

end


table.sort(deletIDList,function(a,b) return (a>b)end)


for i = 1,idCount do

    table.remove(trackNameList,deletIDList[i])

    table.remove(trackColorList,deletIDList[i])

end


--InsertTrack

for i, value in pairs(trackNameList) do

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

    track = reaper.AZ_InsertTrackId(0,count)

    reaper.AZ_SetTrackItemName(track,value)

    reaper.AZ_SetTrackItemDepth(track,masterDepth)

    reaper.AZ_SetTrackItemColor(track,trackColorList[i])

   

    for e = 1,masterChildCount do

        childTrack = reaper.AZ_InsertChildTrack(track)

        reaper.AZ_SetTrackItemName(childTrack,childInfoList[e].TrackName)

        reaper.AZ_SetTrackItemColor(childTrack,trackColorList[i])

    end

end




os = reaper.GetOS()

if "Win" == string.match(os,"(Win)") then

   package.cpath = package.cpath .. ";"..reaper.GetResourcePath() .."/UserPlugins/?.dll"

else

   package.cpath = package.cpath .. ";"..reaper.GetResourcePath() .."/UserPlugins/?.dylib"

end

require("reaper_AZSTOKE_SILVER")


・SilverのAPIを可能にする


function Msg(param)

   reaper.ShowConsoleMsg(tostring(param).."\n")

end


・デバック用コンソール出力


trackNameList = {"pl0000","pl1000","pl2000","pl3000","pl4000","pl5000"}

trackColorList = {33554304,33521664,25165824,16777471,21004543,20988032}


・トラックのベース名と各色番号を設定して配列に代入


--Get Master Select Track 

masterTrack = reaper.AZ_GetTrackItemSelect(0,0,1)


・ベーストラックを取得してmasterTrackに代入


_,masterName = reaper.AZ_GetTrackItemName(masterTrack)


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


_,masterDepth = reaper.AZ_GetTrackItemDepth(masterTrack)



・トラックの階層を取得してmasterDepthに代入


for i, value in pairs(trackNameList) do


・trackNameList分Forループ


   if masterName == trackNameList[i] then


・masterNameと一致する場合以下を実行


      reaper.AZ_SetTrackItemColor(masterTrack,trackColorList[i])


・トラックの色を設定


      masterColor = trackColorList[i]


・masterColorにカラーを設定


   end

end


--Get Master Track Children

_,childList,masterChildCount = AZ_SILVER.AZ_GetTrackItemChildList(masterTrack)


・masterTrackの子トラックを出力してchildListに配列代入


childInfoList = {}


・子トラックの各情報を登録する配列を用意


for i, value in pairs(childList) do


・childList分Forループ


    childInfoList[i] = {}


・子トラックのさらに情報分岐用に配列に配列の枠を用意


    _,childInfoList[i]["TrackName"]= reaper.AZ_GetTrackItemName(value)


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


    reaper.AZ_SetTrackItemColor(value,masterColor)


・masterColorを子トラックに同色設定


end


--delet trackNameList & trackBaseList create 

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


・トラックの数を取得


deletIDList = {}

idCount = 0


for i = 0,trCount-1 do

    _,name = reaper.AZ_GetTrackIdName(0,i)


・トラックIDごとに名前を取得


    for i, value in pairs(trackNameList) do


・trackNameListごとにForルー@う


        if name == value then


・nameとtrackNameListを検索して一致するか確認


           idCount = idCount + 1

           deletIDList[idCount] = i


・一致する場合、すでにあると判断されて削除リストにIDを入れる 


        end

    end

end


table.sort(deletIDList,function(a,b) return (a>b)end)


deletIDListを降順ソート化する



for i = 1,idCount do

    table.remove(trackNameList,deletIDList[i])

    table.remove(trackColorList,deletIDList[i])

end



・後ろから順番に消す


--InsertTrack

for i, value in pairs(trackNameList) do


・trackNameList分Forループ


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


・トラックの数を取得


    track = reaper.AZ_InsertTrackId(0,count)


・一番最後にトラックを挿入してtrackのアイテムを出力


    reaper.AZ_SetTrackItemName(track,value)


・インサートしたトラックに名前を設定


    reaper.AZ_SetTrackItemDepth(track,masterDepth)


・インサートしたトラックにmasterの階層と同様にする


    reaper.AZ_SetTrackItemColor(track,trackColorList[i])


・色をtrackColorListに沿って設定する


    for e = 1,masterChildCount do


・masterChildCountの数分forを実行


        childTrack = reaper.AZ_InsertChildTrack(track)


・インサートしたトラックの子トラックをインサートしてchildTrackにアイテムを出力


        reaper.AZ_SetTrackItemName(childTrack,childInfoList[e].TrackName)


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


        reaper.AZ_SetTrackItemColor(childTrack,trackColorList[i])


・子トラックに色を設定


    end

end

APIの利用にはプランに加入し

専用APIをダウンロード

する必要があります。

​※SILVERは5月中の公開を予定しております

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

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

LUA

​ReaScript File Download 👇

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

- Script Download -
bottom of page