Accesso rapido:  

Forum: VirtualDJ Plugins

Topic: Behringer X-Touch Extender definition file - Page: 1
Hello, I'm writing a definition file for the Behringer X-Touch Extender.
https://www.behringer.com/product.html?modelCode=0808-AAH

I'm having some problems to get started. For now I only included the bottom row buttons (SELECT) of all 8 channels with midi notes 32-39.



I converted the notes 32-39 to HEX and wrote this definition XML:

<?xml version="1.0" encoding="UTF-8"?>
<device name="Behringer X-Touch Extender" description="X-Touch Extender4" type="MIDI" vid="0x1397" pid="0x00b6" author="CeesTech">

<button name="SELECT1" note="0x20" channel="1" />
<button name="SELECT2" note="0x21" channel="1" />
<button name="SELECT3" note="0x22" channel="1" />
<button name="SELECT4" note="0x23" channel="1" />
<button name="SELECT5" note="0x24" channel="1" />
<button name="SELECT6" note="0x25" channel="1" />
<button name="SELECT7" note="0x26" channel="1" />
<button name="SELECT8" note="0x27" channel="1" />

</device>


When I start VDJ I get a 'hardware detected' message so the defintion file is recognised.
But when I goto Settings -> Controllers -> Edit mapper and press a Select button there is no activity.

Hopefully someone can point out what I'm doing wrong?
Thanks in advance, Cees
 

Inviato Tue 10 Sep 24 @ 5:53 pm
locoDogPRO InfinityModeratorMember since 2013
try channel="0" instead.
I don't know why midi reporters are 1 indexed, they shouldn't be. 16 midi channels represented by a byte at hardware level, 0-15 inclusive.
 

Inviato Tue 10 Sep 24 @ 6:43 pm
Thanks, spot on! After changing the channel to 0 it works. Got the buttons, button leds, encoders and sliders working.

I'll send the plugin to the community when ready.
Can I leave this topic open in case I have another question the next days?
 

Inviato Wed 11 Sep 24 @ 2:46 pm
locoDogPRO InfinityModeratorMember since 2013
no problem, threads stay writeable for a long time.
 

Inviato Wed 11 Sep 24 @ 3:42 pm
djdadPRO InfinityDevelopment ManagerMember since 2005
what about the Encoder Leds and the LCD Displays ? Have you managed to control them via MIDI ?

I cant find any MIDI Protocol document available online though.
 

Inviato Thu 12 Sep 24 @ 8:57 am
djdadPRO InfinityDevelopment ManagerMember since 2005
Found this...



Will study a bit and provide you some additions in your definition to try out
 

Inviato Thu 12 Sep 24 @ 9:11 am
djdadPRO InfinityDevelopment ManagerMember since 2005
Ok, here is something you can try...
Add the following to your definition

<text sysex="F0002032424C000000000000000000000000000000F7">
<digit name="LCD_1_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_1_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_1_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_1_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_1_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C010000000000000000000000000000F7">
<digit name="LCD_2_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_2_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_2_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_2_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_2_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C020000000000000000000000000000F7">
<digit name="LCD_3_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_3_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_3_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_3_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_3_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C030000000000000000000000000000F7">
<digit name="LCD_4_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_4_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_4_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_4_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_4_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C040000000000000000000000000000F7">
<digit name="LCD_5_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_5_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_5_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_5_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_5_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C050000000000000000000000000000F7">
<digit name="LCD_6_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_6_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_6_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_6_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_6_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C060000000000000000000000000000F7">
<digit name="LCD_7_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_7_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_7_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_7_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_7_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C070000000000000000000000000000F7">
<digit name="LCD_8_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_8_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_8_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_8_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_8_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>


Then in your Mapping you can map the
- LCD_X_BACK_COLOR keys (where X is 1 to 8) as a color or actions that return some color and VDJ will try to match it to the nearest available one.
E.g. color 'blue'
- LCD_X_INVERT_UPPER and LCD_X_INVERT_LOWER to false/true, not sure what they do actually.
- LCD_X_TEXT_LOWER|UPPER to whatever action it returns a text.. e.g get_text "TEST" or get_effect_name 1 etc
 

