Quick Sign In:  

Forum: VirtualDJ Technical Support

Topic: Activating the next inactive loop with a single button
seanPRO InfinityMember since 2018
There's a feature in Traktor where you can press a button and it activates all loops which basically means whichever loop you hit next is going to be active. This allows you to have all loops turned off by default with the option to turn them on while the track is playing with a SINGLE button.

This seems to be the opposite to Virtual DJ, if I use "Auto-Trigger" it seems I can't turn that loop off until I'm inside it? And if your inside an inactive loop there's no way with a SINGLE button to activate it.

So I came up with this script which checks which loops is next and activates it when a button is pressed. I would love feedback in case there's an easier method I've missed? Or any advice on not having so much duplicate code?


set_var %loopInPos `get_saved_loop 1 'pos'` &
set_var %loopOutPos `param_add "get_var %loopInPos" "get_saved_loop 1 'len'"` &
param_smaller `param_multiply "get_var %loopOutPos" 1000` `get_time 'elapsed'` ?
loop_load_prepare 1 :
set_var %loopInPos `get_saved_loop 2 'pos'` &
set_var %loopOutPos `param_add "get_var %loopInPos" "get_saved_loop 2 'len'"` &
param_smaller `param_multiply "get_var %loopOutPos" 1000` `get_time 'elapsed'` ?
loop_load_prepare 2 :
set_var %loopInPos `get_saved_loop 3 'pos'` &
set_var %loopOutPos `param_add "get_var %loopInPos" "get_saved_loop 3 'len'"` &
param_smaller `param_multiply "get_var %loopOutPos" 1000` `get_time 'elapsed'` ?
loop_load_prepare 3 :
set_var %loopInPos `get_saved_loop 4 'pos'` &
set_var %loopOutPos `param_add "get_var %loopInPos" "get_saved_loop 4 'len'"` &
param_smaller `param_multiply "get_var %loopOutPos" 1000` `get_time 'elapsed'` ?
loop_load_prepare 4 :
set_var %loopInPos `get_saved_loop 5 'pos'` &
set_var %loopOutPos `param_add "get_var %loopInPos" "get_saved_loop 5 'len'"` &
param_smaller `param_multiply "get_var %loopOutPos" 1000` `get_time 'elapsed'` ?
loop_load_prepare 5 :
set_var %loopInPos `get_saved_loop 6 'pos'` &
set_var %loopOutPos `param_add "get_var %loopInPos" "get_saved_loop 6 'len'"` &
param_smaller `param_multiply "get_var %loopOutPos" 1000` `get_time 'elapsed'` ?
loop_load_prepare 6 :
set_var %loopInPos `get_saved_loop 7 'pos'` &
set_var %loopOutPos `param_add "get_var %loopInPos" "get_saved_loop 7 'len'"` &
param_smaller `param_multiply "get_var %loopOutPos" 1000` `get_time 'elapsed'` ?
loop_load_prepare 7 :
set_var %loopInPos `get_saved_loop 8 'pos'` &
set_var %loopOutPos `param_add "get_var %loopInPos" "get_saved_loop 8 'len'"` &
param_smaller `param_multiply "get_var %loopOutPos" 1000` `get_time 'elapsed'` ?
loop_load_prepare 8


I wish loop_load_prepare could activate all loops or activate the next loop after the playhead. https://www.virtualdj.com/forums/254613/Wishes_and_new_features/Implement_loop_load_prepare__all__or_loop_load_prepare__next_.html
 

Posted Sun 24 Sep 23 @ 9:01 pm
locoDogPRO InfinityModeratorMember since 2013
use absolute time for your compares as that's what get_saved_loop 1 'pos' returns

get_time elapsed absolute
 

Posted Sun 24 Sep 23 @ 9:45 pm
seanPRO InfinityMember since 2018
Thanks so much for picking up on that!!!

Here's that fix and another bug fix for anyone finding this in the future:


set_var %loopInPos 0 & set_var %loopOutPos 0 &
set_var %loopInPos `get_saved_loop 1 'pos'` &
set_var %loopOutPos `param_add "get_var %loopInPos" "get_saved_loop 1 'len'"` &
param_smaller `param_multiply "get_var %loopOutPos" 1000` `get_time elapsed absolute` ?
loop_load_prepare 1 :
set_var %loopInPos `get_saved_loop 2 'pos'` &
set_var %loopOutPos `param_add "get_var %loopInPos" "get_saved_loop 2 'len'"` &
param_smaller `param_multiply "get_var %loopOutPos" 1000` `get_time elapsed absolute` ?
loop_load_prepare 2 :
set_var %loopInPos `get_saved_loop 3 'pos'` &
set_var %loopOutPos `param_add "get_var %loopInPos" "get_saved_loop 3 'len'"` &
param_smaller `param_multiply "get_var %loopOutPos" 1000` `get_time elapsed absolute` ?
loop_load_prepare 3 :
set_var %loopInPos `get_saved_loop 4 'pos'` &
set_var %loopOutPos `param_add "get_var %loopInPos" "get_saved_loop 4 'len'"` &
param_smaller `param_multiply "get_var %loopOutPos" 1000` `get_time elapsed absolute` ?
loop_load_prepare 4 :
set_var %loopInPos `get_saved_loop 5 'pos'` &
set_var %loopOutPos `param_add "get_var %loopInPos" "get_saved_loop 5 'len'"` &
param_smaller `param_multiply "get_var %loopOutPos" 1000` `get_time elapsed absolute` ?
loop_load_prepare 5 :
set_var %loopInPos `get_saved_loop 6 'pos'` &
set_var %loopOutPos `param_add "get_var %loopInPos" "get_saved_loop 6 'len'"` &
param_smaller `param_multiply "get_var %loopOutPos" 1000` `get_time elapsed absolute` ?
loop_load_prepare 6 :
set_var %loopInPos `get_saved_loop 7 'pos'` &
set_var %loopOutPos `param_add "get_var %loopInPos" "get_saved_loop 7 'len'"` &
param_smaller `param_multiply "get_var %loopOutPos" 1000` `get_time elapsed absolute` ?
loop_load_prepare 7 :
set_var %loopInPos `get_saved_loop 8 'pos'` &
set_var %loopOutPos `param_add "get_var %loopInPos" "get_saved_loop 8 'len'"` &
param_smaller `param_multiply "get_var %loopOutPos" 1000` `get_time elapsed absolute` ?
loop_load_prepare 8
 

Posted Mon 25 Sep 23 @ 9:01 pm