Track

 

​idxの列に1つトラックを挿入する。

▽Sampleコード

 すでに3つあるトラックに対してidx=2を設定して実行すると2のトラック一つ下に作られるコード

​ True/Falseは不明。特に変わらなかった。

reaper.InsertTrackAtIndex(2, true)

Rea0024.PNG
 

同プロジェクト内のトラック数を取得します。

▽Sampleコード

 指定プロジェクト内のトラック数を取得します。

function Msg(param)
reaper.ShowConsoleMsg(tostring(param).."\n")
end


 count = reaper.CountTracks(0)
Msg(count)

Rea0143.PNG
 

IDを指定してトラックを取得する。

▽Sampleコード

 プロジェクトを指定(開いているプロジェクト=0)トラックのIDを指定

 変数に代入している。

​ これでトラックの状態を変化させるための準備が整います。

function Msg(param)
 reaper.ShowConsoleMsg(tostring(param).."\n")
end

track = reaper.GetTrack(0, 0)

Msg(track)

Rea0027.PNG

reaper.SetTrackSelected(MediaTrack track, boolean selected)指定トラックを選択、非選択

 

指定のトラックを選択、非選択

​選択した後に別のトラックを選択しても前回の選択が外れることはありません。

▽Sampleコード

 プロジェクト内のトラック数を取得

 Forループでトラックを取得して

 トラックの名前を取得

 String.matchでトラック名の1を検索して

​ 引っかかったトラックを選択する

 count = reaper.CountTracks(0)
 
for i = 0,count-1 do
  track = reaper.GetTrack(0, i)
  _,s = reaper.GetTrackName(track)
  if "1" == string.match(s,"(1)")then
     reaper.SetTrackSelected(track,true)
  end
end

Rea0144.PNG
 

​指定のトラックのIDを取得します。

integer reaper.CSurf_TrackToID(MediaTrack track, boolean mcpView)

▽Sampleコード

 選択しているトラックを取得して

​ そのトラックのIDを取得しています。

function Msg(param)
reaper.ShowConsoleMsg(tostring(param).."\n")
end

track = reaper.GetSelectedTrack(0,0)
ID = reaper.CSurf_TrackToID( track,true  )
Msg(ID)

 

Rea0133.PNG
 

指定インデックスのトラックの階層を変更する。

​階層変更できないトラックに関しては反応しない

boolean reaper.ReorderSelectedTracks(integer beforeTrackIdx, integer makePrevFolder)

▽Sampleコード

 選択しているトラックを取得して

​ そのトラックのIDを取得しています。

​ 取得したIDにトラックを移動して階層も変更可能です。

   ★注意★

 波形を選択した状態でなければ反応しません。

 あくまで選択したトラックの移動と階層移動のスクリプトになります。

function Msg(param)
reaper.ShowConsoleMsg(tostring(param).."\n")
end

track = reaper.GetSelectedTrack(0,0)
ID = reaper.CSurf_TrackToID( track,true  )
reaper.ReorderSelectedTracks(ID ,1)

 

Rea0134.PNG

reaper.SetOnlyTrackSelected( track )一つだけトラックを選択する

 

​選択するトラックを指定して選択状態にしてその他のトラックの選択を解除する。

▽Sampleコード

 トラックの1;2トラック目を取得して

 そのトラックを選択状態にして他のトラックを解除しています。

​ ※TrackのID指定は0~になるので1は2トラック目になります。

local tr = reaper.GetTrack(0, 1)
reaper.SetOnlyTrackSelected(tr)

Rea0115.png

integer reaper.CountSelectedTracks(ReaProject proj)選択しているトラックの数を取得

 

選択しているトラックの数を取得する。

▽Sampleコード

 プロジェクトを指定することで選択しているトラックの数を取得することができます。

​ 開いているプロジェクト=0になります。

function Msg(param)
 reaper.ShowConsoleMsg(tostring(param).."\n")
end

