Moves the time selection to the right by whatever the loop length is. So if loop length is 4 bars, this moves it 4 bars to the right. ```lua local lstart, lend lstart, lend = reaper.GetSet_LoopTimeRange(false, true, 0, 0, false) local dl = lend-lstart if dl > 0 then nstart = lstart + dl nend = lend + dl reaper.GetSet_LoopTimeRange(true,true,nstart,nend,false) end ``` It is simple to make a script that moves it to the left (and does nothing if it is already too close to the start). ```lua nstart = lstart - dl nend = lend - dl if nstart >= 0 then reaper.GetSet_LoopTimeRange(true,true,nstart,nend,false) end ``` Other similar scripts you can write are to double/half the length ```lua dl *= 2 nstart = lstart nend = lstart + dl ``` Simples. ## Examples These are my current scripts. The names should be explanatory ### set_time_sel_1bar.lua ```lua --[[ Lua: number start, number end = reaper.GetSet_LoopTimeRange(boolean isSet, boolean isLoop, number start, number end, boolean allowautoseek) ]]-- 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 ```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) 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 ```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 ```