Inviato Thu 12 Sep 24 @ 9:48 am
Invert probably flips the LCD colours between "night mode" (dark background/light text) and "day mode" (light background/dark text).
 

Inviato Thu 12 Sep 24 @ 10:18 am
I mapped the encoders leds to rotate like a platter when the deck is running:
<bar name="LED_ENC1" cc="80" fill="no" channel="0" />
<map value="LED_ENC1" action="deck 1 jogwheel" />


Haven't looked at the LCD displays yet.
For MIDI My definition file is finished and doing some final things on the mapping file.
Is there a way I can post them here?

I have 2 issues left:
I mapped the faders to the level:
<slider name="SLIDER1" cc="70" channel="0" />
<map value="SLIDER1" action="deck 1 level" />


And the motors of the faders as a bar:
<bar name="MOT_SLIDER1" cc="70" channel="0" />

When VDJ starts the deck levels are 100% and my faders are 0%. Is it possible to use 'ONINIT' to match the motorized faders with the level when VDJ starts?

And the VU meters only shows only the top led. The leds below don't light up.
<bar name="LED_VU1" cc="90" fill="yes" channel="0" />
<map value="LED_VU1" action="deck 1 get_level" />
 

Inviato Mon 16 Sep 24 @ 3:40 pm
djdad wrote :
Ok, here is something you can try...
Add the following to your definition

<text sysex="F0002032424C000000000000000000000000000000F7">
<digit name="LCD_1_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_1_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_1_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_1_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_1_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C010000000000000000000000000000F7">
<digit name="LCD_2_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_2_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_2_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_2_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_2_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C020000000000000000000000000000F7">
<digit name="LCD_3_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_3_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_3_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_3_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_3_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C030000000000000000000000000000F7">
<digit name="LCD_4_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_4_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_4_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_4_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_4_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C040000000000000000000000000000F7">
<digit name="LCD_5_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_5_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_5_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_5_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_5_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C050000000000000000000000000000F7">
<digit name="LCD_6_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_6_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_6_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_6_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_6_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C060000000000000000000000000000F7">
<digit name="LCD_7_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_7_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_7_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_7_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_7_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C070000000000000000000000000000F7">
<digit name="LCD_8_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_8_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_8_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_8_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_8_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>


Then in your Mapping you can map the
- LCD_X_BACK_COLOR keys (where X is 1 to 8) as a color or actions that return some color and VDJ will try to match it to the nearest available one.
E.g. color 'blue'
- LCD_X_INVERT_UPPER and LCD_X_INVERT_LOWER to false/true, not sure what they do actually.
- LCD_X_TEXT_LOWER|UPPER to whatever action it returns a text.. e.g get_text "TEST" or get_effect_name 1 etc


Hello DJDAD,
I've tested this sysex but it isn't working. Have you tested it on an Xtouch Extender?
sysex is new to me but I think there is an error in the size, offset of offsetbit...

When starting VDJ midimonitor recieves this:
20:05 52:836 IAC-besturingsbestand Bus 1 System Exclusive F0 00 20 7F 03 01 F7
20:05 52:836 IAC-besturingsbestand Bus 1 System Exclusive F0 7E 00 06 01 F7
20:05 52:833 IAC-besturingsbestand Bus 1 System Exclusive F0 7E 7F 06 01 F7
 

Inviato Mon 16 Sep 24 @ 6:11 pm
djdadPRO InfinityDevelopment ManagerMember since 2005
So, you added the above to your definition ?
Can you share both your definition and mapping ?

There is a chance the bits numbering of the manual are inverted, so try to change all the offsetbit="x" of the all 7 keys (keep the X numbering) as following ..
<digit name="LCD_X_BACK_COLOR" .... offsetbit="4" ... />
<digit name="LCD_X_INVERT_UPPER" .... offsetbit="2" ... />
<digit name="LCD_X_INVERT_LOWER" ... ..offsetbit="1" ... />


No, i dont have the device, the above was made based on info from manual
 

Inviato Mon 16 Sep 24 @ 7:12 pm
djdadPRO InfinityDevelopment ManagerMember since 2005
About your other questions ...
Ceeso wrote :
When VDJ starts the deck levels are 100% and my faders are 0%. Is it possible to use 'ONINIT' to match the motorized faders with the level when VDJ starts?

