Quick Sign In:  

Forum: Wishes and new features

Topic: Cue by frame option?
I've gotten a request on FB for a "Cue by frame" option

So not a stutter, but more like in the old CD days, where one rotation was played again and again when cued, and you could then use the jogwheel to fine-adjust, and then maybe reset the cue
This is mostly relevant I think, when you use players without a lot of detailed waveform info

Is this already possible in a way I haven't thought about?
Or can it maybe be added as a fourth cueMode option?
 

Posted Mon 05 Feb 24 @ 11:19 am
 Best Answer Ok, here's a full solution

Remap your JOG to
vinyl_mode ? touchwheel : cue ? nothing : play ? loop 160ms ? param_bigger 0 ? loop_move +1ms & goto +1ms : loop_move -1ms : touchwheel : loop 160ms & loop_move -160ms & play

And remap your CUE button to
loop 160ms ? pause & loop_exit & reloop & loop_exit & goto +160ms & cue : cue_stop

The above code should mimick early CDJ models.
When the deck is in VINYL mode, no frame cueing is avaliable
When vinyl mode is OFF, then in order to enter frame cue-ing the deck must be paused anywhere BUT a cue, and move the jog. In other words if the deck is playing, no frame cue-ing. If the deck is stopped on a cue, no frame cue-ing. Like the original CDJs, if the deck is stopped (paused) on cue, in order to enter frame cue-ing you need to press PLAY/PAUSE button TWICE (one to start the deck and one to pause it after the cue it was) and then turn the jog.
Finally, once you're satisfied with your cue placement, just press the CUE button. The cue will be set AT THE END of the running loop.

You can adjust the length of the "frame" by adjusting the length of the loop. But you need to make sure that you change ALL length references on BOTH the JOG and the CUE button.

PS: I don't remember how CDJs operated when pressing play while frame cue-ing was active.

So, OPTIONALLY you may also want to remap your PLAY/PAUSE button to either
play ? loop 160ms ? loop_exit : play_pause : play_pause

OR
play ? loop 160ms ? pause & loop_exit & reloop & loop_exit & goto +160ms : play_pause : play_pause

Posted Wed 28 Feb 24 @ 11:42 pm[ selected best answer by PhantomDeejay on Wed 28 Feb 24 @ 11:43 pm ]
locoDogPRO InfinityModeratorMember since 2013
he's asked here before, isn't it just a case of a short loop moved around?
 

Posted Mon 05 Feb 24 @ 11:26 am
75 frames per second. I'm sure there used to be some kind of emulation in/for VDJ in the past.

Why anyone would still want that, I've no idea. Nostalgia? [shrug]
 

Posted Mon 05 Feb 24 @ 11:29 am
locodog wrote :
he's asked here before, isn't it just a case of a short loop moved around?


Hmm. He's Danish and I'm not sure he has asked about it before

Anyway
It may be similar to a short loop moved around, but I don't think I can script that on a cue point/in a cue situation. Is that possible?

Here is his example from a player when not running VDJ:

(it's in Danish but I think it's easy to understand what he means/want)

It's only supposed to work in CD mode - not in Vinyl mode
 

Posted Mon 05 Feb 24 @ 11:37 am
AdionPRO InfinityCTOMember since 2006
Since you can move a loop around with the jog wheel, I think it could kind-of be scripted.

No plan to add this natively though
 

Posted Mon 05 Feb 24 @ 11:51 am
Yes, it can be scripted.
I had done it a couple of years ago just for fun, but the code needed is quite overwhelming, and also it involves several keys.
You need to remap PLAY, button, CUE button, LOOP/LOOP IN/LOOP OUT buttons among with their LEDs and obviously the JOG.
I don't think I have the scripts I used saved anywhere.. It was just something I tried during the long lockdown days :P
It IS possible, yes, but it's too much trouble to get it working "right" with no real benefit these days.
More than a decade ago when waveforms were not so detailed and CBG could be off as much as half of the time, it could make sense to have.
 

Posted Mon 05 Feb 24 @ 12:30 pm
I remember my CD single version of Gina G ooh aah just a little bit was 2 minutes 59 seconds and 74 frames to stay under the 3 minute Eurovision limit :)
 

