Quick Sign In:  

Forum: Old versions

Topic: help with definition file for icon istage - Page: 1

This part of topic is old and might contain outdated or incorrect information

If there is one thing I hate more than definition files I havn't yet found it... this is an overview of what I have so far. All the leds receive midi on messages, but the buttons don't work at all, however they do work in simple midi. Any help is appreciated, as I want it for Duen Duen's new slicer effect coming really soon...

<?xml version="1.0" encoding="UTF-8"?>
<device author="synthet1c" decks="2" drivername="iCON iStage V1.03" drivernameout="iCON iStage V1.03" name="iCON iStage V1.03" type="MIDI" >
<button channel="1" deck="1" name="1-1" note="0" />
<button channel="1" deck="2" name="1-1" note="32" />
<button channel="1" deck="1" name="1-2" note="4" />
<button channel="1" deck="2" name="1-2" note="36" />
<led channel="1" deck="1" name="LED 1-1" note="0" />
<led channel="1" deck="2" name="LED 1-1" note="32" />
<led channel="1" deck="1" name="LED 1-2" note="4" />
<led channel="1" deck="2" name="LED 1-2" note="36" />
</device>



I am not sure if it matters whether you use the hex id or not, if it does what should I use to get it?

cheers

Andrew
 

Posted Sun 27 Nov 11 @ 3:46 pm
cstollPRO InfinityMember since 2004
If the device is a single MIDI channel device then drop the channel statements from the defined items.

Also, you will do yourself a big favor by finding the VID and PID information from the Device's Properties -> Details -> Hardware IDs (use the Device Manager) - and add those to the <device> statement.

No you don't need the HEX values, but I find it easier. Also, if you have not downloaded the miditrace application (link in the Wiki in the VDJScript section) then I suggest you download it. It report the buttons, sliders, etc in their HEX values.
 

Posted Sun 27 Nov 11 @ 4:09 pm
it returns as

USB\VID_1D03&PID_002F&REV_0100&MI_00
USB\VID_1D03&PID_002F&MI_00

how should I word it?

vid="VID_1D03" pid="PID_002F"

also I tried midi trace, but nothing was jumping out at me about a hex, it was just showing the note, channel and if it was up or down..

Thanks for your help Chris

EDIT-------------------

still didn't work..

this is what miditrace says for those 4 buttons in the same order

90 00 7F 00
80 00 00 00
90 04 7F 00
80 04 00 00
90 20 7F 00
80 20 00 00
90 24 7F 00
80 24 00 00
 

Posted Sun 27 Nov 11 @ 4:19 pm
cstollPRO InfinityMember since 2004
I know you most likely already know some of this stuff ... but it might help out anyhow...

MIDI notation-

9#/8# < NOTEs (typically interpreted as - [9] = down [8]= up)
B# < Control Change

# is MIDI Channel - 0 thru F (1 to 16 << that is how people talk about them)

Reported in 4 HEX segments

Type and MIDI Channel
Number
Value
Velocity << only used with some types of components

So miditrace is showing those 4 segments all in HEX

So - the first button you pushed --
90 00 7F 00
80 00 00 00

Button is a NOTE on MIDI Channel 0 with the number of 0x00 and a value of 0x7F on down press and 0x00 on up

So translated to VirtualDJ would be:

<button note="0x00" channel="0" value="0x7F" name="BUTTON_1" />

** Now Channel and Value are not necessary as everything is assumed the zero (0) MIDI Channel and for buttons 0x7F is the down value.

*****
VID / PID

You found the right values - and the notation for the <device> statement is always in HEX as well -

Change your statement to the following ...

<device author="synthet1c" vid="0x1D03" pid="0x002F" decks="2" name="iCON iStage V1.03" type="MIDI" >

I think it is pretty self explanatory how it reads :)

USB\VID_1D03&PID_002F&REV_0100&MI_00


***************************

So to redo your starting file ...

