Some trivial scripts to manipulate the time selection. This allows these actions to be bound to OSC messages. For most scripts, the length of one bar is taken from the time signature at the start of the time selection. For scripts that add or subtract a bar, the time signature is taken from the end.
set_time_sel_1bar.lua
tstart,tend = reaper.GetSet_LoopTimeRange(false,false,0,0,0)
num,denom,tempo = reaper.TimeMap_GetTimeSigAtTime(0,tstart)
qn_per_bar = 4.0*num/denom
offset = 1.0*qn_per_bar
bstart = reaper.TimeMap_timeToQN(tstart)
bend = reaper.TimeMap_timeToQN(tend)
nbend = bstart + offset
ntend = reaper.TimeMap_QNToTime(nbend)
reaper.GetSet_LoopTimeRange(true,true,tstart,ntend,true)
set_time_sel_1beat.lua
tstart,tend = reaper.GetSet_LoopTimeRange(false,false,0,0,0)
bstart = reaper.TimeMap_timeToQN(tstart)
bend = reaper.TimeMap_timeToQN(tend)
nbend = bstart + 1.0
ntend = reaper.TimeMap_QNToTime(nbend)
reaper.GetSet_LoopTimeRange(true,true,tstart,ntend,true)
set_time_sel_2bars.lua
tstart,tend = reaper.GetSet_LoopTimeRange(false,false,0,0,0)
num,denom,tempo = reaper.TimeMap_GetTimeSigAtTime(0,tstart)
qn_per_bar = 4.0*num/denom
offset = 2.0*qn_per_bar
bstart = reaper.TimeMap_timeToQN(tstart)
bend = reaper.TimeMap_timeToQN(tend)
nbend = bstart + offset
ntend = reaper.TimeMap_QNToTime(nbend)
reaper.GetSet_LoopTimeRange(true,true,tstart,ntend,true)
set_time_sel_2beats.lua
tstart,tend = reaper.GetSet_LoopTimeRange(false,false,0,0,0)
bstart = reaper.TimeMap_timeToQN(tstart)
bend = reaper.TimeMap_timeToQN(tend)
nbend = bstart + 2.0
ntend = reaper.TimeMap_QNToTime(nbend)
reaper.GetSet_LoopTimeRange(true,true,tstart,ntend,true)
set_time_sel_4bars.lua
tstart,tend = reaper.GetSet_LoopTimeRange(false,false,0,0,0)
num,denom,tempo = reaper.TimeMap_GetTimeSigAtTime(0,tstart)
qn_per_bar = 4.0*num/denom
offset = 4.0*qn_per_bar
bstart = reaper.TimeMap_timeToQN(tstart)
bend = reaper.TimeMap_timeToQN(tend)
nbend = bstart + offset
ntend = reaper.TimeMap_QNToTime(nbend)
reaper.GetSet_LoopTimeRange(true,true,tstart,ntend,true)
set_time_sel_8bars.lua
tstart,tend = reaper.GetSet_LoopTimeRange(false,false,0,0,0)
num,denom,tempo = reaper.TimeMap_GetTimeSigAtTime(0,tstart)
qn_per_bar = 4.0*num/denom
offset = 8.0*qn_per_bar
bstart = reaper.TimeMap_timeToQN(tstart)
bend = reaper.TimeMap_timeToQN(tend)
nbend = bstart + offset
ntend = reaper.TimeMap_QNToTime(nbend)
reaper.GetSet_LoopTimeRange(true,true,tstart,ntend,true)
time_sel_add_1_bar.lua
Note time signature is taken from end of time selection.
tstart,tend = reaper.GetSet_LoopTimeRange(false,false,0,0,0)
num,denom,tempo = reaper.TimeMap_GetTimeSigAtTime(0,tend) -- we take the bar length from the end of the time selection
qn_per_bar = 4.0*num/denom
offset = 1.0*qn_per_bar
bstart = reaper.TimeMap_timeToQN(tstart)
bend = reaper.TimeMap_timeToQN(tend)
nbend = bend + offset
ntend = reaper.TimeMap_QNToTime(nbend)
reaper.GetSet_LoopTimeRange(true,true,tstart,ntend,true)
time_sel_add_1_beat.lua
tstart,tend = reaper.GetSet_LoopTimeRange(false,false,0,0,0)
bstart = reaper.TimeMap_timeToQN(tstart)
bend = reaper.TimeMap_timeToQN(tend)
nbend = bend + 1.0
ntend = reaper.TimeMap_QNToTime(nbend)
--s = "Range: "..tstart.." -- "..tend.." : "..bstart.." -- "..bend
--reaper.ShowConsoleMsg(s)
reaper.GetSet_LoopTimeRange(true,true,tstart,ntend,true)
time_sel_double.lua
tstart,tend = reaper.GetSet_LoopTimeRange(false,false,0,0,0)
bstart = reaper.TimeMap_timeToQN(tstart)
bend = reaper.TimeMap_timeToQN(tend)
blen = bend - bstart
nbend = bstart + 2 * blen
ntend = reaper.TimeMap_QNToTime(nbend)
reaper.GetSet_LoopTimeRange(true,true,tstart,ntend,true)
time_sel_half.lua
tstart,tend = reaper.GetSet_LoopTimeRange(false,false,0,0,0)
bstart = reaper.TimeMap_timeToQN(tstart)
bend = reaper.TimeMap_timeToQN(tend)
blen = bend - bstart
nbend = bstart + blen * 0.5
ntend = reaper.TimeMap_QNToTime(nbend)
reaper.GetSet_LoopTimeRange(true,true,tstart,ntend,true)
time_sel_left_1_bar.lua
tstart,tend = reaper.GetSet_LoopTimeRange(false,false,0,0,0)
num,denom,tempo = reaper.TimeMap_GetTimeSigAtTime(0,tstart)
qn_per_bar = 4.0*num/denom
offset = 1.0*qn_per_bar
bstart = reaper.TimeMap_timeToQN(tstart)
bend = reaper.TimeMap_timeToQN(tend)
nbstart = bstart - offset
nbend = bend - offset
if nbstart >= 0.0 then
ntstart = reaper.TimeMap_QNToTime(nbstart)
ntend = reaper.TimeMap_QNToTime(nbend)
reaper.GetSet_LoopTimeRange(true,true,ntstart,ntend,true)
end
time_sel_left_1_beat.lua
tstart,tend = reaper.GetSet_LoopTimeRange(false,false,0,0,0)
bstart = reaper.TimeMap_timeToQN(tstart)
bend = reaper.TimeMap_timeToQN(tend)
nbstart = bstart - 1.0
nbend = bend - 1.0
if nbstart >= 0.0 then
ntstart = reaper.TimeMap_QNToTime(nbstart)
ntend = reaper.TimeMap_QNToTime(nbend)
reaper.GetSet_LoopTimeRange(true,true,ntstart,ntend,true)
end
time_sel_left_1_sel.lua
tstart,tend = reaper.GetSet_LoopTimeRange(false,false,0,0,0)
bstart = reaper.TimeMap_timeToQN(tstart)
bend = reaper.TimeMap_timeToQN(tend)
blen = bend - bstart
nbstart = bstart - blen
nbend = bend - blen
if nbstart >= 0.0 then
ntstart = reaper.TimeMap_QNToTime(nbstart)
ntend = reaper.TimeMap_QNToTime(nbend)
reaper.GetSet_LoopTimeRange(true,true,ntstart,ntend,true)
end
time_sel_minus_1_bar.lua
Note time signature is taken from end of time selection.
tstart,tend = reaper.GetSet_LoopTimeRange(false,false,0,0,0)
num,denom,tempo = reaper.TimeMap_GetTimeSigAtTime(0,tend)
qn_per_bar = 4.0*num/denom
offset = 1.0*qn_per_bar
bstart = reaper.TimeMap_timeToQN(tstart)
bend = reaper.TimeMap_timeToQN(tend)
nbend = bend - offset
if nbend > bstart then
ntend = reaper.TimeMap_QNToTime(nbend)
reaper.GetSet_LoopTimeRange(true,true,tstart,ntend,true)
end
time_sel_minus_1_beat.lua
tstart,tend = reaper.GetSet_LoopTimeRange(false,false,0,0,0)
bstart = reaper.TimeMap_timeToQN(tstart)
bend = reaper.TimeMap_timeToQN(tend)
nbend = bend - 1.0
if nbend > bstart then
ntend = reaper.TimeMap_QNToTime(nbend)
reaper.GetSet_LoopTimeRange(true,true,tstart,ntend,true)
end
time_sel_right_1_bar.lua
tstart,tend = reaper.GetSet_LoopTimeRange(false,false,0,0,0)
num,denom,tempo = reaper.TimeMap_GetTimeSigAtTime(0,tstart)
qn_per_bar = 4.0*num/denom
offset = 1.0*qn_per_bar
bstart = reaper.TimeMap_timeToQN(tstart)
bend = reaper.TimeMap_timeToQN(tend)
nbstart = bstart + offset
nbend = bend + offset
if nbstart >= 0.0 then
ntstart = reaper.TimeMap_QNToTime(nbstart)
ntend = reaper.TimeMap_QNToTime(nbend)
reaper.GetSet_LoopTimeRange(true,true,ntstart,ntend,true)
end
time_sel_right_1_beat.lua
tstart,tend = reaper.GetSet_LoopTimeRange(false,false,0,0,0)
bstart = reaper.TimeMap_timeToQN(tstart)
bend = reaper.TimeMap_timeToQN(tend)
nbstart = bstart + 1.0
nbend = bend + 1.0
if nbstart >= 0.0 then
ntstart = reaper.TimeMap_QNToTime(nbstart)
ntend = reaper.TimeMap_QNToTime(nbend)
reaper.GetSet_LoopTimeRange(true,true,ntstart,ntend,true)
end
time_sel_right_1_sel.lua
tstart,tend = reaper.GetSet_LoopTimeRange(false,false,0,0,0)
bstart = reaper.TimeMap_timeToQN(tstart)
bend = reaper.TimeMap_timeToQN(tend)
blen = bend - bstart
nbstart = bstart + blen
nbend = bend + blen
if nbstart >= 0.0 then
ntstart = reaper.TimeMap_QNToTime(nbstart)
ntend = reaper.TimeMap_QNToTime(nbend)
reaper.GetSet_LoopTimeRange(true,true,ntstart,ntend,true)
end