MeDIA
integer reaper.InsertMedia(string file, integer mode):外部メディアをインサート
外部からメディアをReaperプロジェクトにインサートすることができます。
integer reaper.InsertMedia(string file, integer mode)
▽Sampleコード
fileNameにパスを設定してそれをInsertMediaでメディアをインサート
Positionはカーソルの位置にインサートされる
0;選択しているトラックがあればそのトラック無ければ新しいトラックを作成、インサート
1;選択に関わらず新しいトラックにメディアをインサート
3;メディア選択したら新規テイクとして追加
4;他は未検証
fileName = "D:/test/01.wav"
reaper.InsertMedia(fileName, 0)

指定のプロジェクト内のメディアの数を整数で出します。
integer reaper.CountMediaItems(ReaProject proj)
▽Sampleコード
プロジェクト内に複数のメディアを置いた状態でこのアクションコードを実行すると
プロジェクト内のメディア数がわかる。
function Msg(param)
reaper.ShowConsoleMsg(tostring(param).."\n")
end
item_count = reaper.CountMediaItems(0)
Msg(item_count)

プロジェクトの指定が必要です。どのプロジェクトを参照してその中のメディアを検索するので!!
今開いているプロジェクトの場合は0になります。
指定のプロジェクト内のメディアをすべて選択か非選択を行えます。
reaper.SelectAllMediaItems(ReaProject proj, boolean selected)
▽Sampleコード
プロジェクト内で選択していた波形をすべて非選択にする。
reaper.SelectAllMediaItems( 0, false )

integer reaper.CountSelectedMediaItems(ReaProject proj):選択しているメディアの数をカウント
指定のプロジェクト内で選択しているメディアの数を整数で出します。
integer reaper.CountSelectedMediaItems(ReaProject proj)
▽Sampleコード
プロジェクト内に複数のメディアを置いた状態でこのアクションコードを実行すると
プロジェクト内のメディア数がわかる。
function Msg(param)
reaper.ShowConsoleMsg(tostring(param).."\n")
end
item_count = reaper.CountSelectedMediaItems(0)
Msg(item_count)

integer reaper.CountTrackMediaItems(MediaTrack track):指定トラックのメディア数を取得
指定トラックのメディア数を取得します。
integer reaper.CountTrackMediaItems(MediaTrack track)
▽Sampleコード
トラックを指定することでその指定トラック内のメディア数を取得
0~で1を指定しているので2番目のトラックを指定していることになります。
function Msg(param)
reaper.ShowConsoleMsg(tostring(param).."\n")
end
tr = reaper.GetTrack(0, 1)
item_count = reaper.CountTrackMediaItems(tr)
Msg(item_count)

指定のプロジェクト内のメディアアイテム自体を取得します。
MediaItem reaper.GetMediaItem(ReaProject proj, integer itemidx)
▽Sampleコード
プロジェクトの指定(開いているプロジェクト=0)とメディアインデックスを指定0~
トラックの上から1トラック内のメディアの後に2トラック目の左から順番に追加されていく
function Msg(param)
reaper.ShowConsoleMsg(tostring(param).."\n")
end
item = reaper.GetMediaItem(0, 4)
Msg(item)

MediaItem reaper.GetSelectedMediaItem(ReaProject proj, integer selitem):選択しているメディアアイテム取得
指定のプロジェクト内の選択しているメディアアイテム自体を取得します。
MediaItem reaper.GetSelectedMediaItem(ReaProject proj, integer selitem)
▽Sampleコード
プロジェクト内に複数のメディアを置いた状態でメディアアイテムを選択して
このアクションコードを実行すると選択での先頭メディアアイテムのUserDateを取得できています。
function Msg(param)
reaper.ShowConsoleMsg(tostring(param).."\n")
end
item = reaper.GetSelectedMediaItem(0,0)
Msg(item)

プロジェクトの指定と選択メディアの何個目かが必要です。
現状のプロジェクトの場合は0 メディアは0からスタートする番号順になります。
なので先頭は0ということになります。
MediaItem reaper.GetTrackMediaItem(MediaTrack tr, integer itemidx):指定トラックにあるメディアの取得
指定のトラックにあるメディアを取得します。
▽Sampleコード
トラックを取得してそのトラックの中に入っているメディアを取得します。
トラックに入っているIDの設定になるので上記のトラックに対してメディアが入っていたとしても
このコードは最初を0とします。
function Msg(param)
reaper.ShowConsoleMsg(tostring(param).."\n")
end
tr = reaper.GetTrack(0, 1)
item = reaper.GetTrackMediaItem(tr,0)
Msg(item)