trCount = reaper.CountSelectedTracks(0)
Msg(trCount)

Rea0057.png
 

指定のプロジェクト内の選択しているトラック自体を取得します。

MediaTrack reaper.GetSelectedTrack(ReaProject proj, integer seltrackidx)

▽Sampleコード

 プロジェクト内のトラックを選択した状態で

 このアクションコードを実行すると先頭のトラックのUserDateの取得ができます

function Msg(param)
 reaper.ShowConsoleMsg(tostring(param).."\n")
end
item_track = reaper.GetSelectedTrack(0,0)
Msg(item_track)

プロジェクトの指定と選択トラックの何個目かが必要です。

現状のプロジェクトの場合は0 トラックは0からスタートする番号順になります。​

なので先頭は0ということになります。

Rea0004.PNG
 

指定のプロジェクト内の選択しているトラック自体を取得します。

​この関数はマスタートラックも含まれます。

MediaTrack reaper.GetSelectedTrack2(ReaProject proj, integer seltrackidx, boolean wantmaster)

▽Sampleコード

 プロジェクト内のトラックを選択した状態で

 このアクションコードを実行すると先頭のトラックのUserDateの取得ができます。

function Msg(param)
 reaper.ShowConsoleMsg(tostring(param).."\n")
end
item_track = reaper.GetSelectedTrack2(0,0,true)
Msg(item_track)

プロジェクトの指定と選択トラックの何個目かが必要です。

現状のプロジェクトの場合は0 トラックは0からスタートする番号順になります。​

なので先頭は0ということになります。

Boolに関しては、マスタートラックを取得できるようにするかどうかのTrue/Falseです。

​Trueにするとマスタートラックも取得範囲内に含まれるようになります。

Rea0005.PNG
 

取得したトラックの深さを取得します。

0が最上部の親、1.2.3と数字が増えていくにつれて階層が深いことを表します。

integer reaper.GetTrackDepth(MediaTrack track)

▽Sampleコード

 プロジェクト内のトラックを選択した状態で

 このアクションコードを実行すると先頭のトラックのUserDateの取得ができます。

function Msg(param)
reaper.ShowConsoleMsg(tostring(param).."\n")
end

track =  reaper.GetSelectedTrack( 0, 0 )
depth = reaper.GetTrackDepth(track)
Msg(depth)

Rea0132.PNG
 

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

boolean reaper.MoveMediaItemToTrack(MediaItem item, MediaTrack desttr)

▽Sampleコード

 選択しているメディアとトラック2を取得してそのメディアをトラック2に移動

​ そして描画を更新させることでメディアが下の2に移動している。

Rea0053.png

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

 

トラックに値をセットする。状態などを変化させることができます。

​ミュートにさせるやパンを変化、ボリュームなどです。

boolean reaper.SetMediaTrackInfo_Value(MediaTrack tr, string parmname, number newvalue)

▽Sampleコード

 Get.Trackを使用してトラックを取得してそのトラックに対して

 変化をさせています。

 B_MUTE : ミュートさせるかどうか 0 = fakse 1 = true

 D_VOL  :   ボリュームを変化させるかどうか 2(+6.05dB)のため計算式を付与させたほうがよい

 D_PAN  :  パンを変えることが可能 -1(左)~0(中心)~1(右)

 I_SOLO : ソロに設定するかどうか 0 = fakse 1 = true

 I_RECARM : Rec状態かどうか  0 = fakse 1 = true  

​ その他もあります。

tr = reaper.GetTrack(0, 0)
reaper.SetMediaTrackInfo_Value(tr, "B_MUTE", 1)
reaper.SetMediaTrackInfo_Value(tr, "D_VOL", 2)
reaper.SetMediaTrackInfo_Value(tr, "D_PAN", 1)
reaper.SetMediaTrackInfo_Value(tr, "I_SOLO", 1)
reaper.SetMediaTrackInfo_Value(tr, "I_RECARM", 1)

Rea0026.PNG