<?xml version="1.0" encoding="UTF-8"?>
<device author="synthet1c" name="iCON iStage V1.03" type="MIDI" vid="0x1D03" pid="0x002F" decks="2" >
<button note="0x00" name="BUTTON_1" deck="1" />
<button note="0x04" name="BUTTON_1" deck="2" />
<button note="0x20" name="BUTTON_2" deck="1" />
<button note="0x24" name="BUTTON_2" deck="2" />

<button note="0x00" name="LED_BUTTON_1" default="BUTTON_1" deck="1" />
<button note="0x04" name="LED_BUTTON_1" default="BUTTON_1" deck="2" />
<button note="0x20" name="LED_BUTTON_1" default="BUTTON_2" deck="1" />
<button note="0x24" name="LED_BUTTON_1" default="BUTTON_1" deck="2" />
</device>

 

Posted Sun 27 Nov 11 @ 6:12 pm
I didn't know any of that, thanks for the explination Chris, you should add that info to the wiki for midi definition noobs like me... LOL, now back to defining :D
 

Posted Sun 27 Nov 11 @ 6:53 pm
Well it worked when I copied your bit into the existing definition I made that had the leds working, then I made another following your instrusctions, and guess what... LOL, looks like I need to do a full page post.. vdj wont recognise the device now.. Do i need to assign the MID_BUTTON's to a deck for it to work, maybe deck 3,

EDIT --------------------------------

scratch that, I didn't have an apostraphy on the 12th line..
 

Posted Sun 27 Nov 11 @ 7:28 pm
hi chris, if you get a chance, I have an issue with led signals being repeated for the following values

<led note="0x0F" name="LED_BUTTON_16" default="BUTTON_16" deck="1" />
<led note="0x1E" name="MID_LED_BUTTON_12" default="MID_BUTTON_12" />

mapped as
"LED_BUTTON_16" - play ? on : blink
MID_LED_BUTTON_12 - play ? off : off

miditrace
LED_BUTTON_16
90 0F 7F 00
80 0F 00 00

LED_BUTTON_12
90 1E 7F 00
80 1E 00 00

<led note="0x08" name="LED_BUTTON_3" default="BUTTON_3" deck="1" />
<led note="0x02" name="LED_BUTTON_9" default="BUTTON_9" deck="1" />

miditrace
LED_BUTTON_3
90 08 7F 00
80 08 00 00

LED_BUTTON_9
90 02 7F 00
80 02 00 00

mapped as
LED_BUTTON_1 - get beat_num 1 16 ? on : get beat_num 9 16 ? on : off
LED_BUTTON_9 - get beat_num 3 16 ? on :get beat_num 11 16 ? on : off

they respond to the linked mapping as well as their own. the others below also have similar mapping and the same problems..

<led note="0x0D" name="LED_BUTTON_8" default="BUTTON_8" deck="1" />
<led note="0x16" name="MID_LED_BUTTON_10" default="MID_BUTTON_10" />

<led note="0x0C" name="LED_BUTTON_4" default="BUTTON_4" deck="1" />
<led note="0x12" name="MID_LED_BUTTON_9" default="MID_BUTTON_9" />

I have checked all the hex values in midi trace, then input them in chackl's plugin to enable the leds, and they are all correct, and respond as they should.. but all the deck 2 leds are the same and work correctly, and all I did for those is copy deck 1's text and replace 0x0 for 0x2 as they were all the same but 2 octaves or whatever higher... have you got any ideas ?

Also I have tested it on four different computers and OS's, netbook(win 7 starter), laptop (win 7 ultimate), desktop (xp), tablet (win 7 home premium), all 32bit, all have the same result...

Thanks again..

 

Posted Mon 28 Nov 11 @ 4:02 am
just tried deleting the whole middle section from the definition, but it still does the same thing with the leds..
 

Posted Mon 28 Nov 11 @ 5:33 am
I thought I should make a video of the problem, so you can get an idea of what it is doing..

the video is going through two different led modes, the right side works as it should but the left is messed up, again the leds work fine with chackl\'s plugin when triggering their hex id, just not with vdj.

any ideas



