Hi all,
Curses! I WILL begin to learn VDJScript! *Shakes fist*
Some kind soul (synthet1c) very kindly helped map my FX_SELECT dial to adjust a loop when my "shift_loop" was active, and made me a happy man.
Can someone please help again, and advise the correct code for the following two maps?
1) When "shift_loop" button is active, I'd like my three hotcue buttons to work as frequency kill switches, 1 low, 2 med, and 3 high.
I suspect it starts var "shift_loop" ? but don't know the command to kill the frequency.
2) When "shift_loop" button is active, I'd like the lefthand load button to clone the right deck, and vice-versa.
Maybe something like var "shift_loop" ? load : deck 2 clone_deck 1 for the left, but what about the right? I currently have this mapped to 'G' and 'H' on the lappy.
The less I have to touch the lappy for the tricks I'm learning, the more like a DJ I begin to feel. And it feels like I'm stretching the MTP way beyond its factory settings, and into something twice the price.
Ta
Mike.
Curses! I WILL begin to learn VDJScript! *Shakes fist*
Some kind soul (synthet1c) very kindly helped map my FX_SELECT dial to adjust a loop when my "shift_loop" was active, and made me a happy man.
Can someone please help again, and advise the correct code for the following two maps?
1) When "shift_loop" button is active, I'd like my three hotcue buttons to work as frequency kill switches, 1 low, 2 med, and 3 high.
I suspect it starts var "shift_loop" ? but don't know the command to kill the frequency.
2) When "shift_loop" button is active, I'd like the lefthand load button to clone the right deck, and vice-versa.
Maybe something like var "shift_loop" ? load : deck 2 clone_deck 1 for the left, but what about the right? I currently have this mapped to 'G' and 'H' on the lappy.
The less I have to touch the lappy for the tricks I'm learning, the more like a DJ I begin to feel. And it feels like I'm stretching the MTP way beyond its factory settings, and into something twice the price.
Ta
Mike.
Posted Thu 04 Jul 13 @ 3:16 pm
var 'shift_loop' ? eq_low_kill : var "shift" ? delete_cue 1 : hot_cue 1
var 'shift_loop' ? eq_mid_kill : var "shift" ? delete_cue 2 : hot_cue 2
var 'shift_loop' ? eq_high_kill : var "shift" ? delete_cue 3 : hot_cue 3
var 'shift_loop' ? load : clone_deck (might work for 2 deck skins, but i think it needs to specify the sides as below)
or
var 'shift_loop' ? device_side 'left' ? deck left clone_deck right : deck right clone_deck left : load
var 'shift_loop' ? eq_mid_kill : var "shift" ? delete_cue 2 : hot_cue 2
var 'shift_loop' ? eq_high_kill : var "shift" ? delete_cue 3 : hot_cue 3
var 'shift_loop' ? load : clone_deck (might work for 2 deck skins, but i think it needs to specify the sides as below)
or
var 'shift_loop' ? device_side 'left' ? deck left clone_deck right : deck right clone_deck left : load
Posted Thu 04 Jul 13 @ 4:47 pm
Thanks, DJDad.
To try and understand,
var "anycheck" ? [newaction] : [othercheck] ? [othernewaction] : [originalaction]
where "anycheck" is the name of a variable, on or off, "newaction" is the thing I want mapped, "othercheck" determines my hot cue delete button status, "othernewaction" is killing the eq, and "originalaction" activates the given hot cue?
Could you, for example go as far as, depending on which order two shift buttons are pressed, or if any at all, one of maybe five things can be assigned to a singe button? Could those already overworked hot cue buttons be used to chain effects, too? But how then to manipulate said effects independently? I need more hands. Or buttons.
Sorry for all the questions, but this really tickles my geek switches. I used to program computers for a living, see. VDJ has gone from being 'just' a freebie download for mixing mp3s, to something else entirely. As hobbies go..!
Ta
Mike
To try and understand,
var "anycheck" ? [newaction] : [othercheck] ? [othernewaction] : [originalaction]
where "anycheck" is the name of a variable, on or off, "newaction" is the thing I want mapped, "othercheck" determines my hot cue delete button status, "othernewaction" is killing the eq, and "originalaction" activates the given hot cue?
Could you, for example go as far as, depending on which order two shift buttons are pressed, or if any at all, one of maybe five things can be assigned to a singe button? Could those already overworked hot cue buttons be used to chain effects, too? But how then to manipulate said effects independently? I need more hands. Or buttons.
Sorry for all the questions, but this really tickles my geek switches. I used to program computers for a living, see. VDJ has gone from being 'just' a freebie download for mixing mp3s, to something else entirely. As hobbies go..!
Ta
Mike
Posted Thu 04 Jul 13 @ 5:23 pm
The syntax is like...
[query] ? [do this if query return true] : [do that if query returns false]
but you can also nest queries like...
[query] ? [[query2] ? [[do this if query2 return true] : [do that if query2 returns false] ] :[do that if query returns false]
In the above case, if query returns false, the red part will never happen
var 'variablename' ? ... will return true if the variable is 1 or true (depending if it gets numbers or just toggle between on/off)
another example..
Assuming that you have 2 SHIFT buttons assigned as ..
SHIFT1--> toggle 'shift1' while_pressed
SHIFT2--->toggle 'shift2' while_pressed
Using the above example a button can have 3 different actions (one without SHIFt, another with SHIFT1, and a 3rd with SHIFT2)
var 'shift1' ? [do action if SHIFT1 is pressed] : var 'shift2' ? [do action if SHIFT1 is not pressed and SHIFT2 is pressed] : [do action if none of them are pressed]
[query] ? [do this if query return true] : [do that if query returns false]
but you can also nest queries like...
[query] ? [[query2] ? [[do this if query2 return true] : [do that if query2 returns false] ] :[do that if query returns false]
In the above case, if query returns false, the red part will never happen
var 'variablename' ? ... will return true if the variable is 1 or true (depending if it gets numbers or just toggle between on/off)
another example..
Assuming that you have 2 SHIFT buttons assigned as ..
SHIFT1--> toggle 'shift1' while_pressed
SHIFT2--->toggle 'shift2' while_pressed
Using the above example a button can have 3 different actions (one without SHIFt, another with SHIFT1, and a 3rd with SHIFT2)
var 'shift1' ? [do action if SHIFT1 is pressed] : var 'shift2' ? [do action if SHIFT1 is not pressed and SHIFT2 is pressed] : [do action if none of them are pressed]
Posted Thu 04 Jul 13 @ 8:32 pm
Hi,
Me again.
Can I manipulate the LED to be on when the kill is in effect, off when off. and switch off when shift_loop is pressed back to an off state..?
Ta
Mike.
Me again.
Can I manipulate the LED to be on when the kill is in effect, off when off. and switch off when shift_loop is pressed back to an off state..?
Ta
Mike.
Posted Fri 05 Jul 13 @ 4:00 pm
If you have the HOT CUE button assigned as ..
var 'shift_loop' ? eq_low_kill : var "shift" ? delete_cue 1 : hot_cue 1
as my example above, then the LED would be more convenient to be mapped as ..
eq_low_kill ? blink 500ms : var "shift" ? blink 1000ms : hot_cue 1
the LED will blink fast if Kill is ON, blink slower if pressed the SHIFT (which makes the button to perform as Delete), and follow the hot_cue action (on when exists/off when empty) if none of the above.
var 'shift_loop' ? eq_low_kill : var "shift" ? delete_cue 1 : hot_cue 1
as my example above, then the LED would be more convenient to be mapped as ..
eq_low_kill ? blink 500ms : var "shift" ? blink 1000ms : hot_cue 1
the LED will blink fast if Kill is ON, blink slower if pressed the SHIFT (which makes the button to perform as Delete), and follow the hot_cue action (on when exists/off when empty) if none of the above.
Posted Fri 05 Jul 13 @ 4:18 pm
Hi, djdad.
I've tried the low eq kill code, and VDJ is reporting a syntax error - see below.
And also, the hotcue buttons don't work anymore. What have I missed. Any thoughts?
Ta
Mike
I've tried the low eq kill code, and VDJ is reporting a syntax error - see below.
And also, the hotcue buttons don't work anymore. What have I missed. Any thoughts?
Ta
Mike
Posted Sun 07 Jul 13 @ 2:27 am
it needs to say
var "shift_loop" ? eq_low_kill : var "shift" ? delete_cue 1 : hot_cue 1
just a simple syntax mistake ;-)
var "shift_loop" ? eq_low_kill : var "shift" ? delete_cue 1 : hot_cue 1
just a simple syntax mistake ;-)
Posted Sun 07 Jul 13 @ 2:39 am
Addition:
I checked the list of VDJ commands, and swapped eq_low_kill for eq_kill_low as per here, and still reporting the syntax error.
Aaaargh!
Ta
Mike
edit:
Just seen your reply.
Thanks!
I checked the list of VDJ commands, and swapped eq_low_kill for eq_kill_low as per here, and still reporting the syntax error.
Aaaargh!
Ta
Mike
edit:
Just seen your reply.
Thanks!
Posted Sun 07 Jul 13 @ 2:46 am
Hi.
Found a far better way of cloning decks, with no shift button required.
I simply used the following:
holding 2000ms ? device_side 'left' ? deck 2 clone_deck 1 : deck 1 clone_deck 2
By pressing and holding the appropriate load button it clones the left and right sides with no problem.
My first bit of calculated VDJScript. Well impressed.
Thank you DJDad, for you help and patience in understanding the syntax. I think I'm starting to finally get it. I had a play with the blinking LEDs on the kill switches, too. Shame I played in daylight, and didn't reap the benefits...
Ta
Mike
Found a far better way of cloning decks, with no shift button required.
I simply used the following:
holding 2000ms ? device_side 'left' ? deck 2 clone_deck 1 : deck 1 clone_deck 2
By pressing and holding the appropriate load button it clones the left and right sides with no problem.
My first bit of calculated VDJScript. Well impressed.
Thank you DJDad, for you help and patience in understanding the syntax. I think I'm starting to finally get it. I had a play with the blinking LEDs on the kill switches, too. Shame I played in daylight, and didn't reap the benefits...
Ta
Mike
Posted Sun 07 Jul 13 @ 2:26 pm
Just one more:
Managed to get the hotcue buttons to flash quickly to show Shift has been pressed, but pressing the appropriate kill button now just kills the eq, and the LED continues flashing at 250ms, as per the example below.
I could use a hand either switching off the faster flash completely to show the eq has been killed (while the other two lights flash madly, serving as a reminder shift is engaged!), or switched permanently on to show the eq has been killed. Off, I think, would be somehow more appropriate.
I've got this so far:
var "shift_loop" ? blink 250ms & eq_kill_low : var "shift" ? delete_cue 1 : hot_cue 1
Where do I please put off in the command to counteract the blink 250ms to show the eq has been killed?
var "shift_loop" ? blink 250ms & eq_kill_low ? off : var "shift" ? delete_cue 1: hot_cue 1 simply returns to hotcue 1, with no eq kill on the lows.
Ta
Mike
Managed to get the hotcue buttons to flash quickly to show Shift has been pressed, but pressing the appropriate kill button now just kills the eq, and the LED continues flashing at 250ms, as per the example below.
I could use a hand either switching off the faster flash completely to show the eq has been killed (while the other two lights flash madly, serving as a reminder shift is engaged!), or switched permanently on to show the eq has been killed. Off, I think, would be somehow more appropriate.
I've got this so far:
var "shift_loop" ? blink 250ms & eq_kill_low : var "shift" ? delete_cue 1 : hot_cue 1
Where do I please put off in the command to counteract the blink 250ms to show the eq has been killed?
var "shift_loop" ? blink 250ms & eq_kill_low ? off : var "shift" ? delete_cue 1: hot_cue 1 simply returns to hotcue 1, with no eq kill on the lows.
Ta
Mike
Posted Sun 07 Jul 13 @ 3:48 pm
what you need to do is ask a query for every condition that you want eg
var 'shift_loop' ? eq_kill_low ? blink 250ms : on : var 'shift' ? hot_cue 1 ? blink 500ms : off : hot_cue 1
lets break it down into smaller parts
var 'shift_loop' ?
[color=#C7C5C6]____eq_kill_low ? [/color]blink 250ms :
____ on :
var 'shift' ?
____hot_cue 1 ? blink 500ms :
____off :
hot_cue 1
first you are asking if 'shift_loop' is true, then if that is true check if the low eq is killed. The led will only blink if both of the first conditions are true, if you have 'shift_loop' on but the eq is not killed the led will be on.
If 'shift_loop' is not active you will then check if the 'shift' is active. If it is then check if hot cue 1 exists. The reason for this is that you do not want the led to when you are deleting to blink if the cue is not there. If the cue exists then make the led blink at a rate if 2 times per second, if the cue doesn't exist turn the led off.
Finally if all the previous conditions are false (neither shift is active) then switch the led on only if the hot_cue exists
var 'shift_loop' ? eq_kill_low ? blink 250ms : on : var 'shift' ? hot_cue 1 ? blink 500ms : off : hot_cue 1
lets break it down into smaller parts
var 'shift_loop' ?
[color=#C7C5C6]____eq_kill_low ? [/color]blink 250ms :
____ on :
var 'shift' ?
____hot_cue 1 ? blink 500ms :
____off :
hot_cue 1
first you are asking if 'shift_loop' is true, then if that is true check if the low eq is killed. The led will only blink if both of the first conditions are true, if you have 'shift_loop' on but the eq is not killed the led will be on.
If 'shift_loop' is not active you will then check if the 'shift' is active. If it is then check if hot cue 1 exists. The reason for this is that you do not want the led to when you are deleting to blink if the cue is not there. If the cue exists then make the led blink at a rate if 2 times per second, if the cue doesn't exist turn the led off.
Finally if all the previous conditions are false (neither shift is active) then switch the led on only if the hot_cue exists
Posted Mon 08 Jul 13 @ 4:47 am
Thank you synthet1c, I tried your code, and now the kill button doesn't work!
Just think, there'll be a million MTP users trying all this now. We may have spawned nations of coders!
Can we run a check similar to if eq_kill_low = true then LED off?
I'm beginning to wonder if you can actually query eq_kill_low, because surely its a command, not a variable? Although the following (from the VDJpedia might suggest otherwise:
"Actions vs queries
Commands can be used either as actions or as queries, depending on the context.
For example, the command "play" used in a keyboard shortcut, will be an action, and start to play the music when called.
The same command "play" used as a mapping for a controller's LED, will be a query, and will return true if the song is playing, or false if not."
Could we say somewhere else on the line if eq_kill_low = true then off (not strictly vdjscript, but don't know how else to put it.)?
My hotcue button needs to check on the following bits and pieces:
Check_Shift_Loop_Button = on.
If true, blink LED at 250ms, and make hotcue button kill bass. Only when bass is killed, turn light off.
If false, THEN check "shift" button = on. If true, delete hot_cue 1, if false, play hot_cue 1.
Again, apologies for the persistence, but its got to be possible...
Ta
Mike.
Just think, there'll be a million MTP users trying all this now. We may have spawned nations of coders!
Can we run a check similar to if eq_kill_low = true then LED off?
I'm beginning to wonder if you can actually query eq_kill_low, because surely its a command, not a variable? Although the following (from the VDJpedia might suggest otherwise:
"Actions vs queries
Commands can be used either as actions or as queries, depending on the context.
For example, the command "play" used in a keyboard shortcut, will be an action, and start to play the music when called.
The same command "play" used as a mapping for a controller's LED, will be a query, and will return true if the song is playing, or false if not."
Could we say somewhere else on the line if eq_kill_low = true then off (not strictly vdjscript, but don't know how else to put it.)?
My hotcue button needs to check on the following bits and pieces:
Check_Shift_Loop_Button = on.
If true, blink LED at 250ms, and make hotcue button kill bass. Only when bass is killed, turn light off.
If false, THEN check "shift" button = on. If true, delete hot_cue 1, if false, play hot_cue 1.
Again, apologies for the persistence, but its got to be possible...
Ta
Mike.
Posted Mon 08 Jul 13 @ 5:25 pm
The script example and explination above is for the led only, not the button on it's own or the led and button together. but you can easily change the script for either
this would be for both the led and button mapped at the same time "If you can't see an individual LED that can be mapped for your hot cues in the mapper list use this script"
var 'shift_loop' ? eq_kill_low ? blink 250ms & eq_kill_low 0 : on & eq_kill_low 1 : var 'shift' ? hot_cue 1 ? blink 500ms & delete_cue 1 : off & nothing : hot_cue 1
It can get a little confusing when mapping the led and button together as you need to put the led commands and action commands on opposite ends of the condition.
this would be for the button on it's own and you could use the original script on the led, this is an easier method but takes more duplication of the script so not ideal unless you want to get really in depth in mapping.
var 'shift_loop' ? eq_kill_low : var 'shift' ? delete_cue 1 : hot_cue 1
this would be for both the led and button mapped at the same time "If you can't see an individual LED that can be mapped for your hot cues in the mapper list use this script"
var 'shift_loop' ? eq_kill_low ? blink 250ms & eq_kill_low 0 : on & eq_kill_low 1 : var 'shift' ? hot_cue 1 ? blink 500ms & delete_cue 1 : off & nothing : hot_cue 1
It can get a little confusing when mapping the led and button together as you need to put the led commands and action commands on opposite ends of the condition.
this would be for the button on it's own and you could use the original script on the led, this is an easier method but takes more duplication of the script so not ideal unless you want to get really in depth in mapping.
var 'shift_loop' ? eq_kill_low : var 'shift' ? delete_cue 1 : hot_cue 1
Posted Mon 08 Jul 13 @ 5:50 pm
Just to add a few notes...
You actually need to control 2 things here... one is the action that the button/slider will perform depending on the state of your Shift buttons, and the other one is how the LEDS will act (on/off/blink) on each case.
Most of the controllers have pre-mapped the LEDs but those are not present in the mapper (action/key lists), as they follow the buttons (pre-assigned in the definition file as value="default")
You can use of course the button/slider to control the LED as well, but you can also split the actions and have different for the button/slider and diferent for the LEDs. This may also be easier as the total actions will not be that long and easier to understand.
Particularly the MTP has LED_HOTCUE1 elements (can be found on the Key List on the top right side). Not sure if you have already used and mapped that, so that could be the case if your Led works correctly or not.
Some examples
Case 1. HOTCUE1 mapped/ LED_HOTCUE1 unmapped (empty)
HOTCUE 1 ->var 'shift' ? delete_cue 1 : hot_cue 1
In this case the LED will always stay on if hotcue 1 exists
Case 2. HOTCUE1 and LED HOTCUE1 mapped
HOTCUE 1--> var 'shift' ? delete_cue 1 : hot_cue 1
LED_HOTCUE1--> var 'shift' ? blink : hot_cue 1
In this case the LED will blink if SHIFT is pressed (delete mode) and will follow the hot_cue if not, meaning that it will stay off if hotcue 1 doesnt exist and on if it does. When you use actions in the LEDs, those do not perfom any action actually. They just query the state true/false and light on or off the LED.
Case 3. Control both Led and button with the button (LED unmapped)
HOTCUE1--> var 'shift' ? blink & delete_cue 1 : hot_cue 1
In this case if SHOFT is pressed the LED will blink and the button will perform delete, and if not pressed the LED will follow the hotcue (on if exists and off if it doesnt) and the button will perform the hot_cue action.
You actually need to control 2 things here... one is the action that the button/slider will perform depending on the state of your Shift buttons, and the other one is how the LEDS will act (on/off/blink) on each case.
Most of the controllers have pre-mapped the LEDs but those are not present in the mapper (action/key lists), as they follow the buttons (pre-assigned in the definition file as value="default")
You can use of course the button/slider to control the LED as well, but you can also split the actions and have different for the button/slider and diferent for the LEDs. This may also be easier as the total actions will not be that long and easier to understand.
Particularly the MTP has LED_HOTCUE1 elements (can be found on the Key List on the top right side). Not sure if you have already used and mapped that, so that could be the case if your Led works correctly or not.
Some examples
Case 1. HOTCUE1 mapped/ LED_HOTCUE1 unmapped (empty)
HOTCUE 1 ->var 'shift' ? delete_cue 1 : hot_cue 1
In this case the LED will always stay on if hotcue 1 exists
Case 2. HOTCUE1 and LED HOTCUE1 mapped
HOTCUE 1--> var 'shift' ? delete_cue 1 : hot_cue 1
LED_HOTCUE1--> var 'shift' ? blink : hot_cue 1
In this case the LED will blink if SHIFT is pressed (delete mode) and will follow the hot_cue if not, meaning that it will stay off if hotcue 1 doesnt exist and on if it does. When you use actions in the LEDs, those do not perfom any action actually. They just query the state true/false and light on or off the LED.
Case 3. Control both Led and button with the button (LED unmapped)
HOTCUE1--> var 'shift' ? blink & delete_cue 1 : hot_cue 1
In this case if SHOFT is pressed the LED will blink and the button will perform delete, and if not pressed the LED will follow the hotcue (on if exists and off if it doesnt) and the button will perform the hot_cue action.
Posted Tue 09 Jul 13 @ 7:39 am
Guys, thank you so much for your help and kindness.
I settled for the following:
var 'shift_loop' ? eq_kill_low ? off & eq_kill_low 0 : blink 250ms & eq_kill_low 1 : var 'shift' ? hot_cue 1 ? blink 500ms & delete_cue 1 : off & nothing : hot_cue 1, which is more or less synthet1cs code, but with the LED flash and off swapped.
Now, with "shift_loop" pressed, all three hot cues flash, and stop flashing when the kill is in effect - exactly what I wanted. I hope not to bother you all again with my persistence in the near future.
Apologies to everyone else for the delay of version 8, while these lovely people helped me map 7.4 just so.
Wicked stuff.
Ta
Mike
I settled for the following:
var 'shift_loop' ? eq_kill_low ? off & eq_kill_low 0 : blink 250ms & eq_kill_low 1 : var 'shift' ? hot_cue 1 ? blink 500ms & delete_cue 1 : off & nothing : hot_cue 1, which is more or less synthet1cs code, but with the LED flash and off swapped.
Now, with "shift_loop" pressed, all three hot cues flash, and stop flashing when the kill is in effect - exactly what I wanted. I hope not to bother you all again with my persistence in the near future.
Apologies to everyone else for the delay of version 8, while these lovely people helped me map 7.4 just so.
Wicked stuff.
Ta
Mike
Posted Tue 09 Jul 13 @ 12:28 pm