integer reaper.CountTrackMediaItems(MediaTrack track)トラックにあるメディアの数を取得

 

トラックを設定することでそのトラックのメディア数を取得できます。

integer reaper.CountTrackMediaItems(MediaTrack track)

▽Sampleコード

 Get.Trackを使用してトラックを取得してそのトラックに入っているメディア数を取得することができます。

 

 

function Msg(param)
 reaper.ShowConsoleMsg(tostring(param).."\n")
end

track = reaper.GetTrack(0,0)
item_count = reaper.CountTrackMediaItems(track)
Msg(item_count)

 

Rea0034.PNG
 

​指定トラックの名前を取得します。

 boolean retval, string buf = reaper.GetTrackName(MediaTrack track, string buf)

▽Sampleコード

 ▽選択したトラックの名前を取得

 セレクトトラックの数を取得してその数分Forループ流す

 そのカウント数とIDを紐づけてトラックを取得して

 そのトラックに対する名前を取得してコンソールに表示させています。

 

function Msg(param)
 reaper.ShowConsoleMsg(tostring(param).."\n")
end
 
 count = reaper.CountSelectedTracks(0)
 for i = 0,count-1 do
  track = reaper.GetSelectedTrack(0, i)
  _,s = reaper.GetTrackName(track)
  Msg(s)
 end

Rea0131.PNG
 

トラックを指定することで名前などの変更ができる。

boolean retval, string stringNeedBig = reaper.GetSetMediaTrackInfo_String(MediaTrack tr, string parmname, string stringNeedBig, boolean setNewValue)

▽Sampleコード

 選択トラックの名前に連番をふるコードです。

 選択しているトラック数をFor文でループをかけてトラックを取得して

 ”P_NAME”で名称の変更を行っています。

 他は現在不明 

​  P_ICON , P_MCP_LAYOUT , P_TCP_LAYOUTなど

 

function Msg(param)
 reaper.ShowConsoleMsg(tostring(param).."\n")
end

trCount = reaper.CountSelectedTracks(0)

for i = 0,trCount-1 do
track = reaper.GetSelectedTrack(0,i)
reaper.GetSetMediaTrackInfo_String(track, "P_NAME","0"..i+1 , true)
end

Rea0058.png
 
 

トラックを指定することでトラックの色を取得することができます。

​その色を使用して別のトラックに対して色をセットすることができます。

integer reaper.GetTrackColor(MediaTrack track)

reaper.SetTrackColor(MediaTrack track, integer color)

▽Sampleコード

 選択トラックの名前に連番をふるコードです。

 選択しているトラック数をFor文でループをかけてトラックを取得して

 ”P_NAME”で名称の変更を行っています。

 他は現在不明 

​  P_ICON , P_MCP_LAYOUT , P_TCP_LAYOUTなど

 

function Msg(param)
reaper.ShowConsoleMsg(tostring(param).."\n")
end
track = reaper.GetTrack(0, 0)
color = reaper.GetTrackColor( track )
track2 = reaper.GetTrack(0, 1)
reaper.SetTrackColor( track2, color )

Rea0136.PNG

reaper.TrackList_AdjustWindows( isMinor )トラックのTCPとMCPの更新

 
 

トラックの高さをピクセル設定できます。

​反映させるためにはTCPの更新が必要になります。


「isMinor = false」はTCPとMCPの両方を更新
「isMinor = true」はTCPのみを更新​

reaper.SetMediaTrackInfo_Value(track, "I_HEIGHTOVERRIDE", int)

▽Sampleコード

 選択トラックを取得して

 300ピクセルの高さにトラックを設定

​ トラックのTCPを更新

 表示をアップデートしてトラックのサイズ完了

track = reaper.GetSelectedTrack(0,0)
reaper.SetMediaTrackInfo_Value(track, "I_HEIGHTOVERRIDE", 300)
reaper.TrackList_AdjustWindows(true)
reaper.UpdateArrange()

Rea0162.png