Only if the firmware of the device offers any MIDI Out or SysEx that when received from device , it reports the position of its faders (Dump Request). Don't see any such info in the manual, so you ;; have to ask the manufacture about this.

Ceeso wrote :
And the VU meters only shows only the top led. The leds below don't light up.

Have you tried without fill="yes" ?

BTW, since you have MidiMonitor, you can try to see what the "official" software sends when e.g. App starts (probably it sends some useful SysEx for the Dump request), or a SyeEx example of some LCD Text (and compare with the "expected")

 

Inviato Mon 16 Sep 24 @ 11:23 pm
djdadPRO InfinityDevelopment ManagerMember since 2005
OK, i had an error in the main <text> SysEx (was 1 byte shorter), so this ...


<text sysex="F0002032424C00000000000000000000000000000000F7">
<digit name="LCD_1_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_1_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_1_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_1_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_1_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C01000000000000000000000000000000F7">
<digit name="LCD_2_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_2_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_2_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_2_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_2_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C02000000000000000000000000000000F7">
<digit name="LCD_3_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_3_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_3_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_3_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_3_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C03000000000000000000000000000000F7">
<digit name="LCD_4_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_4_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_4_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_4_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_4_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C04000000000000000000000000000000F7">
<digit name="LCD_5_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_5_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_5_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_5_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_5_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C05000000000000000000000000000000F7">
<digit name="LCD_6_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_6_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_6_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_6_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_6_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C06000000000000000000000000000000F7">
<digit name="LCD_7_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_7_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_7_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_7_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_7_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C07000000000000000000000000000000F7">
<digit name="LCD_8_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_8_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_8_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_8_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_8_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>


and if not working try this ..

<text sysex="F0002032424C00000000000000000000000000000000F7">
<digit name="LCD_1_BACK_COLOR" offset="7" nbbits="3" offsetbit="4" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_1_INVERT_UPPER" offset="7" nbbits="1" offsetbit="2" />
<digit name="LCD_1_INVERT_LOWER" offset="7" nbbits="1" offsetbit="1" />
<sysex name="LCD_1_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_1_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C01000000000000000000000000000000F7">
<digit name="LCD_2_BACK_COLOR" offset="7" nbbits="3" offsetbit="4" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_2_INVERT_UPPER" offset="7" nbbits="1" offsetbit="2" />
<digit name="LCD_2_INVERT_LOWER" offset="7" nbbits="1" offsetbit="1" />
<sysex name="LCD_2_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_2_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C02000000000000000000000000000000F7">
<digit name="LCD_3_BACK_COLOR" offset="7" nbbits="3" offsetbit="4" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_3_INVERT_UPPER" offset="7" nbbits="1" offsetbit="2" />
<digit name="LCD_3_INVERT_LOWER" offset="7" nbbits="1" offsetbit="1" />
<sysex name="LCD_3_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_3_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C03000000000000000000000000000000F7">
<digit name="LCD_4_BACK_COLOR" offset="7" nbbits="3" offsetbit="4" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_4_INVERT_UPPER" offset="7" nbbits="1" offsetbit="2" />
<digit name="LCD_4_INVERT_LOWER" offset="7" nbbits="1" offsetbit="1" />
<sysex name="LCD_4_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_4_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C04000000000000000000000000000000F7">
<digit name="LCD_5_BACK_COLOR" offset="7" nbbits="3" offsetbit="4" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_5_INVERT_UPPER" offset="7" nbbits="1" offsetbit="2" />
<digit name="LCD_5_INVERT_LOWER" offset="7" nbbits="1" offsetbit="1" />
<sysex name="LCD_5_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_5_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C05000000000000000000000000000000F7">
<digit name="LCD_6_BACK_COLOR" offset="7" nbbits="3" offsetbit="4" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_6_INVERT_UPPER" offset="7" nbbits="1" offsetbit="2" />
<digit name="LCD_6_INVERT_LOWER" offset="7" nbbits="1" offsetbit="1" />
<sysex name="LCD_6_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_6_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C06000000000000000000000000000000F7">
<digit name="LCD_7_BACK_COLOR" offset="7" nbbits="3" offsetbit="4" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_7_INVERT_UPPER" offset="7" nbbits="1" offsetbit="1" />
<digit name="LCD_7_INVERT_LOWER" offset="7" nbbits="1" offsetbit="1" />
<sysex name="LCD_7_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_7_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032424C07000000000000000000000000000000F7">
<digit name="LCD_8_BACK_COLOR" offset="7" nbbits="3" offsetbit="4" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_8_INVERT_UPPER" offset="7" nbbits="1" offsetbit="2" />
<digit name="LCD_8_INVERT_LOWER" offset="7" nbbits="1" offsetbit="1" />
<sysex name="LCD_8_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_8_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

 

