2
Media
AZSTOKE_AllMediaNameAscendingOrderSetter
全てのメディアを昇順に並べ替える
RANK
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
プロジェクトに配置された全てのメディアを昇順に並べ替えられている
=参考文献===
To use the API, you need to sign up for a plan.
Download the dedicated API
need to do it.
*SILVER is scheduled to be released in May.
プロジェクト内にメディアを複数設置