this is an image of what I am after

 

Posted Tue 29 Nov 11 @ 3:16 pm
This is my last attempt before I lose the enthusiasm to complete this mapper, as I have contacted icon but yet to receive a reply... This is everything, the hex id's it used and the definition file text. Is there any other information I can add to the <device header> to improve vdj's ability to send the right message to the leds? the mapper is very comprehensive but will rely on led feedback to be used correctly with VDJ...



<?xml version="1.0" encoding="UTF-8"?>
<device author="synthet1c" name="iCON iStage V1.03" type="MIDI" vid="0x1D03" pid="0x002F" drivername="iCON iStage V1.03" drivernameout="iCON iStage V1.03" decks="2" >
<button note="0x00" name="BUTTON_1" deck="1" />
<button note="0x04" name="BUTTON_2" deck="1" />
<button note="0x08" name="BUTTON_3" deck="1" />
<button note="0x0C" name="BUTTON_4" deck="1" />
<button note="0x01" name="BUTTON_5" deck="1" />
<button note="0x05" name="BUTTON_6" deck="1" />
<button note="0x09" name="BUTTON_7" deck="1" />
<button note="0x0D" name="BUTTON_8" deck="1" />
<button note="0x02" name="BUTTON_9" deck="1" />
<button note="0x06" name="BUTTON_10" deck="1" />
<button note="0x0A" name="BUTTON_11" deck="1" />
<button note="0x0E" name="BUTTON_12" deck="1" />
<button note="0x03" name="BUTTON_13" deck="1" />
<button note="0x07" name="BUTTON_14" deck="1" />
<button note="0x0B" name="BUTTON_15" deck="1" />
<button note="0x0F" name="BUTTON_16" deck="1" />
<button note="0x20" name="BUTTON_1" deck="2" />
<button note="0x24" name="BUTTON_2" deck="2" />
<button note="0x28" name="BUTTON_3" deck="2" />
<button note="0x2C" name="BUTTON_4" deck="2" />
<button note="0x21" name="BUTTON_5" deck="2" />
<button note="0x25" name="BUTTON_6" deck="2" />
<button note="0x29" name="BUTTON_7" deck="2" />
<button note="0x2D" name="BUTTON_8" deck="2" />
<button note="0x22" name="BUTTON_9" deck="2" />
<button note="0x26" name="BUTTON_10" deck="2" />
<button note="0x2A" name="BUTTON_11" deck="2" />
<button note="0x2E" name="BUTTON_12" deck="2" />
<button note="0x23" name="BUTTON_13" deck="2" />
<button note="0x27" name="BUTTON_14" deck="2" />
<button note="0x2B" name="BUTTON_15" deck="2" />
<button note="0x2F" name="BUTTON_16" deck="2" />
<button note="0x10" name="MID_BUTTON_1" deck="1" />
<button note="0x14" name="MID_BUTTON_2" deck="1" />
<button note="0x18" name="MID_BUTTON_1" deck="2" />
<button note="0x1C" name="MID_BUTTON_2" deck="2" />
<button note="0x11" name="MID_BUTTON_3" deck="1" />
<button note="0x15" name="MID_BUTTON_4" deck="1" />
<button note="0x19" name="MID_BUTTON_3" deck="2" />
<button note="0x1D" name="MID_BUTTON_4" deck="2" />
<button note="0x12" name="MID_BUTTON_5" deck="1" />
<button note="0x16" name="MID_BUTTON_6" deck="1" />
<button note="0x1A" name="MID_BUTTON_5" deck="2" />
<button note="0x1E" name="MID_BUTTON_6" deck="2" />
<button note="0x13" name="MID_BUTTON_7" deck="1" />
<button note="0x17" name="MID_BUTTON_8" deck="1"/>
<button note="0x1B" name="MID_BUTTON_7" deck="2" />
<button note="0x1F" name="MID_BUTTON_8" deck="2" />

