Track
idxの列に1つトラックを挿入する。
▽Sampleコード
すでに3つあるトラックに対してidx=2を設定して実行すると2のトラック一つ下に作られるコード
True/Falseは不明。特に変わらなかった。
reaper.InsertTrackAtIndex(2, true)

同プロジェクト内のトラック数を取得します。
▽Sampleコード
指定プロジェクト内のトラック数を取得します。
function Msg(param)
reaper.ShowConsoleMsg(tostring(param).."\n")
end
count = reaper.CountTracks(0)
Msg(count)

IDを指定してトラックを取得する。
▽Sampleコード
プロジェクトを指定(開いているプロジェクト=0)トラックのIDを指定
変数に代入している。
これでトラックの状態を変化させるための準備が整います。
function Msg(param)
reaper.ShowConsoleMsg(tostring(param).."\n")
end
track = reaper.GetTrack(0, 0)
Msg(track)

指定のトラックを選択、非選択
選択した後に別のトラックを選択しても前回の選択が外れることはありません。
▽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

指定のトラックの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)

指定インデックスのトラックの階層を変更する。
階層変更できないトラックに関しては反応しない
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)

reaper.SetOnlyTrackSelected( track ):一つだけトラックを選択する
選択するトラックを指定して選択状態にしてその他のトラックの選択を解除する。
▽Sampleコード
トラックの1;2トラック目を取得して
そのトラックを選択状態にして他のトラックを解除しています。
※TrackのID指定は0~になるので1は2トラック目になります。
local tr = reaper.GetTrack(0, 1)
reaper.SetOnlyTrackSelected(tr)

integer reaper.CountSelectedTracks(ReaProject proj):選択しているトラックの数を取得
選択しているトラックの数を取得する。
▽Sampleコード
プロジェクトを指定することで選択しているトラックの数を取得することができます。
開いているプロジェクト=0になります。
function Msg(param)
reaper.ShowConsoleMsg(tostring(param).."\n")
end
trCount = reaper.CountSelectedTracks(0)
Msg(trCount)

指定のプロジェクト内の選択しているトラック自体を取得します。
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ということになります。

MediaTrack reaper.GetSelectedTrack2(ReaProject proj, integer seltrackidx, boolean wantmaster):選択しているトラック(マスター含む)
指定のプロジェクト内の選択しているトラック自体を取得します。
この関数はマスタートラックも含まれます。
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にするとマスタートラックも取得範囲内に含まれるようになります。

取得したトラックの深さを取得します。
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)

指定のメディアをトラックの変更を行うことができ、上下移動させることができる。
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()
boolean reaper.SetMediaTrackInfo_Value(MediaTrack tr, string parmname, number newvalue):トラックに値をセットする。
トラックに値をセットする。状態などを変化させることができます。
ミュートにさせるやパンを変化、ボリュームなどです。
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)

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)

指定トラックの名前を取得します。
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

boolean retval, string stringNeedBig = reaper.GetSetMediaTrackInfo_String(MediaTrack tr, string parmname, string stringNeedBig, boolean setNewValue):トラックの名前をセット
トラックを指定することで名前などの変更ができる。
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

トラックを指定することでトラックの色を取得することができます。
その色を使用して別のトラックに対して色をセットすることができます。
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 )

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