- API -
dofile(reaper.AZ_GetLuaInitPath())
require("reaper_AZSTOKE_SILVER")
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 = reaper.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)
deleteIDList = {}
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
deleteIDList[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
--Insert Track
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
- API Detail-
Create a base track/child track
- SCRIPT -
dofile(reaper.AZ_GetLuaInitPath())
require("reaper_AZSTOKE_SILVER")
・SilverのAPIを可能にする
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 = reaper.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