Menu

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になります。

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)

▽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()

 

指定したメディアを選択する

reaper.SetMediaItemSelected(MediaItem item, boolean selected)

▽Sampleコード

 プロジェクトの指定(開いているプロジェクト=0)とメディアの順番に基づいたID番号を指定

 その指定されたメディアファイルを選択する。

​ 描画をアップデートして表示

item = reaper.GetMediaItem(0, 4)
reaper.SetMediaItemSelected(item,true)
reaper.UpdateArrange()

※注意※

reaper.UpdateArrange()

​こちらを最後に実行することでセットされた値に対してアレンジビュー内の描画を更新されます。

​このコードが呼ばれていないと変わりません。

 

​選択するMediaは別のコードで取得してくる必要があります。Sampleコードは以下のコードを利用

 

string reaper.GetTakeName(MediaItem_Take take)メディアテイクの名前を取得する

 

指定したメディアテイクを取得します。通常はテイクがないのでinteger tk = 0になります。

​取得したメディアテイクでNameを取得できます。,wavまで取得できるのでSourceと同様の名前の取得が可能性です。

MediaItem_Take reaper.GetTake(MediaItem item, integer takeidx)

string reaper.GetTakeName(MediaItem_Take take)

▽Sampleコード

 GetTakeNameと組み合わせてテイクの名前の取得を行うことができます。

​ テイクの名前はメディアに書かれている名前でSourceNameと同様のものを取得することができます。

 アイテムをカウントを行い、プロジェクト内のメディアを取得して各テイクを出して

​ それごとのNameを取得しています。

function Msg(param)
 reaper.ShowConsoleMsg(tostring(param).."\n")
end
itemNamelist = {}

item_count = reaper.CountMediaItems(0)
for i = 0,item_count-1 do
item = reaper.GetMediaItem(0,i)
item_take = reaper.GetTake( item, 0 )
item_name = reaper.GetTakeName( item_take )
itemNamelist[i] = item_name
Msg(itemNamelist[i])
end

 

指定したメディアテイクの名前を変更することができます。

​他にもParnameで設定できそうですがここは不明です。

boolean retval, string stringNeedBig = reaper.GetSetMediaItemTakeInfo_String(MediaItem_Take tk, string parmname, string stringNeedBig, boolean setNewValue)

▽Sampleコード

​ 指定のTakeの名前を挿入、変更することができます。

 ”P_NAME”で名前を変更するという設定になります。

​ ”bbb”は仮の名前です。ここに変更したいStringsをいれることで変更が可能です。

item = reaper.GetMediaItem(0,0)
item_take = reaper.GetTake( item, 0 )
reaper.GetSetMediaItemTakeInfo_String(item_take, "P_NAME", "bbb", true)

 

指定したテイクのソースを取得することができます。

PCM_source reaper.GetMediaItemTake_Source(MediaItem_Take take)

▽Sampleコード

 プロジェクトの指定(開いているプロジェクト=0)とメディアの順番に基づいたID番号を指定

 その指定されたメディアファイルを選択する。

​ 描画をアップデートして表示

 function Msg(param)
  reaper.ShowConsoleMsg(tostring(param).."\n")
 end
  
  item = reaper.GetSelectedMediaItem(0,0)
  item_take = reaper.GetTake( item, 0 )
  item_length = reaper.GetMediaItemInfo_Value(item, "D_LENGTH")
  item_source =  reaper.GetMediaItemTake_Source(item_take)
  
  Msg(item_source)

 

指定のメディアをトラックの変更を行うことができ、上下移動させることができる。

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()

MediaItem reaper.AddMediaItemToTrack(MediaTrack tr)空のメディアアイテムを追加

MediaItem_Take reaper.AddTakeToMediaItem(MediaItem item)空のメディアテイクを追加

 
 

①新規で空のメディアアイテムを追加します。

②新規で空のメディアテイクを追加します。

他のアイテムからコピーするのに対して使用することができます。

​そのためには空箱を用意してあげる必要があるためです。

MediaItem reaper.AddMediaItemToTrack(MediaTrack tr)

MediaItem_Take reaper.AddTakeToMediaItem(MediaItem item)

