Dup Ver Goto 📝

MoveTimeSelection1

PT2/music/daw/reaper/scripts does not exist
To
279 lines, 762 words, 8022 chars Page 'MoveTimeSelection1' does not exist.

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.

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

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

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: 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

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

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

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