MediaItem retval, Number position = reaper.BR_ItemAtMouseCursor():マウスカーソルの位置と重なっているメディアの取得
マウスの位置を取得してマウスカーソルに重なったメディアを取得
画面外の位置は-1と出る。
▽Sampleコード
プロジェクト内に複数のメディアを置いた状態でメディアアイテムを選択して
このアクションコードを実行すると選択での先頭メディアアイテムのUserDateを取得できています。
function Msg(param)
reaper.ShowConsoleMsg(tostring(param).."\n")
end
item_mouse , mouse_pos = reaper.BR_ItemAtMouseCursor()
Msg("mouse_pos = "..mouse_pos)
Msg("item_mouse = "..tostring(item_mouse))

指定のメディアアイテムの情報を取得する。
number reaper.GetMediaItemInfo_Value(MediaItem item, string parmname)
▽Sampleコード
()の中はMediaItemを代入する必要があるため下記のアイテム取得方法で取得したものを代入する
以下のString ParmNameをいれることでその情報を取得することができる
確認できているものだけ列挙する。
他の参照はhttps://www.reaper.fm/sdk/reascript/reascripthelp.html#GetMediaItemInfo_Value
B_MUTE:bool ミュートしているかどうか 0.0=False 1.0=true
D_POSITION : double メディアアイテムの先頭位置 秒
D_Vol : double メディアのノブでの上下変更の数値
※値が1からのdBの値でないため計算式を+で行う必要があります。
item_vol = reaper.GetMediaItemInfo_Value(item, "D_VOL")
item_volDB = 20*(math.log(item_vol,10))
D_LENGTH : double メディアの長さ
function Msg(param)
reaper.ShowConsoleMsg(tostring(param).."\n")
end
item = reaper.GetSelectedMediaItem(0,0)
item_mute = reaper.GetMediaItemInfo_Value(item, "B_MUTE")
item_pos = reaper.GetMediaItemInfo_Value(item, "D_POSITION")
item_length = reaper.GetMediaItemInfo_Value(item, "D_LENGTH")
item_vol = reaper.GetMediaItemInfo_Value(item, "D_VOL")
item_volDB = 20*(math.log(item_vol,10))
Msg("mute = ".. item_mute)
Msg("position = "..item_pos)
Msg("length = "..item_length)
Msg("volume = "..item_volDB)

boolean reaper.DeleteTrackMediaItem(MediaTrack tr, MediaItem it):指定トラックの指定メディアを削除する
トラックとメディアをしてすることでメディアを削除することができます。
boolean reaper.DeleteTrackMediaItem(MediaTrack tr, MediaItem it)
▽Sampleコード
トラックの取得とメディアアイテムの取得を行います。
それらを指定することで削除することができます。
tr = reaper.GetTrack(0, 0)
item = reaper.GetMediaItem(0, 0)
reaper.DeleteTrackMediaItem(tr,item )
reaper.UpdateArrange()

Lua function deleteTrackAllMedia(trid):指定トラックのすべてのメディアを削除
指定のトラック内にあるメディアをすべて削除します。
function deleteTrackAllMedia(trid)
local tr = reaper.GetTrack(0, trid)
local c = reaper.CountTrackMediaItems(tr)
local it = {}
for i = 0,c-1 do
it[i] = reaper.GetTrackMediaItem( tr, i )
end
for i = 0,c-1 do
reaper.DeleteTrackMediaItem( tr, it[i] )
end
reaper.UpdateArrange()
end
▽Sampleコード
トラックID[0]を指定(一番上のトラック)してそのトラックにあるメディアをすべて削除しています。
function deleteTrackAllMedia(trid)
local tr = reaper.GetTrack(0, trid)
local c = reaper.CountTrackMediaItems(tr)
local it = {}
for i = 0,c-1 do
it[i] = reaper.GetTrackMediaItem( tr, i )
end
for i = 0,c-1 do
reaper.DeleteTrackMediaItem( tr, it[i] )
end
reaper.UpdateArrange()
end
deleteTrackAllMedia(0)