Inviato Mon 16 Sep 24 @ 11:50 pm
I've tried both options but nothing comes to life on the LCDs.

So I thought it might be a good idea to test some SysEx commands thru MIDI-OX. But also here nothing happens...

Looks like the data is truncated, can that be a problem?

I'm not sure which values are required at 'LCD number': 00, 01, 02, 03, 04, 05, 06, 07?
And for the backlight color/invertion also no clue.

Maybe you can help with providing some SysEx test commands I can send thru MIDI-OX?

 

Inviato Wed 18 Sep 24 @ 12:53 pm
djdadPRO InfinityDevelopment ManagerMember since 2005
Did you map the _TEXT_UPPER|LOWER keys in VirtualDJ Mapping ?

With the SysEx you sent its normal that you didnt get any Text, because the Text bytes were 00s.

About the structure, did you see the picture i posted from the manual ?

F0 00 20 32 42 4C xx dd UU UU UU UU UU UU UU LL LL LL LL LL LL LL F7
xx = 00 (1st LCD) to 07 (last one)
dd = various info here, mostly color
UU - Ascii bytes of upper text e.g. text "TEST" to ascii is 84 69 83 84
LL = Ascii bytes of lower text

Try to send ...
F0 00 20 32 42 4C 00 00 84 69 83 84 00 00 00 84 69 83 84 20 20 20 F7 (1st LCD, black color, TEST with 00s as spaces, TEST with 20 as spaces)
F0 00 20 32 42 4C 01 01 84 69 83 84 00 00 00 84 69 83 84 20 20 20 F7 (2nd LCD, red color, TEST, TEST)
F0 00 20 32 42 4C 02 02 84 69 83 84 49 50 51 84 69 83 84 49 50 51 F7 (3rd LCD, green color, TEST123, TEST123)
 

Inviato Wed 18 Sep 24 @ 1:45 pm
Tested all three commands with MIDI-OX and nothing happens...



Maybe the command in the manual is not correct or I'm doing something wrong.
I've reached out to the X-Touch user group to get more information about the SysEx implementation.
 

Inviato Wed 18 Sep 24 @ 2:39 pm
djdadPRO InfinityDevelopment ManagerMember since 2005
True, there could be more to send or some typo in manual.
Hopefully you will get an answer from them.

If not, you could install a USB sniffer like USBlyzer (offers some free Trial period) and while the "official" application is running, to see what data the App sends to the device
 

Inviato Wed 18 Sep 24 @ 2:55 pm
Good news! I found the correct command.
It turns out the device ID in the manual is wrong. When using this I can control color, invert and text on both lines:


I allready have text working in VDJ. Only the color is not correctly in the definition file:


<text sysex="F0002032154C00000000000000000000000000000000F7">
<digit name="LCD_1_BACK_COLOR" offset="7" nbbits="3" offsetbit="4" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_8_INVERT_UPPER" offset="7" nbbits="1" offsetbit="4" />
<digit name="LCD_8_INVERT_LOWER" offset="7" nbbits="1" offsetbit="5" />
<sysex name="LCD_1_TEXT_UPPER" offset="8" size="7" scroll="yes" encoding="ascii" />
<sysex name="LCD_1_TEXT_LOWER" offset="15" size="7" scroll="yes" encoding="ascii" />
</text>


I've tested and 'cc' needs to be like this to get it working:
 