▽Sampleコード

 GetTrackを使用して追加する波形を置く場所を決めます。

 そしてそのトラックを指定して空メディアを追加します。

 初期長さは0秒ですので長さをセットするためにSetMediaInfo_Valueを使用して長さをセットします。

​ その空メディアに空テイクをセットします。

  tr = reaper.GetTrack(0, 0)
  itemAdd = reaper.AddMediaItemToTrack( tr )
  reaper.SetMediaItemInfo_Value(itemAdd,"D_LENGTH",3)
  takeAdd = reaper.AddTakeToMediaItem( itemAdd )

 

メディアテイクに対して指定のソースを入れることができます。

AddMediaItemToTrackとAddTakeToMediaIを使用して追加されたものにコピーなどが可能です。

▽Sampleコード

 選択しているファイルのメディアを取得

 そのメディアからテイクを取得

 メディアから長さを取得

 取得テイクからソースを取得

 

 トラック1を取得

 トラックに空のメディアを生成

 メディアの長さを取得メディアの長さにセット

 メディアの位置を6秒にセット

 空のメディアに空テイクを追加

 空テイクに上記で取得したソースをセット

​ これにより同じファイルのコピーができる。

  item = reaper.GetSelectedMediaItem(0,0)
  item_take = reaper.GetTake( item, 0 )
  item_length = reaper.GetMediaItemInfo_Value(item, "D_LENGTH")
  item_source =  reaper.GetMediaItemTake_Source(item_take)
  
  tr = reaper.GetTrack(0, 0)
  itemAdd = reaper.AddMediaItemToTrack( tr )
  reaper.SetMediaItemInfo_Value(itemAdd,"D_LENGTH",item_length)
  reaper.SetMediaItemInfo_Value(itemAdd,"D_POSITION",6)
  takeAdd = reaper.AddTakeToMediaItem( itemAdd )
  
  reaper.SetMediaItemTake_Source(takeAdd,item_source)

integer reaper.GetTakeNumStretchMarkers(MediaItem_Take take)ストレッチマーカーの数を取得

 

​テイクに設定されているストレッチマーカーの数を取得

▽Sampleコード

 取得したTakeのストレッチマーカーの数を取得

 function Msg(param)
  reaper.ShowConsoleMsg(tostring(param).."\n")
 end
  
  item = reaper.GetSelectedMediaItem(0,0)
  item_take = reaper.GetTake( item, 0 )
  item_num_stretch  = reaper.GetTakeNumStretchMarkers(item_take)
  
  Msg(item_num_stretch)

 

number reaper.GetTakeStretchMarkerSlope(MediaItem_Take take, integer idx)

指定IDのストレッチマーカーの変化値を取得

 

①指定IDのストレッチマーカーの位置を取得する。

②指定IDのストレッチマーカーの変化値を取得する。

▽Sampleコード

 テイクを指定してテイクで設定されているストレッチマーカーのIDを指定することでそのIDがテイクのどの位置に設定されているかを取得できます。

​ さらにテイクを指定とマーカーのIDを指定して変化している値の取得ができます。

 画像の赤枠の値が取得できます。

​ 変化値に関しては1~-1という数値で範囲設定がされます。

 function Msg(param)
  reaper.ShowConsoleMsg(tostring(param).."\n")
 end
  
  item = reaper.GetSelectedMediaItem(0,0)
  item_take = reaper.GetTake( item, 0 )
  item_num_stretch  = reaper.GetTakeNumStretchMarkers(item_take)
  retval, sth_pos = reaper.GetTakeStretchMarker(item_take,1)
  item_slope = reaper.GetTakeStretchMarkerSlope(item_take,1)
  Msg(sth_pos)
  Msg(item_slope)

 retval, color = reaper.GR_SelectColor()
 item = reaper.GetMediaItem(0,0)
 reaper.SetMediaItemInfo_Value(item,"I_CUSTOMCOLOR",color|0x1000000)

▽Sampleコード

 取得したアイテムの色を変更しています。

​  I_CUSTOMCOLOR メディアの色変更が可能

-AZSTOKe OFFICIAL-