top of page

GameAudio & Art

全てのメディアを昇順に並べ替える

Media

AZSTOKE_AllMediaNameAscendingOrderSetter

2

function Msg(param)

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

end


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


mediaList = {}

mediaInterval = 1

setMediaTime = 0


for i = 1,allCount do

    mediaList[i] = {}

    _,mediaList[i]["name"]= reaper.AZ_GetMediaName(0,i-1)

    mediaList[i]["media"]= reaper.AZ_GetMediaItemSelect(0,i-1,0)

    _,mediaList[i]["length"]= reaper.AZ_GetMediaLength(0,i-1)

end


table.sort(mediaList,function(a,b) return (a.name < b.name)end)

for index, value in pairs(mediaList) do

    if index == 1 then

       reaper.AZ_SetMediaItemStartTimeSeconds(mediaList[index].media,setMediaTime)

       setMediaTime = setMediaTime+mediaList[index].length+mediaInterval

    else

       reaper.AZ_SetMediaItemStartTimeSeconds(mediaList[index].media,setMediaTime)

       setMediaTime = setMediaTime+mediaList[index].length+mediaInterval

    end

end

function Msg(param)

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

end

  • Msg コンソール出力関数をセット(記載なしでも問題ありません)


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

  • メディアの全ての数(allCount)を取得

mediaList = {}

  • 配列(medialist)を定義する

mediaInterval = 1

  • メディアの間隔値を変数として準備

setMediaTime = 0

  • メディアの開始位置を変数として準備


for i = 1,allCount do

  • *1

  • 1から変数(allCount)分、ループさせる

    mediaList[i] = {}

  • *2

  • 配列(mediaList[i])の中に配列{}を定義

    _,mediaList[i]["name"]= reaper.AZ_GetMediaName(0,i-1)

  • メディアの名前を取得し、mediaList[i]の["name"]に保存

    mediaList[i]["media"]= reaper.AZ_GetMediaItemSelect(0,i-1,0)

  • MeidaItemを取得し、mediaList[i]の["media"]に保存

    _,mediaList[i]["length"]= reaper.AZ_GetMediaLength(0,i-1)

  • メディアの長さを取得し、mediaList[i]の["length"]に保存

end



table.sort(mediaList,function(a,b) return (a.name < b.name)end)

  • *3

  • 配列(mediaList)の["name"]を利用して配列内のソートを行う

  • nameをソートすることで配列内の同IDに同封されている"media"、"length"も共に入れ替わる

for index, value in pairs(mediaList) do

  • 配列(mediaList)の要素数だけ繰り返す

 

   if index == 1 then

  • *4

  • 変数(index)が1の場合、下に続く

       reaper.AZ_SetMediaItemStartTimeSeconds(mediaList[index].media,setMediaTime)

  • 配列(mediaList[index])のメディアをsetMediaTime(0秒の位置)にセットする

       setMediaTime = setMediaTime+mediaList[index].length+mediaInterval

  • 2つ目の開始地点を出力

  • メディアの開始位置の変数(setMediaTime)+メディアの長さ+メディアの間隔値(1秒)


    else

  • if文 変数(index)の中身を確認

  • 1つ目以外の場合、下に続く

       reaper.AZ_SetMediaItemStartTimeSeconds(mediaList[index].media,setMediaTime)

  • 配列mediaList[index]のメディアをsetMediaTime(2つ目以降の位置)にセットする

       setMediaTime = setMediaTime+mediaList[index].length+mediaInterval

  • 3つ目以降の開始地点を出力

  • メディアの開始位置の変数(setMediaTime)+メディアの長さ+メディアの間隔値(1秒)

 

   end

  • 配列(mediaList)分、繰り返す


end

  • プロジェクトに配置された全てのメディアを昇順に並べ替えられている



=参考文献===

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

専用APIをダウンロード

する必要があります。

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

  1. プロジェクト内にメディアを複数設置

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

LUA

​ReaScript File Download 👇

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

- Script Download -
bottom of page