<button note="0x58" name="BOTTOM_BUTTON_1" deck="1" />
<button note="0x50" name="BOTTOM_BUTTON_2" deck="1" />
<button note="0x5A" name="BOTTOM_BUTTON_3" deck="1" />
<button note="0x5B" name="BOTTOM_BUTTON_4" deck="1" />
<button note="0x5C" name="BOTTOM_BUTTON_5" deck="1" />
<button note="0x5D" name="BOTTOM_BUTTON_6" deck="1" />

<button note="0x5E" name="BOTTOM_BUTTON_1" deck="2" />
<button note="0x5F" name="BOTTOM_BUTTON_2" deck="2" />
<button note="0x60" name="BOTTOM_BUTTON_3" deck="2" />
<button note="0x61" name="BOTTOM_BUTTON_4" deck="2" />
<button note="0x62" name="BOTTOM_BUTTON_5" deck="2" />
<button note="0x63" name="BOTTOM_BUTTON_6" deck="2" />

<button note="0x64" name="BOTTOM_BUTTON_MASTER" />

<button note="0x57" name="SIDE_BUTTON_4" />
<button note="0x56" name="SIDE_BUTTON_3" />
<button note="0x55" name="SIDE_BUTTON_2" />
<button note="0x54" name="SIDE_BUTTON_1" />

<slider cc="7" channel="13" name="HEADPHONE CROSSFADER" />

<button note="0x74" name="ENCODER-" />
<button note="0x75" name="ENCODER+" />

<slider cc="40" channel="0" deck="1" name="slider 1" />
<slider cc="40" channel="1" deck="1" name="slider 2" />
<slider cc="40" channel="2" deck="1" name="slider 3" />
<slider cc="40" channel="3" deck="1" name="slider 4" />
<slider cc="40" channel="4" deck="1" name="slider 5" />
<slider cc="40" channel="5" deck="1" name="slider 6" />
<slider cc="40" channel="6" deck="2" name="slider 1" />
<slider cc="40" channel="7" deck="2" name="slider 2" />
<slider cc="40" channel="8" deck="2" name="slider 3" />
<slider cc="40" channel="9" deck="2" name="slider 4" />
<slider cc="40" channel="10" deck="2" name="slider 5" />
<slider cc="40" channel="11" deck="2" name="slider 6" />
<slider cc="41" channel="0" deck="1" name="slider 7" />
<slider cc="41" channel="1" deck="1" name="slider 8" />
<slider cc="41" channel="2" deck="1" name="slider 9" />
<slider cc="41" channel="3" deck="1" name="slider 10" />
<slider cc="41" channel="4" deck="1" name="slider 11" />
<slider cc="41" channel="5" deck="1" name="slider 12" />
<slider cc="41" channel="6" deck="2" name="slider 7" />
<slider cc="41" channel="7" deck="2" name="slider 8" />
<slider cc="41" channel="8" deck="2" name="slider 9" />
<slider cc="41" channel="9" deck="2" name="slider 10" />
<slider cc="41" channel="10" deck="2" name="slider 11" />
<slider cc="41" channel="11" deck="2" name="slider 12" />



