Quick Sign In:  

Forum: VirtualDJ Technical Support

Topic: Absolute control of stem pads, rather than toggle?

Dieses Thema ist veraltet und kann veraltete oder falsche Informationen enthalten.

I am trying to create a function that clones a deck then allocates stems to each (vocal to scratch on one and the rest on another).

But I am having a problem in that I can toggle the stem pads, but not set them absolutely. The stem command doesn't override the pad functionality, so I can't set them all to 100%. The stem_pad, only_stem and mute_stem commands only seem to toggle.

I tried a command to reset them all by testing their values first, but without brackets I don't think I can do all stem pads in one command. The closest I managed is the following, but it requires a few runs to turn on all the pads:


stem_pad "bass" ? stem_pad "vocal" ? stem_pad "instru" ? stem_pad "hihat" ? stem_pad "kick" ? nothing : stem_pad "kick" : stem_pad "hihat" : stem_pad "instru" : stem_pad "vocal" : stem_pad "bass"


I guess I could do some very nested thing that checks multiple times, but I'm assuming there's a better option. (I started with `stem_pad "bass" ? nothing : stem_pad "bass" & stem_pad "vocal"...` but the stem_pad "vocal" clause is only reached if bass is off.)

This is what I've done so far. When you hit it, it puts all stems except vocals onto the deck below the deck currently playing, so I can scratch the vocals (I plan to add a tiny bit of delay and reverb on the vocals deck too). Then when you hit it again, it puts everything back together on the main deck.


var "$vocalscrtch" ? set "$vocalscrtch" 0 & slip_mode off & stem_pad "bass" & stem_pad "kick" & stem_pad "hihat" & stem_pad "instru" & action_deck 1 ? deck 3 stop & deck 3 stem_pad "vocal" : deck 4 stop & deck 4 stem_pad "vocal" : set "$vocalscrtch" 1 & only_stem "vocal" & slip_mode on & action_deck 1 ? clone_deck 3 & deck 3 stem_pad "vocal" : clone_deck 4 & deck 4 stem_pad "vocal"


The problem is it assumes all stem pads are on to start with. What I want is something like `stem_pad "vocal" on`, but I can't get this to work.
 

geposted Sun 28 Mar 21 @ 5:52 pm
Thanks, I've tried every permutation of this I can think of (on/off, 0/1/100, 0%/100%, single quoted, double quoted, etc) but stem_pad always seems to toggle.

EDIT: mute_stem and only_stem seem to accept an "on" - this could be a workaround - investigating.

EDIT 2: only_stem sometimes takes a couple clicks - the first turns on the named pad, the second mutes the others. But `mute_stem 'vocal' on` seems to be immediate and absolute.
 

geposted Sun 28 Mar 21 @ 6:21 pm
locoDogPRO InfinityModeratorMember since 2013
sorry didn't read properly and didn't test.
[i iz idot]

try this
eq_reset
 