boolean reaper.SetMediaItemInfo_Value(MediaItem item, string parmname, number newvalue):メディアに値をセットする
指定のメディアアイテムに値をセットする。
boolean reaper.SetMediaItemInfo_Value(MediaItem item, string parmname, number newvalue)
▽Sampleコード
()の中はMediaItemを代入する必要があるため下記のアイテム取得方法で取得したものを代入する
以下のString ParmNameをいれることでその情報を取得することができる
確認できているものだけ列挙する。
他の参照はhttps://www.reaper.fm/sdk/reascript/reascripthelp.html#SetMediaItemInfo_Value
B_MUTE:bool ミュートさせるかどうか 0.0=False 1.0=true
D_POSITION : double メディアアイテムの先頭位置 秒
D_LENGTH : double メディアの長さ ※タイムストレッチはしません。
D_Vol : double メディアのノブでの上下変更の数値
※以下の計算をすることでdBでの変更が可能です。
注意としてかならず現状の値を取得したものを計算する必要がある。
reaper.SetMediaItemInfo_Value(item,"D_LENGTH",3)
item_volDB = math.exp((item_volDB-1)*0.115129254)
-1の部分は可変 どれぐらい上げ下げしたいか設定すること
D_FADEINLEN_AUTO フェードインをつける 長さ秒で設定
D_FADEOUTLEN_AUTO フェードアウトをつける 長さを秒で指定
C_FADEINSHAPE フェードインの形状を変える 形状はNumberID 図を参照
C_FADEOUTSHAPE フェードアウトの形状を変える 形状はNumberID 図を参照

item = reaper.GetSelectedMediaItem(0,0)
item_vol = reaper.GetMediaItemInfo_Value(item, "D_VOL")
item_volDB = 20*(math.log(item_vol,10))
reaper.SetMediaItemInfo_Value(item,"B_MUTE",1)
reaper.SetMediaItemInfo_Value(item,"D_POSITION",4)
reaper.SetMediaItemInfo_Value(item,"D_LENGTH",3)
item_volDB = math.exp((item_volDB-1)*0.115129254)
reaper.SetMediaItemInfo_Value(item,"D_VOL",item_volDB)
reaper.SetMediaItemInfo_Value(item,"D_FADEINLEN_AUTO",0.02)
reaper.SetMediaItemInfo_Value(item,"D_FADEOUTLEN_AUTO",0.02)
reaper.SetMediaItemInfo_Value(item,"C_FADEINSHAPE",0)
reaper.SetMediaItemInfo_Value(item,"C_FADEOUTSHAPE",3)
reaper.UpdateArrange()

▽Sampleコード
取得したアイテムの色を変更しています。
I_CUSTOMCOLOR メディアの色変更が可能
retval, color = reaper.GR_SelectColor()
item = reaper.GetMediaItem(0,0)
reaper.SetMediaItemInfo_Value(item,"I_CUSTOMCOLOR",color|0x1000000)
指定したメディアを選択する
reaper.SetMediaItemSelected(MediaItem item, boolean selected)
▽Sampleコード
プロジェクトの指定(開いているプロジェクト=0)とメディアの順番に基づいたID番号を指定
その指定されたメディアファイルを選択する。
描画をアップデートして表示
item = reaper.GetMediaItem(0, 4)
reaper.SetMediaItemSelected(item,true)
reaper.UpdateArrange()
※注意※
reaper.UpdateArrange()
こちらを最後に実行することでセットされた値に対してアレンジビュー内の描画を更新されます。
このコードが呼ばれていないと変わりません。
選択するMediaは別のコードで取得してくる必要があります。Sampleコードは以下のコードを利用

指定のメディアをトラックの変更を行うことができ、上下移動させることができる。
boolean reaper.MoveMediaItemToTrack(MediaItem item, MediaTrack desttr)
▽Sampleコード
選択しているメディアとトラック2を取得してそのメディアをトラック2に移動
そして描画を更新させることでメディアが下の2に移動している。
function Msg(param)
reaper.ShowConsoleMsg(tostring(param).."\n")
end
item = reaper.GetSelectedMediaItem(0,0)
track = reaper.GetTrack(0,1)
move = reaper.MoveMediaItemToTrack(item,track)
Msg(move)
reaper.UpdateArrange()

reaper.BR_SetArrangeView(0,StartPos,EndPos):メディアViewの範囲を指定
メディアViewの範囲指定が可能になります。
▽Sampleコード
選択メディアを取得
選択メディアのポジションを取得
選択メディアの長さを取得
ポジションと長さを足して終了タイミングを取得
MediaViewを開始と終了の範囲に設定
item = reaper.GetSelectedMediaItem(0,0)
itemStartPos = reaper.GetMediaItemInfo_Value(item, "D_POSITION")
itemLength = reaper.GetMediaItemInfo_Value(item, "D_LENGTH")
itemEndPos = itemStartPos + itemLength
reaper.BR_SetArrangeView(0,itemStartPos,itemEndPos)
