top of page

GameAudio & Art

2

Track

AZSTOKE_AllDeleteTopSelectTrackSearchNotUseMediaAndTrack

選択トラックを先頭にミュート削除と未使用トラックを削除

RANK
SNS SHARE

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

require("reaper_AZSTOKE_SILVER")


function Msg(param)

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

end


_,allCount = reaper.AZ_GetMediaTypeCount(0,"")


--Mute Media Delete

for i = allCount-1,0,-1 do

   _,mute = reaper.AZ_GetMediaMute(0,i)

   if mute then

      reaper.AZ_DeleteMedia(0,i)

   end

end


retval,depthList = AZ_SILVER.AZ_GetTrackDepthList(0)

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

track,trackId = reaper.AZ_GetSelectedTrackFirstInfo(0)


for a = 0,1 do 

    for i = count-1,trackId,-1 do

        _,allCount = reaper.AZ_GetTrackMediaTypeCount(0,i,"")

       retval,trackList = AZ_SILVER.AZ_GetTrackIdChildList(0,i)

       if allCount == 0 and retval == false then

          retval = reaper.AZ_DeleteTrackIdSelect(0,i,0)

       end

    end

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

    for i = 0,count-1 do

        track = reaper.AZ_GetTrackItemSelect(0,i,0)

        for e, value in pairs(depthList) do

           if track == depthList[e].Track then

              retval = reaper.AZ_SetTrackItemDepth(track,depthList[e].Depth)

           end

        end

    end

end

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

require("reaper_AZSTOKE_SILVER")


  • SILVERのAPIを利用可能にする


function Msg(param)

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

end


  • デバック用コンソール出力関数


_,allCount = reaper.AZ_GetMediaTypeCount(0,"")


  • 全てのメディアの数を出力してallCountに代入


--Mute Media Delete

for i = allCount-1,0,-1 do


  • allCountから0に向かって逆にループ再生

   _,mute = reaper.AZ_GetMediaMute(0,i)


  • 各メディアのミュート情報を取得

   if mute then


  • ミュートがTrue(ミュート状態)だった場合以下に続く

      reaper.AZ_DeleteMedia(0,i)


  • [i]のIndexメディアを削除

   end

end


retval,depthList = AZ_SILVER.AZ_GetTrackDepthList(0)


  • 全トラックの階層情報をリストで取得してdepthListに代入


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


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

track,trackId = reaper.AZ_GetSelectedTrackFirstInfo(0)


  • すべての選択トラックの先頭トラックとトラックIDを取得してtrack/trackIdに代入


for a = 0,1 do 

  • 階層が変わって削除できていない場合を防ぐために2回ループ

    for i = count-1,trackId,-1 do


  • トラックの数から選択先頭トラックまでをループ

        _,allCount = reaper.AZ_GetTrackMediaTypeCount(0,i,"")


  • 指定トラックIDのメディアの数を取得してallCountに代入


       retval,trackList = AZ_SILVER.AZ_GetTrackIdChildList(0,i)


・指定トラックIDの子のトラックを取得してtrackListに代入

・子トラックがない場合はretvalにfalseを返す。


       if allCount == 0 and retval == false then


  • もしトラックにメディアが一つもなく子トラックがない場合


          retval = reaper.AZ_DeleteTrackIdSelect(0,i,0)


  • 指定トラックを削除する

       end

    end


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


  • 削除したので再度残りのトラックの数を出力


    for i = 0,count-1 do


  • トラックの数ループ再生


        track = reaper.AZ_GetTrackItemSelect(0,i,0)


  • 指定IDのトラックを取得してtrackに代入

        for e, value in pairs(depthList) do


  • 階層リストの数分ループ

           if track == depthList[e].Track then


  • もしtrackと階層配列内のtrackが一致したら

              retval = reaper.AZ_SetTrackItemDepth(track,depthList[e].Depth)


  • そのトラックの階層を前の状態に戻す


           end

        end

    end

end

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

専用APIをダウンロード

する必要があります。

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

  • 削除を開始したい先頭トラックを選択

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

LUA

reaper.AZ_GetMediaTypeCount

reaper.AZ_GetMediaMute

reaper.AZ_DeleteMedia

AZ_SILVER.AZ_GetTrackDepthList

reaper.AZ_GetTrackCountSelect

reaper.AZ_GetSelectedTrackFirstInfo

reaper.AZ_GetTrackMediaTypeCount

AZ_SILVER.AZ_GetTrackIdChildList

reaper.AZ_DeleteTrackIdSelect

reaper.AZ_GetTrackItemSelect

reaper.AZ_SetTrackItemDepth

​ReaScript File Download 👇

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

- Script Download -
bottom of page