Se Connecter:     


Forum: VirtualDJ Technical Support

Sujet: need help with Controller definition
Hi all,

ok I have now purchased the Intech TEK2 controller and trying to create a definition file. Simple Midi works, but since I also would like to get the LEDs to work, I am going the definition file route. Its my first time and I am struggling.

What I have so far.

<device name="GRID" author="SoundSilence" description="Grid Controller" version="800" type="MIDI" vid="EE0x303a" pid="0x8123" >

The controller is recognised by VDJ when I start it up, so vid and pid seems to be right.

Then I started to define a button. E.g. button 1 on the controller was shown in Simple Midi as "0-BUTTON36" (on/off).

Midi Monitor shows:

Source: From Grid
Message: Note On
Chan: 1
Data: C1 127

My first line then was:

<button note="0x36" name="PLAY" channel="1" deck="1" />

However, VDJ is not reacting and also when pushing the button there are no entries in the "Activity" field in the controller mapping page.

What am I doing wrong?

Thank you for help.
 

Posté 2 days ago @ 3:02 pm
Which midi monitor?, a lot of them get it wrong and say the first midi channel is 01, the first midi channel is actually channel 00

Also your VID starting EE0x doesn't make sense, it should start 0x
Also are you sure the note is 0x36, not note 36 which would be 0x24
 

Hi locodog, thanks for your reply.

Sorry for the confusion. Ignore the "EE", I had added that to quickly switch to the Simple Midi mapping again.

I used the midi monitor here: https://www.snoize.com/MIDIMonitor/

You are right, it is note 36. Simple Midi said "0-BUTTON36". I tried now with 0x24, but it still does not work.

This is the actual file:

<device name="GRID" author="SoundSilence" description="Grid Controller" version="800" type="MIDI" vid="0x303a" pid="0x8123" decks="2" >

<button note="0x24" name="PLAY1" channel="1" deck="1" />

</device>

Any more idea?
 

channel="0"
 

Oh wow, I tried channel 0 as you mentioned, and now it works!

<button note="0x24" name="PLAY1" channel="0" deck="1" />

Thanks!

Can you give me a hint how I can then now tell the corresponding LED to turn ON when the deck is running?
 

note and channel for the LED?,
if the same as the input


<led note="0x24" channel="0x00" name="LED_PLAY1" default="PLAY1" deck="1" />

default means it will just look at the state of the play1 button script logic and just follow that, as long as another script hasn't been assigned to the LED
 

Thanks. I tried that, doesnt work.

The Intech controller is very complex, especially as all buttons and LED are configurable within the Grid Editor. I tried listening on any midi events that are sent from VDJ, e.g. when one deck is playing, but it seems VDJ is not sending anything.

Any more ideas?
 

script the LED to
blink
 

Hm, I am afraid I dont understand what you mean.

The Grid Editor for the controller needs an incoming midi event, so that I can assign that to lighting the LED.

Why is VDJ not sending midi events?
 

in the mapping window, go to the LED entry and give it the script
blink
 

Does not work.

As I said there needs to be a midi message sent to the controller. If I knew which one VDJ sends (if it does), then I could edit the controller accordingly.
 

blink
is a message, it will make the LED entry blink on/off which will send midi out on the channel and note defined.
 

Ok, I tried, also with blink. There is no midi sent out from VDJ to the controller.

Can it be that only build in definitions send midi, and manual added definitions not?
 

post your def so far.
also your mapping
definition files whole reason for existing is midi out.
 

Ok, I have:

<device name="GRID" author="SoundSilence" description="Grid Controller" version="800" type="MIDI" vid="0x303a" pid="0x8123" decks="2" >

<button cc="0x20" name="PLAY1" channel="0" deck="1" />
<led cc="0x20" value="0x5C" name="LED_PLAY1" channel="0" default="PLAY1" deck="1" />

</device>

Note: I changed the corresponding button on the controller to cc32, it works fine. The LED should have the same address. I am not sure about the value though.

Mapping:

<?xml version="1.0" encoding="UTF-8"?>
<mapper device="GRID" version="850" date="2025-06-02">
<map value="PLAY1" action="deck 1 play ? stop : play" />
<map value="LED_PLAY1" action="blink" />
</mapper>

I tried also "play" or "play ? on : off" as values for "LED_PLAY1", no change.

Hope this is helpful.

I am also confused as in midi monitor I can never see any messages coming from VDJ. Is there another way to see that VDJ is actually sending midi messages?

Thanks.
 

Hey Locodog, I found the solution!

There was a hidden setting in the controller editor that actually switched OFF receiving MIDI. Oh my...

So now it works!

Thanks for your support!
 

Sound&Silence wrote :
<led cc="0x20" value="0x5C" name="LED_PLAY1" channel="0" default="PLAY1" deck="1" />

Unless this is an RGB led where each value is a different color, then for the vast majority of LEDs, value would/should be 0x7F (127 decimal)
Also a lot of devices use one of the followng two logics:
0=OFF, Any other value=ON
7F=ON, Any other value=OFF

If your led works with value=0x5C, then it mostl likely falls to the first logic.
Try to use value=0x7F, and if the LED works as expected, use that value for ALL leds.

BTW: VirtualDJ groups the buttons that appear on the same deck automatically.
You don't have to define PLAY1, PLAY2, PLAY3 and PLAY4 in order to have "4 different play buttons, one for each deck"

The best way to do this,is to give the SAME name on all four buttons.

By using your code as an example you can write
<button cc="0x20" name="PLAY1" channel="0" deck="1" />
<button cc="0x20" name="PLAY2" channel="1" deck="2" />
<button cc="0x20" name="PLAY3" channel="2" deck="3" />
<button cc="0x20" name="PLAY4" channel="3" deck="4" />

OR
<button cc="0x20" name="PLAY" channel="0" deck="1" />
<button cc="0x20" name="PLAY" channel="1" deck="2" />
<button cc="0x20" name="PLAY" channel="2" deck="3" />
<button cc="0x20" name="PLAY" channel="3" deck="4" />


The FIRST way is the WRONG way to do it.
The SECOND one is the CORRECT one.

Finally when your definition has deck="1" or deck="2" e.t.c. on elements, then on your mapper, you don't need to repeat the deck.
In other words, on your mapper you DON'T need to type <map value="PLAY1" action="deck 1 play ? stop : play" />
Instead you can type <map value="PLAY1" action="play ? stop : play" />
VirtualDJ knows on which deck yo apply the map because of the definition.
On the mapper, you specify deck only when you want to overide the deck that's on the definition file.

PS: That's why you can combine all "PLAY" buttons under one name.
VirtualDJ applies the action to the correct deck by looking up the deck on the definition. ;)
 

Sound&Silence wrote :
Hey Locodog, I found the solution!


Congrats, you now 'own' this software a little bit more.
Get those encoders working also the attached LED s [which I guess you'll use a <bar> element for].
Then grab yourself a beer for a difficult job done.