Inviato Wed 18 Sep 24 @ 5:10 pm
djdadPRO InfinityDevelopment ManagerMember since 2005
Should work for most colors already. How is the color key mapped in VDJ ?
color 'red' should work
 

Inviato Wed 18 Sep 24 @ 6:27 pm
djdadPRO InfinityDevelopment ManagerMember since 2005
Just saw that you have offsetbit=4 for the Color key, while it should be 0. (and some typo in naming)

Here is what it should work.

<text sysex="F0002032154C00000000000000000000000000000000F7">
<digit name="LCD_1_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_1_INVERT_UPPER" offset="7" nbbits="1" offsetbit="3" />
<digit name="LCD_1_INVERT_LOWER" offset="7" nbbits="1" offsetbit="4" />
<sysex name="LCD_1_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_1_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032154C01000000000000000000000000000000F7">
<digit name="LCD_2_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_2_INVERT_UPPER" offset="7" nbbits="1" offsetbit="3" />
<digit name="LCD_2_INVERT_LOWER" offset="7" nbbits="1" offsetbit="4" />
<sysex name="LCD_2_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_2_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032154C02000000000000000000000000000000F7">
<digit name="LCD_3_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_3_INVERT_UPPER" offset="7" nbbits="1" offsetbit="3" />
<digit name="LCD_3_INVERT_LOWER" offset="7" nbbits="1" offsetbit="4" />
<sysex name="LCD_3_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_3_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032154C03000000000000000000000000000000F7">
<digit name="LCD_4_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_4_INVERT_UPPER" offset="7" nbbits="1" offsetbit="3" />
<digit name="LCD_4_INVERT_LOWER" offset="7" nbbits="1" offsetbit="4" />
<sysex name="LCD_4_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_4_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032154C04000000000000000000000000000000F7">
<digit name="LCD_5_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_5_INVERT_UPPER" offset="7" nbbits="1" offsetbit="3" />
<digit name="LCD_5_INVERT_LOWER" offset="7" nbbits="1" offsetbit="4" />
<sysex name="LCD_5_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_5_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032154C05000000000000000000000000000000F7">
<digit name="LCD_6_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_6_INVERT_UPPER" offset="7" nbbits="1" offsetbit="3" />
<digit name="LCD_6_INVERT_LOWER" offset="7" nbbits="1" offsetbit="4" />
<sysex name="LCD_6_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_6_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032154C06000000000000000000000000000000F7">
<digit name="LCD_7_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_7_INVERT_UPPER" offset="7" nbbits="1" offsetbit="3" />
<digit name="LCD_7_INVERT_LOWER" offset="7" nbbits="1" offsetbit="4" />
<sysex name="LCD_7_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_7_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>

<text sysex="F0002032154C07000000000000000000000000000000F7">
<digit name="LCD_8_BACK_COLOR" offset="7" nbbits="3" offsetbit="0" iscolor="yes" values="0x00=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white" />
<digit name="LCD_8_INVERT_UPPER" offset="7" nbbits="1" offsetbit="3" />
<digit name="LCD_8_INVERT_LOWER" offset="7" nbbits="1" offsetbit="4" />
<sysex name="LCD_8_TEXT_UPPER" encoding="ascii" offset="8" size="7" scroll="no" />
<sysex name="LCD_8_TEXT_LOWER" encoding="ascii" offset="15" size="7" scroll="no" />
</text>


Colors should work and then you have the _INVERT_ keys to invert the coloring of upper/lower parts (with true/false or actions returning true/false) so you can make them indicating status.
E.g. some Mapping ..
TEXT_UPPER -> get_text 'PLAY'
_COLOR -> color 'green'
_INVERT_UPPER -> play

One thing that i am not sure about is what happens if you send color 'black' (0x00). If not working (no Black color actually) , then you may consider "black" as "Off" and change all the _COLOR keys as ..
nbbits="4" (instead of 3) and put 0x08=black in the values, so have ... values="0x08=black,0x01=red,0x02=green,0x03=yellow,0x04=blue,0x05=magenta,0x06=cyan,0x07=white"


 

Inviato Thu 19 Sep 24 @ 6:02 pm
56%