Posted Mon 05 Feb 24 @ 12:37 pm
Adion wrote :
Since you can move a loop around with the jog wheel, I think it could kind-of be scripted.

No plan to add this natively though


Hi Adion,

I think its one of the most asked question to add this natively as an option for virtual dj. Many people like this and many DJ`s i know still used this way of cue-ing up to the right point with their CDJ`s.

gr. Marcel

 

Posted Fri 16 Feb 24 @ 7:45 pm
AdionPRO InfinityCTOMember since 2006
Since this is the first time it came up since the release of vdj 8 I'm pretty sure it's not the most asked question.
I don't think even any standalone players sold today have this feature so it's probably an extreme rare request
 

Posted Fri 16 Feb 24 @ 8:19 pm
Hi you are right about frame-cueing option. It isn`t widely adopted to media players anymore. Its from the era of the old CD players like Denon and Pioneer used to have.

I do think i found a very handy way, without a shift button, that could be very useful for most people who wants to use this kind of frame cueing. The last piece in my script i am missing;

I am activating an action with the jogwheel - - - - - > the following script:

cue && param_bigger 0? loop 160ms & loop_move -160ms & play & loop_move +0.5ms : loop 160ms & loop_move -160ms & play & loop_move -0.5ms

I want to move the loop (-160ms) only 1 time, while keep using the jogwheel in the frame-cueing process to move the loop + or - 0.5ms. How could this be scripted only with the use of the jogwheel?

Greetings, Marcel
 

Posted Tue 27 Feb 24 @ 6:41 pm
cue & param_bigger 0 ? loop ? loop_move +5ms : loop 160ms & loop_move -160ms & play : loop ? loop_move -5ms : loop 160ms & loop_move -160ms & play
I think something like this is what you're looking after.
Also I think it's not possible to move withing fractions of ms (0.5)
The example above is using 5ms instead. However, if you want to make it more "slow" you can change it to 1ms

PS: I can't imagine how you're using this script. Personally I would decouple the "cue" part of the script from the jog, and I would use it only to set and move the loop around.
Then, once I was ready to set the cuepoint I would use a combination of loop, reloop and cue actions to set the cue point
So, for the jog I would use:
param_bigger 0 ? loop ? loop_move +5ms : loop 160ms & loop_move -160ms & play : loop ? loop_move -5ms : loop 160ms & loop_move -160ms & play
And for the "cue" button I would use pause & loop_exit & reloop & loop_exit & goto +160ms & cue
Of course the above scripts would be parts of bigger scripts for a complete solution if I wanted to retain the rest functionality of the jogs (for bending/scratching) and the cue button (for previewing the cue)
 

Posted Tue 27 Feb 24 @ 11:06 pm
Hi Phantomdeejay,

Thanks for your input. The principe of your script works!!! A few questions to make it optimal for me and to mimic a traditional old CD player.

A little explanation from my side.

I have a made a script for the cue button that works like intended.
loop ? delete_cue 6 & get_loop_out_time 'absolute' 1000 & param_cast 'ms' & set_cue 6 & cue_stop & delete_cue 6 & loop_exit : cue_stop

The use of this script is to set a temporay cue at the end of the frame loop. The frame loop itself is not activated with this script. I have found that it is nessary to first set a hot cue (in this case 6), because its not possible to set a temporary cue directly to the end of the frame loop.
The end of the frame loop is also not possible to select if there is already stored a hotcue on the number, so therefor i had to delete it first.
The next step the stript does is to set the normal temporary cue, delete hotcue the hotcue, en exit the loop.
When not in frame loop the cue button acts like the normal cue_stop function.
With this script the cue_button mimics a CD player.

With your script the frame loop starting with touching the jogwheel to the right. Is it also possible to starting the frame loop with turning the jog to the right OR the left?

Your script starting with cue, but it doesn`t do anything with it at my system. In my previous own script a had made a query with the cue (double &&) so the jogwheel will go in frame loop when turning, only when it is on a cue point. So normal behavior with play a track is pitchbend. Is this possible with your script?

Thanks!!

 

Posted Wed 28 Feb 24 @ 6:06 pm
Ok, here's a full solution