<led note="0x00" name="LED_BUTTON_1" default="BUTTON_1" deck="1" />
<led note="0x04" name="LED_BUTTON_2" default="BUTTON_2" deck="1" />
<led note="0x08" name="LED_BUTTON_3" default="BUTTON_3" deck="1" />
<led note="0x0C" name="LED_BUTTON_4" default="BUTTON_4" deck="1" />
<led note="0x01" name="LED_BUTTON_5" default="BUTTON_5" deck="1" />
<led note="0x05" name="LED_BUTTON_6" default="BUTTON_6" deck="1" />
<led note="0x09" name="LED_BUTTON_7" default="BUTTON_7" deck="1" />
<led note="0x0D" name="LED_BUTTON_8" default="BUTTON_8" deck="1" />
<led note="0x02" name="LED_BUTTON_9" default="BUTTON_9" deck="1" />
<led note="0x06" name="LED_BUTTON_10" default="BUTTON_10" deck="1" />
<led note="0x0A" name="LED_BUTTON_11" default="BUTTON_11" deck="1" />
<led note="0x0E" name="LED_BUTTON_12" default="BUTTON_12" deck="1" />
<led note="0x03" name="LED_BUTTON_13" default="BUTTON_13" deck="1" />
<led note="0x07" name="LED_BUTTON_14" default="BUTTON_14" deck="1" />
<led note="0x0B" name="LED_BUTTON_15" default="BUTTON_15" deck="1" />
<led note="0x0F" name="LED_BUTTON_16" default="BUTTON_16" deck="1" />
<led note="0x20" name="LED_BUTTON_1" default="BUTTON_1" deck="2" />
<led note="0x24" name="LED_BUTTON_2" default="BUTTON_2" deck="2" />
<led note="0x28" name="LED_BUTTON_3" default="BUTTON_3" deck="2" />
<led note="0x2C" name="LED_BUTTON_4" default="BUTTON_4" deck="2" />
<led note="0x21" name="LED_BUTTON_5" default="BUTTON_5" deck="2" />
<led note="0x25" name="LED_BUTTON_6" default="BUTTON_6" deck="2" />
<led note="0x29" name="LED_BUTTON_7" default="BUTTON_7" deck="2" />
<led note="0x2D" name="LED_BUTTON_8" default="BUTTON_8" deck="2" />
<led note="0x22" name="LED_BUTTON_9" default="BUTTON_9" deck="2" />
<led note="0x26" name="LED_BUTTON_10" default="BUTTON_10" deck="2" />
<led note="0x2A" name="LED_BUTTON_11" default="BUTTON_11" deck="2" />
<led note="0x2E" name="LED_BUTTON_12" default="BUTTON_12" deck="2" />
<led note="0x23" name="LED_BUTTON_13" default="BUTTON_13" deck="2" />
<led note="0x27" name="LED_BUTTON_14" default="BUTTON_14" deck="2" />
<led note="0x2B" name="LED_BUTTON_15" default="BUTTON_15" deck="2" />
<led note="0x2F" name="LED_BUTTON_16" default="BUTTON_16" deck="2" />
<led note="0x10" name="MID_LED_BUTTON_1" default="MID_BUTTON_1" deck="1" />
<led note="0x14" name="MID_LED_BUTTON_2" default="MID_BUTTON_2" deck="1" />
<led note="0x18" name="MID_LED_BUTTON_1" default="MID_BUTTON_1" deck="2" />
<led note="0x1C" name="MID_LED_BUTTON_2" default="MID_BUTTON_2" deck="2" />
<led note="0x11" name="MID_LED_BUTTON_3" default="MID_BUTTON_3" deck="1" />
<led note="0x15" name="MID_LED_BUTTON_4" default="MID_BUTTON_4" deck="1" />
<led note="0x19" name="MID_LED_BUTTON_3" default="MID_BUTTON_3" deck="2" />
<led note="0x1D" name="MID_LED_BUTTON_4" default="MID_BUTTON_4" deck="2" />
<led note="0x12" name="MID_LED_BUTTON_5" default="MID_BUTTON_5" deck="1" />
<led note="0x16" name="MID_LED_BUTTON_6" default="MID_BUTTON_6" deck="1" />
<led note="0x1A" name="MID_LED_BUTTON_5" default="MID_BUTTON_5" deck="2" />
<led note="0x1E" name="MID_LED_BUTTON_6" default="MID_BUTTON_6" deck="2" />
<led note="0x13" name="MID_LED_BUTTON_7" default="MID_BUTTON_7" deck="1" />
<led note="0x17" name="MID_LED_BUTTON_8" default="MID_BUTTON_8" deck="1" />
<led note="0x1B" name="MID_LED_BUTTON_7" default="MID_BUTTON_7" deck="2" />
<led note="0x1F" name="MID_LED_BUTTON_8" default="MID_BUTTON_8" deck="2" />
</device>
 

