Hi Team!
I need your help here.
I'm looking for a solution to preview the currently highlighted (selected) track in the browser without loading it directly onto the deck from my LC6000s, without having to use the keyboard or mouse.
So I thought using the "Touchstrip" might be a good idea. I could assign this function to Shift + Needle Touch; the expected behavior would be as follows.
- If no track is currently playing on the deck:
Holding Shift and placing your finger on the touchstrip will start playing the track in the preview player, taking into account the relative position of the touchstrip.
For example: if I place my finger on the far left, the track starts playing from the beginning; if I place my finger in the middle of the touch strip, it starts playing from the middle of the track, etc.
- Playback is active as long as my finger is on the touch strip and stops if I remove my finger.
- I can navigate through the track preview by moving my finger over the touch strip.
Can someone help me with the script?
I need your help here.
I'm looking for a solution to preview the currently highlighted (selected) track in the browser without loading it directly onto the deck from my LC6000s, without having to use the keyboard or mouse.
So I thought using the "Touchstrip" might be a good idea. I could assign this function to Shift + Needle Touch; the expected behavior would be as follows.
- If no track is currently playing on the deck:
Holding Shift and placing your finger on the touchstrip will start playing the track in the preview player, taking into account the relative position of the touchstrip.
For example: if I place my finger on the far left, the track starts playing from the beginning; if I place my finger in the middle of the touch strip, it starts playing from the middle of the track, etc.
- Playback is active as long as my finger is on the touch strip and stops if I remove my finger.
- I can navigate through the track preview by moving my finger over the touch strip.
Can someone help me with the script?
Posted Sun 14 Sep 25 @ 2:11 pm
I tried this script
down? prelisten_pos & prelisten: prelisten_stop
The prelisten trigger function works, but not the navigation within the prelisten by moving around the touchstrip.
down? prelisten_pos & prelisten: prelisten_stop
The prelisten trigger function works, but not the navigation within the prelisten by moving around the touchstrip.
Posted Sun 14 Sep 25 @ 3:13 pm
But then you cant prelisten to a Track if Deck is already loaded and playing and that defeats the purpose of prelistening, no ?
I guess you will need to find a Key (button) to turn "prelisten mode" on/off and choose when u want to use the touchstrip as Seek or Prelisten.
BTW, there are 2 Keys for the touchstrip one named as NEEDLE (the slider) and the other is named as NEEDLE_TOUCH (touch on/off). With yoru approach it should be ...
NEEDLE_TOUCH : down ? prelisten on : prelisten off or prelisten while_pressed or if with just SHIFT .. shift ? prelisten while_pressed : setting 'NeedlePlay' ? down ? play ? set 'ntplay' 1 : play : var 'ntplay' 1 ? set 'ntplay' 0 : pause : nothing (which has the default action on non-SHIFT
and the NEEDLE.. just : prelisten_pos or shift ? prelisten_pos : song_pos
I guess you will need to find a Key (button) to turn "prelisten mode" on/off and choose when u want to use the touchstrip as Seek or Prelisten.
BTW, there are 2 Keys for the touchstrip one named as NEEDLE (the slider) and the other is named as NEEDLE_TOUCH (touch on/off). With yoru approach it should be ...
NEEDLE_TOUCH : down ? prelisten on : prelisten off or prelisten while_pressed or if with just SHIFT .. shift ? prelisten while_pressed : setting 'NeedlePlay' ? down ? play ? set 'ntplay' 1 : play : var 'ntplay' 1 ? set 'ntplay' 0 : pause : nothing (which has the default action on non-SHIFT
and the NEEDLE.. just : prelisten_pos or shift ? prelisten_pos : song_pos
Posted Mon 15 Sep 25 @ 7:06 am
@djdad
The idea isn't to use "PFL" previews, since I have that feature on my mixer. But that does involve loading a track onto the deck to preview it.
What I'm trying to do is replicate Engine OS's behavior in Virtual DJ. In Engine OS, you can preview a track directly from the library by clicking on the cover art, without needing to load it onto the deck. You can preview different segments of the track by navigating to the track header in the playlist. They call this feature "track preview."
Engine OS automatically sends the track preview signal to the channel with the volume fader down that has the active cue button. This acts like smart previewing.
I'd like to be able to just preview the track selected in the playlist and have Virtual DJ behave the same way.
I'll try the scripts you gave me, thanks for that.
Is there any chance that Virtual DJ will natively integrate a function equivalent to Engine OS's "track preview" in the future that can be used directly from the hardware without the need for a keyboard or mouse? The current preview player functionality in Virtual DJ seems a bit dated in comparison.
The idea isn't to use "PFL" previews, since I have that feature on my mixer. But that does involve loading a track onto the deck to preview it.
What I'm trying to do is replicate Engine OS's behavior in Virtual DJ. In Engine OS, you can preview a track directly from the library by clicking on the cover art, without needing to load it onto the deck. You can preview different segments of the track by navigating to the track header in the playlist. They call this feature "track preview."
Engine OS automatically sends the track preview signal to the channel with the volume fader down that has the active cue button. This acts like smart previewing.
I'd like to be able to just preview the track selected in the playlist and have Virtual DJ behave the same way.
I'll try the scripts you gave me, thanks for that.
Is there any chance that Virtual DJ will natively integrate a function equivalent to Engine OS's "track preview" in the future that can be used directly from the hardware without the need for a keyboard or mouse? The current preview player functionality in Virtual DJ seems a bit dated in comparison.
Posted Mon 15 Sep 25 @ 11:46 am
Yes of course i understood what u wanted, but yet, my comment about usability was for what u wrote ..
Ian Wild wrote :
...
- If no track is currently playing on the deck:
....
- If no track is currently playing on the deck:
....
Posted Mon 15 Sep 25 @ 12:45 pm
Just to add...not sure what OP means by dated - track preview existed in VirtualDJ probably before Engine even existed
https://www.virtualdj.com/manuals/virtualdj/interface/browser/fileinfo.html
And provides all that is needed to preview a track (track selection, scrubbing through it and playback (not sure about mapping the devs can say more on that)).
For preview to really be useful in all cases, you need a way to directly provide its output for your headphones. Being smart about which channel fader is up or down can help in certain cases, but it still fails if you have all faders in a configuration giving an audible output from decks - there is nowhere you can send the audio without trampling on the output mix.
Remember that Atomix makes no/has no current deals to make devices of their own with their own audio setup - it maps devices made for integration with other software.
The overwhelming majority of the hardware is made with integration with Serato in mind and Serato has no preview function (= virtually always external mixer setup with no dedicated route to the headphones).
When Rekordbox performance mode came on the scene (which has preview), they started introducing controllers with the hardware ability to route preview directly to headphones (and you can use the preview function fully/without caveats in those cases with VirtualDJ). If your mixer has such a setup then it already works ( for example I can preview a track fully with my DDJ 1000 without loading it to a deck).
However, given the vast majority of controllers don't have an audio setup with this ability, Atomix's choice to not map preview is understandable (I personally would rather not have it mapped than having to remember to duck a channel or accidentally hitting it with all faders up and hearing it over the mix output)
although Atomix can end up making preview mappable for audio in that regard (that's the real feature request here especially for 4 channel mixers).
Just an addition, to see how far Atomix has taken this, checkout the Sandbox mode (you can test preview an entire mix in your headphones while the real output mix is playing):
https://www.virtualdj.com/manuals/virtualdj/interface/topsection/appcontrols/sandbox.html
https://www.virtualdj.com/manuals/virtualdj/interface/browser/fileinfo.html
And provides all that is needed to preview a track (track selection, scrubbing through it and playback (not sure about mapping the devs can say more on that)).
For preview to really be useful in all cases, you need a way to directly provide its output for your headphones. Being smart about which channel fader is up or down can help in certain cases, but it still fails if you have all faders in a configuration giving an audible output from decks - there is nowhere you can send the audio without trampling on the output mix.
Remember that Atomix makes no/has no current deals to make devices of their own with their own audio setup - it maps devices made for integration with other software.
The overwhelming majority of the hardware is made with integration with Serato in mind and Serato has no preview function (= virtually always external mixer setup with no dedicated route to the headphones).
When Rekordbox performance mode came on the scene (which has preview), they started introducing controllers with the hardware ability to route preview directly to headphones (and you can use the preview function fully/without caveats in those cases with VirtualDJ). If your mixer has such a setup then it already works ( for example I can preview a track fully with my DDJ 1000 without loading it to a deck).
However, given the vast majority of controllers don't have an audio setup with this ability, Atomix's choice to not map preview is understandable (I personally would rather not have it mapped than having to remember to duck a channel or accidentally hitting it with all faders up and hearing it over the mix output)
although Atomix can end up making preview mappable for audio in that regard (that's the real feature request here especially for 4 channel mixers).
Just an addition, to see how far Atomix has taken this, checkout the Sandbox mode (you can test preview an entire mix in your headphones while the real output mix is playing):
https://www.virtualdj.com/manuals/virtualdj/interface/topsection/appcontrols/sandbox.html
Posted Mon 15 Sep 25 @ 12:57 pm
@djdad
"But then you cant prelisten to a Track if Deck is already loaded and playing and that defeats the purpose of prelistening, no ?
I guess you will need to find a Key (button) to turn "prelisten mode" on/off and choose when u want to use the touchstrip as Seek or Prelisten."
I probably misspoke on this one.
When I say "if no track is playing on the deck," I mean "on the deck you're about to load a track to."
Example: My Deck A is playing a track for the crowd, and the track on my Deck B has finished. I want to load a track to Deck B since no track is currently playing on it.
My Channel 2 fader is down and the PFL button is engaged, so I can simply browse my playlist and listen to the currently selected track on the playlist without loading it to Deck B. Virtual DJ notices that my Channel B fader is down, that PFL is enabled on that channel, and intelligently sends the audio stream from the preview player to that channel.
The fact that Virtual DJ checks that a track is not currently playing on Deck B is a safety feature to prevent the audio stream from being output to the speakers while a track is playing.
Let me know if this isn't clear.
Currently, with my Z2 + 2x LC6000 setup, I don't see any other solution for directly previewing a track from the browser and navigating through it—without touching the keyboard or mouse—other than mapping the LC6000's touch strip for this purpose.
@DJ vinyltouch
When I say the preview player seems dated in comparison, it's because it's located in the "info" pane.
It would certainly be more practical and intuitive to integrate it directly into the main part of the browser.
- Simply click on the cover art; this will display a play button instead of the cover art (or display a play button next to the cover art) and start playing the preview.
- The waveform appears instead of the track name, and you can navigate directly to any point in the track.
You would have the full width of the main browser window to display a large, detailed waveform instead of a small, compact player in the info pane. This would certainly be much more intuitive and more in line with how current DJ equipment works.
The fact that Virtual DJ checks that the three conditions are met (fader down, cue/PFL button activated, deck stopped) before routing the audio avoids any risk of accidents. This makes the "smart track preview" compatible with any controller, even those without a dedicated preview button.
"But then you cant prelisten to a Track if Deck is already loaded and playing and that defeats the purpose of prelistening, no ?
I guess you will need to find a Key (button) to turn "prelisten mode" on/off and choose when u want to use the touchstrip as Seek or Prelisten."
I probably misspoke on this one.
When I say "if no track is playing on the deck," I mean "on the deck you're about to load a track to."
Example: My Deck A is playing a track for the crowd, and the track on my Deck B has finished. I want to load a track to Deck B since no track is currently playing on it.
My Channel 2 fader is down and the PFL button is engaged, so I can simply browse my playlist and listen to the currently selected track on the playlist without loading it to Deck B. Virtual DJ notices that my Channel B fader is down, that PFL is enabled on that channel, and intelligently sends the audio stream from the preview player to that channel.
The fact that Virtual DJ checks that a track is not currently playing on Deck B is a safety feature to prevent the audio stream from being output to the speakers while a track is playing.
Let me know if this isn't clear.
Currently, with my Z2 + 2x LC6000 setup, I don't see any other solution for directly previewing a track from the browser and navigating through it—without touching the keyboard or mouse—other than mapping the LC6000's touch strip for this purpose.
@DJ vinyltouch
When I say the preview player seems dated in comparison, it's because it's located in the "info" pane.
It would certainly be more practical and intuitive to integrate it directly into the main part of the browser.
- Simply click on the cover art; this will display a play button instead of the cover art (or display a play button next to the cover art) and start playing the preview.
- The waveform appears instead of the track name, and you can navigate directly to any point in the track.
You would have the full width of the main browser window to display a large, detailed waveform instead of a small, compact player in the info pane. This would certainly be much more intuitive and more in line with how current DJ equipment works.
The fact that Virtual DJ checks that the three conditions are met (fader down, cue/PFL button activated, deck stopped) before routing the audio avoids any risk of accidents. This makes the "smart track preview" compatible with any controller, even those without a dedicated preview button.
Posted Mon 15 Sep 25 @ 5:44 pm
Ian Wild wrote :
Example: My Deck A is playing a track for the crowd, and the track on my Deck B has finished. I want to load a track to Deck B since no track is currently playing on it.
My Channel 2 fader is down and the PFL button is engaged, so I can simply browse my playlist and listen to the currently selected track on the playlist without loading it to Deck B. Virtual DJ notices that my Channel B fader is down, that PFL is enabled on that channel, and intelligently sends the audio stream from the preview player to that channel.
The fact that Virtual DJ checks that a track is not currently playing on Deck B is a safety feature to prevent the audio stream from being output to the speakers while a track is playing.
Example: My Deck A is playing a track for the crowd, and the track on my Deck B has finished. I want to load a track to Deck B since no track is currently playing on it.
My Channel 2 fader is down and the PFL button is engaged, so I can simply browse my playlist and listen to the currently selected track on the playlist without loading it to Deck B. Virtual DJ notices that my Channel B fader is down, that PFL is enabled on that channel, and intelligently sends the audio stream from the preview player to that channel.
The fact that Virtual DJ checks that a track is not currently playing on Deck B is a safety feature to prevent the audio stream from being output to the speakers while a track is playing.
So I agree this is doable (with audible output protection if all channels are up) but it's something you have remember a convention for for most mixers to use correctly (put a channel down first and then invoke preview). I could imagine all the Tech Support issues that would come in saying the feature doesn't work, and the problem just that they forgot the convention. Actually, given you are using a Kontrol Z2 (internal mixer setup with direct software channel access to headphones) you don't have to follow any convention...preview should just work regardless of channel fader positions.
Ian Wild wrote :
It would certainly be more practical and intuitive to integrate it directly into the main part of the browser.
...
It would certainly be more practical and intuitive to integrate it directly into the main part of the browser.
...
I think that is a bit of an opinion as the functionality is already quite usable - the only problem is the space it has for scrubbing.
What your asking for would require changes to the browser, then the same number clicks or more to get to the preview mode, and an extra number of clicks to revert back to browsing mode and continue after you're finished with preview (and that click setup process may have to be repeated again for every other track you want to preview before coming to a loading decision).
I also thought the original request was for scripting help to control preview abilities from your LC6000 players...I think that is far more useful that a browser change (using the displays of the controllers if available), to show the track and give scrubbing abilities.
I do think there is room for improvement thought...however it does seem that the quicker way to solve your problem is to work out the mapping, given your mixer allows full preview support with no clashing of the mix.
Posted Mon 15 Sep 25 @ 6:24 pm
Well, based on the scripts provided by DJDAD, I managed to get something that seems to work for me by modifying them a little.
I'm leaving them here so that they can be useful to others.
As DJDAD indicated, the LC6000's TouchStrip is actually composed of two buttons:
Needle: which determines the needle position on the strip
And Needle_touch: which determines the touch detection on the strip
So we have:
Needle: is_audible ? nothing : prelisten_pos
Needle-touch: is_audible ? nothing : pfl ? (volume = 0% ? prelisten while_pressed : nothing) : nothing
Is_audible ? ensures that the deck is not currently playing to the master
pfl ? ensures that the cue button is active on the mixer
volume = 0% ? Ensures the volume fader is down.
If these three conditions/safety measures are met, "prelisten" can then start.
I created new Shift+Needle and Shift+Needle_touch entries in the key list that replicate the original actions assigned to the touchstrip when the track is loaded on the deck.
Shift+Needle: is_audible ? nothing : song_pos
Shift+Needle_touch: setting 'NeedlePlay' ? down ? play ? set 'ntplay' 1 : play : var 'ntplay' 1 ? set 'ntplay' 0 : pause : nothing
It seemed more appropriate to have them as a secondary function with shift in my case since I use them less often and I can also use beatjump to easily navigate through the track when it's loaded.
@dj vinyltouch
Indeed, I understand your point. On controllers with screens, it's easier to implement this within the screen's skin. On controllers with touch strips, I think this should at least already be set by default as a secondary action. And you're right, there are controllers that don't have a screen or touch strip to allow a navigation function in prelisten.
My Z2 didn't seem to want to intelligently assign the prelisten audio stream to the correct channel by default. That's why I had to work around this problem by integrating these three security levels.
But maybe I missed something here.
In any case, it works as expected, and that's the main point.
Thanks again to @DJDAD for the help.
I'm leaving them here so that they can be useful to others.
As DJDAD indicated, the LC6000's TouchStrip is actually composed of two buttons:
Needle: which determines the needle position on the strip
And Needle_touch: which determines the touch detection on the strip
So we have:
Needle: is_audible ? nothing : prelisten_pos
Needle-touch: is_audible ? nothing : pfl ? (volume = 0% ? prelisten while_pressed : nothing) : nothing
Is_audible ? ensures that the deck is not currently playing to the master
pfl ? ensures that the cue button is active on the mixer
volume = 0% ? Ensures the volume fader is down.
If these three conditions/safety measures are met, "prelisten" can then start.
I created new Shift+Needle and Shift+Needle_touch entries in the key list that replicate the original actions assigned to the touchstrip when the track is loaded on the deck.
Shift+Needle: is_audible ? nothing : song_pos
Shift+Needle_touch: setting 'NeedlePlay' ? down ? play ? set 'ntplay' 1 : play : var 'ntplay' 1 ? set 'ntplay' 0 : pause : nothing
It seemed more appropriate to have them as a secondary function with shift in my case since I use them less often and I can also use beatjump to easily navigate through the track when it's loaded.
@dj vinyltouch
Indeed, I understand your point. On controllers with screens, it's easier to implement this within the screen's skin. On controllers with touch strips, I think this should at least already be set by default as a secondary action. And you're right, there are controllers that don't have a screen or touch strip to allow a navigation function in prelisten.
My Z2 didn't seem to want to intelligently assign the prelisten audio stream to the correct channel by default. That's why I had to work around this problem by integrating these three security levels.
But maybe I missed something here.
In any case, it works as expected, and that's the main point.
Thanks again to @DJDAD for the help.
Posted Mon 15 Sep 25 @ 8:57 pm
Ian Wild wrote :
My Z2 didn't seem to want to intelligently assign the prelisten audio stream to the correct channel by default. That's why I had to work around this problem by integrating these three security levels.
My Z2 didn't seem to want to intelligently assign the prelisten audio stream to the correct channel by default. That's why I had to work around this problem by integrating these three security levels.
So from looking at the audio setup in
the manual for the z2 it seems to show a master + headphones setup, which would mean VirtualDJ should, in theory, have the ability to send what audio it wants to the headphones directly, even with both mixer channels being audible. If that isn't happening then perhaps @djdad/other devs have more info on it (maybe there is hardware functionality that can't be buypassed).
Glad to hear @djdad helped you out with the script.
Posted Mon 15 Sep 25 @ 9:13 pm
volume = 0% ?
Is not actually vdj script.
volume 0% ? is
Is not actually vdj script.
volume 0% ? is
Posted Tue 16 Sep 25 @ 5:06 am