Remap your JOG to
vinyl_mode ? touchwheel : cue ? nothing : play ? loop 160ms ? param_bigger 0 ? loop_move +1ms & goto +1ms : loop_move -1ms : touchwheel : loop 160ms & loop_move -160ms & play

And remap your CUE button to
loop 160ms ? pause & loop_exit & reloop & loop_exit & goto +160ms & cue : cue_stop

The above code should mimick early CDJ models.
When the deck is in VINYL mode, no frame cueing is avaliable
When vinyl mode is OFF, then in order to enter frame cue-ing the deck must be paused anywhere BUT a cue, and move the jog. In other words if the deck is playing, no frame cue-ing. If the deck is stopped on a cue, no frame cue-ing. Like the original CDJs, if the deck is stopped (paused) on cue, in order to enter frame cue-ing you need to press PLAY/PAUSE button TWICE (one to start the deck and one to pause it after the cue it was) and then turn the jog.
Finally, once you're satisfied with your cue placement, just press the CUE button. The cue will be set AT THE END of the running loop.

You can adjust the length of the "frame" by adjusting the length of the loop. But you need to make sure that you change ALL length references on BOTH the JOG and the CUE button.

PS: I don't remember how CDJs operated when pressing play while frame cue-ing was active.

So, OPTIONALLY you may also want to remap your PLAY/PAUSE button to either
play ? loop 160ms ? loop_exit : play_pause : play_pause

OR
play ? loop 160ms ? pause & loop_exit & reloop & loop_exit & goto +160ms : play_pause : play_pause
 

 Selected as best answer Posted Wed 28 Feb 24 @ 11:42 pm
Hi,

Your cue stript workt perfectly....a better solotion than i hat with intergrating an hotcue for temporary reasons.

The starting of the frame loop with the jogwheel don`t work as good as your previous script. You can`t re-edit a cue point once it has been set. Now its nessary to push on play and after that you must push pause, only after that the frame loop can be activated with the jog.

Is it possible to intergrate the querry`s (cue and jogwheel left OR right) in your previous script? Than its works totally without having to use 2 times play/pause.

Greetings,
Marcel
 

Posted Thu 29 Feb 24 @ 6:32 am
On original CDJs you could not start frame cue-ing unless you entered pause state by clicking twice play/pause.
That's what this script mimics and I strongly believe its a better way to do things.
It also prevents accidental looping while the deck is cued, in case some vibration or you, by accident, move even so slightly the jog (ask DDJ-1000 users about this :P)

If you still want to skip that security, then be my guest:
JOG:
vinyl_mode ? touchwheel : cue ? loop 160ms & loop_move -160ms & play : play ? loop 160ms ? param_bigger 0 ? loop_move +1ms & goto +1ms : loop_move -1ms : touchwheel : loop 160ms & loop_move -160ms & play

HOWEVER AS A FINAL NOTICE, I STILL DON'T RECOMMEND USING THIS SCRIPT! :)
 

Posted Thu 29 Feb 24 @ 7:56 am
Indeed, having an extra activation key for the frame stutter makes sense, espcially with the possiblity`s of vibrations on the stage.

I had never tought this good be done with a dj software programm. The possibility`s with virtual DJ and scripts are incredible.

In your script you used goto 1ms....what is the intended use of this?

The learning curve of script with this post is great!!

 

Posted Tue 05 Mar 24 @ 5:06 pm
When you move a loop backwards, if playing position "gets out of the loop", then the track automatically jumps back inside the loop at the place (position relative to the loop itself) it would have been if you didn't move the loop.
This does not happen when you move the loop forward. When you move the loop forward, the playing position stays where it is even if it's not inside the loop anymore (since it will catchup eventually)
For loops manipulation, it makes sense.
But for your "frame cue-ing" it doesn't.
If you move the jog forward fast enough, the "loop" moves ahead 5 seconds in time, but the playing position needs to travel those 5 seconds by playing the track at playback speed.
Thus the code has the goto part included, only for forward movement, so that playback position always stays inside the loop.

I hope I explained it well..
 

Posted Wed 06 Mar 24 @ 1:12 pm
Hi Phantomdeejay,

Thats the reason!!

Thanks!!

Gr. Marcel
 

Posted Tue 12 Mar 24 @ 7:15 pm