Posted Fri 02 Dec 11 @ 12:14 pm
cstollPRO InfinityMember since 2004
First -- I think you have over complicated some things by my suggestion. I understand what you are trying to do ... but here are some things you should consider -

Use more defining names for the buttons. I only suggested BUTTON_# as an example.
Because this is a single unit - do not LOCK buttons to specific decks - handle that in the mapping instead.

I am going to modify your definition file above and email the change to you ... then reapply your mappings to the new definition and see what happens. FYI, I will be modifying the name="" elements and removing the deck="" references.

 

Posted Sat 03 Dec 11 @ 1:41 pm
the mapping is quite long in some places and wont fit if I need to designate "deck #" I'll give it a try, although, mainly it is the encoder that will not fit, as I have the undermix crossfader code attached to each direction which is 33 lines of code each, that is why it is seperated as buttons...

thanks for looking again
 

Posted Sat 03 Dec 11 @ 1:47 pm
do you mean name it like this?

 

Posted Sat 03 Dec 11 @ 2:00 pm
cstollPRO InfinityMember since 2004
Check your PM ...
 

Posted Sat 03 Dec 11 @ 2:04 pm
Hello,

I have same problem.. please help!

just have no ideas for it..

Thank you
 

Posted Sat 10 Dec 11 @ 6:22 am
I just want to voice my appreciation for the effort cstoll has put into this thread. His good advice helped me map an entirely different controller. One of the most useful resources out there for figuring out proper definition files. Thanks!
 

Posted Sat 31 Dec 11 @ 9:56 am
taitgeordie wrote :
His good advice helped me map an entirely different controller. One of the most useful resources out there for figuring out proper definition files. Thanks!


Definition files, is instantly given by another program that do queries the binaries and addresses of each buttons like midi trace, midi hunter and many other programs, so as i could see it, there is no big worries in it as there are other programs that could do it for you. Some programs out there have more defined addresses not like midi trace you have to analyzed deeply the values and assignments of each values. In some other programs it will give you directly defined values like channels and even the CC value of the encoder or slider and even leds values. Worries comes in the difficult parts is the scripting in which you have to let 100% your brains works if you don't it is much more difficult in mapping because scripting you yourself will have to learn the language, verb, parameters, syntax composition and many others in programming. Just a thoughts thanks.


 

Posted Sun 01 Jan 12 @ 5:41 am
pailloHome userMember since 2012
What's up with the mapping?

I'm trying to get how the iStage works (then I will try to map it) but it seems impossible to control easily. What I mean is I can't find a way to access LED values, buttons... like on a Novation Launchpad/Livid Ohm 64...
For instance the iStage will never send velocity values unless it's in Drummer mode, but in this mode it's impossible to control LEDs. It seems to me like the behaviour of the iStage (and what it's able to receive/send in a particular mode) is written in its firmware and it's not possible to modify, like there is no 'blank' mode to begin with. Am I wrong?

@ synthet1c :
On the video you seem in DJ mode. Are you able to turn off a LED in this mode? It seems like once a LED has been turned on, one can only switch between colors and set LED to blink or not.
I haven't been able to do so, so far the only solution is to unplug/plug the iStage to erase LEDs that have been turned on at least once.
 

Posted Fri 20 Jan 12 @ 9:44 am
you need to put it into traktor mode, then you have control over the red leds only, It's locked into the firmware that way. I have tried to contact support in the USA 4 times with very detailed enquiries and did not receive a reply, they are a terrible company, I will never buy another icon product due to their lack of support.

EDIT***************************************

in dj mode you can turn the red led on and off, but there are repeat messages for some of the led signals on my unit.
 

Posted Fri 20 Jan 12 @ 9:53 am
pailloHome userMember since 2012
Thank you, sadly that's what I thought.

That's really weird of them because there is no risk in doing so, releasing a blank template can only turn the iStage into a versatile controller with its velocity pads. I guess it's doable to figure things out by deassembling the thing and see the electronic stuff on board, but I don't have the strenght ^^
 

Posted Fri 20 Jan 12 @ 9:58 am
87%