geposted Sun 28 Mar 21 @ 6:28 pm
NicotuxHome userMember since 2014
was working with up to 8 decks : but if locodog says it does not anymore :\
(I didn't test with recent build)

global setting:
mixer_order 1234 & crossfaderDisable no & crossfader_hamster no & faderStart On & faderStartStop on &
deck 1 cross_assign left & only_stem rhythm on & leftdeck & leftvideo &
deck 2 cross_assign left & only_stem bass on &
deck 3 cross_assign left & only_stem instru on &
deck 4 cross_assign left & only_stem vocal on &
deck 5 cross_assign right & only_stem rhythm on & rightdeck & rightvideo &
deck 6 cross_assign right & only_stem bass on &
deck 7 cross_assign right & only_stem instru on &
deck 8 cross_assign right & only_stem vocal on &
setting stemBleedMuteVocal 80% & setting stemBleedMuteInstru 30% & setting stemBleedOnlyVocal 30% & setting stemBleedOnlyInstru 30%


then you can do what you want
and resync using

leftcross ? deck all master_deck ? : leftcross ? clone_from_deck 'left' : :  deck all master_deck ? : rightcross ? clone_from_deck 'right'
 

geposted Sun 28 Mar 21 @ 6:31 pm
Please don't apologize - I expect to do the testing! eq_reset doesn't seem to affect the stem pads - they seem separate to the graduated stem values.
 

geposted Sun 28 Mar 21 @ 6:32 pm
NicotuxHome userMember since 2014
and load with things like this
leftcross ? deck all leftcross ?load : : deck all rightcross ? load

and play like that
leftcross ? deck all leftcross ? play_pause : : deck all rightcross ? play_pause
 

geposted Sun 28 Mar 21 @ 6:33 pm
nicotux some interesting snippets to experiment with thanks when I get to tidying this up.

In my limited testing only_stem turns on the named stem on the first click, and mutes the other stems on the second. So interestingly, `only_stem 'vocal' on & only_stem 'vocal' on` does what's necessary - but perhaps this'll be fixed in a later release - I'm on 8.5 b6334.
 

geposted Sun 28 Mar 21 @ 6:36 pm
locoDogPRO InfinityModeratorMember since 2013
@techtitch, so it does [doesn't], seems you need to be in a stem eq mode.
looks like it needs a new verb, in the meantime

setting eqmode 'EZRemix' & eq_reset & setting eqmode 'frequency'
 

geposted Sun 28 Mar 21 @ 6:39 pm
NicotuxHome userMember since 2014
Yes it looks like this does not work anymore with this build :\
 

geposted Sun 28 Mar 21 @ 6:41 pm
Huge thanks to you both!

Will be experimenting with your reset approach too thanks - some of my code gets a bit fragile.
 

geposted Sun 28 Mar 21 @ 7:10 pm
This seems to work, thanks so much locodog and nicotux.

Click it once, and it clones to the deck beneath keeping just the vocal stem on the top deck, adding a tiny bit of 1/2 beat delay to the vocals deck:


setting eqmode "EZRemix" & eq_reset & setting eqmode "frequency" & var "$vocalscrtch" ? set "$vocalscrtch" 0 & slip_mode off & padfx "delay" & action_deck 1 ? deck 3 stop : deck 4 stop : set "$vocalscrtch" 1 & only_stem "vocal" & slip_mode on & padfx "delay" 16% 45% & action_deck 1 ? clone_deck 3 & setting eqmode "EZRemix" & deck 3 eq_reset & setting eqmode "frequency" & deck 3 stem_pad "vocal" : clone_deck 4 & setting eqmode "EZRemix" & deck 4 eq_reset & setting eqmode "frequency" & deck 4 stem_pad "vocal"


Click again to return to normal playback.

It requires that the delay padfx is off. I am having the same issue with this - `padfx "delay" off` toggles, can't find a way of turning it off regardless of its current state.

Incidentally, if there's a way of setting a variable `clonedeck=3/4`, then reducing the duplication later by using it, please let me know!

My other challenge - EQs are disabled with the 72 as it has them on-board, I'd love a way to disable EQ just on decks 1 and 2 so I can use EQ on the cloned decks, is that possible?
 

geposted Sun 28 Mar 21 @ 9:52 pm
Seems quite cumbersome perhaps...

Can do pretty much the same with only :
effect_stems 'vocal' & padfx 'delay' 16% 45% 


And if you want to "checks" in place (and if you want to "reset" parts easy to add that in there too):
effect_stems 'vocal' && effect_active 'delay' ? effect_stems ' vocal' off & effect_active 'delay' off : effect_stems 'vocal' on & padfx 'delay' 16% 45%
 

geposted Sun 28 Mar 21 @ 10:28 pm
NicotuxHome userMember since 2014
will work with static track
effect_stems will limit the fx to vocal you can't apply another one effect to instru or melody and a third one to rhythm and it will not be possible to loop scratch or reverse cue one stem only
that's the reason of the clone, and why the 2 or more stems parts need to be split

@techtitch
setting eqmode to different modes is not really needed, it only affects the display and skin control
eq_* goes on affecting frequencies and stem_* affecting stems when in frequency mode

techtitch wrote :
`padfx "delay" off` toggles, can't find a way of turning it off

padfx is active as long as effect is active, use effect_active delay off to disable - this resets parameters

techtitch wrote :
Incidentally, if there's a way of setting a variable `clonedeck=3/4`, then reducing the duplication later by using it, please let me know!

that's what the construct
leftcross ? deck all leftcross ? ACTION :  :  deck all rightcross ? ACTION

allows as far as decks are set to 1234
use
leftcross ? deck all leftcross ? ACTION :  :  rightcross ? deck all rightcross ? ACTION :

in case some extra decks are not affected to crossfader

so that for instance affecting
leftcross ? deck all leftcross ? eq_low :  :  rightcross ? deck all rightcross ? eq_low :

to cloned decks will apply eq_low to both decks on the same track
and will work for right and left set with no change
 

geposted Mon 29 Mar 21 @ 1:05 am
Huge thanks!

@Rune the reason I clone is so I can scratch just the vocal stem, and have the rest of the track continue unaffected.

@Nicotux the reason for setting `eqmode` is because eq_reset doesn't reset the stem pads if `eqmode==frequency`. Using the stem pad commands to enable all stem pads is very verbose as stem_pad always toggles, only_stem takes a couple clicks to work, so I'd need to `mute_stem & stem_pad` all five pads, or `only_stem 'vocal' & only_stem 'vocal' & stem_pad [the other four]` - `eqmode & eq_reset & eqmode` is clearer.

I now understand your `leftcross` commands, thanks, I had no idea `deck all leftcross ? cmd` would loop! Need to think about it as I need to apply different commands to the other deck on the same side.

Code updated with the effect reset:


setting eqmode "EZRemix" & eq_reset & setting eqmode "frequency" & var "$vocalscrtch" ? set "$vocalscrtch" 0 & slip_mode off & effect_active "delay" off & action_deck 1 ? deck 3 stop : deck 4 stop : set "$vocalscrtch" 1 & only_stem "vocal" & slip_mode on & effect_active "delay" off & padfx "delay" 16% 45% & action_deck 1 ? clone_deck 3 & setting eqmode "EZRemix" & deck 3 eq_reset & setting eqmode "frequency" & deck 3 stem_pad "vocal" : clone_deck 4 & setting eqmode "EZRemix" & deck 4 eq_reset & setting eqmode "frequency" & deck 4 stem_pad "vocal"

 

geposted Mon 29 Mar 21 @ 7:39 am
AdionPRO InfinityCTOMember since 2006
mute_stem is the best to use for absolute control using on/off btw. (so just turn mute_stem on for the 4 other stems if you want to isolate just one stem)
I'll have a closer look at why only_stem still toggles when using on though.
 

geposted Mon 29 Mar 21 @ 8:15 am
Just realized `mute_stem .. off` works to turn all stems on, regardless of previous state:


mute_stem 'instru' off & mute_stem 'vocal' off & mute_stem 'kick' off & mute_stem 'bass' off & mute_stem 'hihat' off


To isolate one stem, I'd need to run mute_stem on all 5 stems, passing 'off' for the one I want isolated. Another bug with the above - I leave deck 3/4 with vocal muted. I've not considered starting state a few times and this sort of bug is really hard to back out of while playing, as hitting again to undo whatever the function is can tie you in more knots, especially when you can't see the stem pads for decks 3 and 4.

So here's the command with the more explicit stem reset code, and leaving decks 3 and 4 in tact after the function is disabled (phew!):


mute_stem "instru" off & mute_stem "vocal" off & mute_stem "kick" off & mute_stem "bass" off & mute_stem "hihat" off & var "$vocalscrtch" ? set "$vocalscrtch" 0 & slip_mode off & effect_active "delay" off & action_deck 1 ? deck 3 stop & deck 3 mute_stem "instru" off & mute_stem "vocal" off & mute_stem "kick" off & mute_stem "bass" off & mute_stem "hihat" off : deck 4 stop & deck 4 mute_stem "instru" off & mute_stem "vocal" off & mute_stem "kick" off & mute_stem "bass" off & mute_stem "hihat" off : set "$vocalscrtch" 1 & only_stem "vocal" & slip_mode on & effect_active "delay" off & padfx "delay" 16% 45% & action_deck 1 ? clone_deck 3 & deck 3 mute_stem "instru" off & mute_stem "vocal" on & mute_stem "kick" off & mute_stem "bass" off & mute_stem "hihat" off : clone_deck 4 & deck 4 mute_stem "instru" off & mute_stem "vocal" on & mute_stem "kick" off & mute_stem "bass" off & mute_stem "hihat" off


Could we have carriage returns permitted in the script window? You'd need to insert the entity into the XML, but everything else could treat them as space. Would make bigger chunks like this so much easier to work with.
 

geposted Mon 29 Mar 21 @ 12:22 pm
AdionPRO InfinityCTOMember since 2006
To see the correct status for your custom buttons, use && instead of &. (With && all the conditions need to be true before the button will light up, with & only the first needs to be true for the button to light up)
 

geposted Mon 29 Mar 21 @ 12:49 pm
Great idea thanks, @Rune used double ampersands above, now I understand why!

EDIT: Doesn't work - button is off regardless. Is there a way I can get the button to light if `@vocalscrtch`?

EDIT 2: Precede it with ` var "$vocalscrtch" & `:


var "$vocalscrtch" & mute_stem "instru" off && mute_stem "vocal" off && mute_stem "kick" off && mute_stem "bass" off && mute_stem "hihat" off && var "$vocalscrtch" ? set "$vocalscrtch" 0 && slip_mode off && effect_active "delay" off && action_deck 1 ? deck 3 stop && deck 3 mute_stem "instru" off && mute_stem "vocal" off && mute_stem "kick" off && mute_stem "bass" off && mute_stem "hihat" off : deck 4 stop && deck 4 mute_stem "instru" off && mute_stem "vocal" off && mute_stem "kick" off && mute_stem "bass" off && mute_stem "hihat" off : set "$vocalscrtch" 1 && only_stem "vocal" && slip_mode on && effect_active "delay" off && padfx "delay" 16% 45% && action_deck 1 ? clone_deck 3 && deck 3 mute_stem "instru" off && mute_stem "vocal" on && mute_stem "kick" off && mute_stem "bass" off && mute_stem "hihat" off : clone_deck 4 && deck 4 mute_stem "instru" off && mute_stem "vocal" on && mute_stem "kick" off && mute_stem "bass" off && mute_stem "hihat" off


Ideally it'd be lit when off, and blinking when on. How can I return blink? If I start the command with `var "@vocalscrtch" ? Blink : 1 &` then the rest is conditional on the variable. I tried starting `true & ..` which works, but then adding `blink 500ms` in the clause that turns the function on doesn't seem to work..
 

geposted Mon 29 Mar 21 @ 12:52 pm
NicotuxHome userMember since 2014
in a way to gain some space and speed you can
- use mute_stem rhythm off & mute_stem melovocal off (2 instead of 5)
- use toggle "$vocalscrtch" instead of doing it by hand
- use && only when needed
- clone_from_deck in a way to reduce the deck switching

toggle "$vocalscrtch" && blink & mute_stem rhythm off & mute_stem melovocal off & var "$vocalscrtch" 0 ? slip_mode off & effect_active "delay" off & action_deck 1 ? deck 3 stop & mute_stem rhythm off &  mute_stem melovocal off : deck 4 stop & mute_stem rhythm off & mute_stem melovocal off : only_stem "vocal" & slip_mode on & effect_active "delay" off & padfx "delay" 16% 45% & action_deck 1 ? deck 3  clone_from_deck 1 & mute_stem vocal on :  deck 4 clone_from_deck 2 & mute_stem "vocal" on


take care about the global variable "$vocalscrtch" maybe it would better be local "vocalscrtch"
in case of 2 different modes in deck 1 and 2/4 it would interfere

or better no variable needed
not mute_stem rhythm off && mute_stem melovocal off & slip_mode ? slip_mode off & effect_active "delay" off & action_deck 1 ? deck 3 stop & mute_stem rhythm off &  mute_stem melovocal off : deck 4 stop & deck 4 mute_stem rhythm off & mute_stem melovocal off : only_stem "vocal" & slip_mode on & effect_active "delay" off & padfx "delay" 16% 45% & action_deck 1 ? deck 3  clone_from_deck 1 & mute_stem vocal on :  deck 4 clone_from_deck 2 & mute_stem "vocal" on
 

geposted Mon 29 Mar 21 @ 3:30 pm
Thanks so much Nicotux! Learnt another few tips..

I want to stick with the variable, so that I can't accidentally confuse it by starting with eg, slip enabled, but I've replaced $ with % so the variable is local to each deck.
 

geposted Tue 30 Mar 21 @ 1:50 pm


(Alte Themen und Foren werden automatisch geschlossen)