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 ```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 ```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 ```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 ```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 ```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 ```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. ```lua 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 ```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 ```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 ```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 ```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 ```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 ```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. ```lua 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 ```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 ```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 ```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 ```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 ```