I'm currently building a definition file for a AKAI APC20 and all of the buttons, sliders and knob work like they should however I'm having an issue making the LED's stay on after pressed. The only way that the LED will stay on is if I set them to blink during an action but I'd like a solid color on some buttons when both the action is active and when it's not. I've tried min/max values and zero"" with no luck. Here is a line from 1 button
<button note="53" channel="0" name="BUTTON 1-1" deck="" />
<led note="53" channel="0" name="LED BUTTON 1-1 G" value="1" deck="" />
<led note="53" channel="0" name="LED BUTTON 1-1 Y" value="5" deck="" />
<led note="53" channel="0" name="LED BUTTON 1-1 R" value="3" deck="" />
What I'm I missing here?
<button note="53" channel="0" name="BUTTON 1-1" deck="" />
<led note="53" channel="0" name="LED BUTTON 1-1 G" value="1" deck="" />
<led note="53" channel="0" name="LED BUTTON 1-1 Y" value="5" deck="" />
<led note="53" channel="0" name="LED BUTTON 1-1 R" value="3" deck="" />
What I'm I missing here?
Inviato Wed 11 Jan 17 @ 2:50 pm
Reason is because if e.g you want red color, VDJ sends value 3, but at the same time it turns off the other 2, sending 0.
Try ..
and then in mapping something like..
Try ..
<color note="53" channel="0" name="LED BUTTON 1-1" deck="1" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
and then in mapping something like..
play ? color 'green' : color 'red'
Inviato Thu 12 Jan 17 @ 5:00 am
Thank you for the response djdad that got me closer to the solution unfortunately the led is still turning off when pressed not like on my APC40 which works perfectly. So I've mapped a button 'goto_cue 1 & play_pause' and the led 'has_cue 1 ? color "green" : color "black"' but when I press the button the led will go off and stay off.
Inviato Thu 12 Jan 17 @ 9:42 am
Hmm this reminds me the APC40 case where a specific sysex value needs to be sent in order LEDs to be controlled by the software (aka Ableton mode) and not by the Hardware.
Unfortunately , there is no documentation for the APC20 , so we are kind in blind here.
The APC40 requires this sysex to be sent ... (from the definition)
<init sendsysex="F047007360000442010101F7" />
but its definitely not going to work as its probably related to the SYSEX of the unit.
Do this please..
Use Miditrace http://www.virtualdj.com/download/miditrace.exe
When opened, select the APC20 from both the right-bottom and right-top lists.
Click on the Send button at the top.
The unit will probably reply with a large sysex ID.
Compare it with the sysex that the APC40 sends (F07E??060247730019??????????????????????????????????????????????????F7 - ignore the ?? bytes) and change a couple of bytes...
..so something like this may work ..
<init sendsysex="F047007360000442010101F7" /> but the 73 byte (and maybe another one e.g. the ones after the 73) will need to be changed
EDIT
the 73 is coming also from the PID of the APC40 unit , (pid=0x073) so if for example the PID of the APC20 is pid=0x070,, the line in the definition may need to be..
<init sendsysex="F047007060000442010101F7" />
PS. Please post here the first line of the definition (the one with the Hardware Identifiers), plus a couple of lines for the LEDs, to check just in case there is a typo or missed something.
Unfortunately , there is no documentation for the APC20 , so we are kind in blind here.
The APC40 requires this sysex to be sent ... (from the definition)
<init sendsysex="F047007360000442010101F7" />
but its definitely not going to work as its probably related to the SYSEX of the unit.
Do this please..
Use Miditrace http://www.virtualdj.com/download/miditrace.exe
When opened, select the APC20 from both the right-bottom and right-top lists.
Click on the Send button at the top.
The unit will probably reply with a large sysex ID.
Compare it with the sysex that the APC40 sends (F07E??060247730019??????????????????????????????????????????????????F7 - ignore the ?? bytes) and change a couple of bytes...
..so something like this may work ..
<init sendsysex="F047007360000442010101F7" /> but the 73 byte (and maybe another one e.g. the ones after the 73) will need to be changed
EDIT
the 73 is coming also from the PID of the APC40 unit , (pid=0x073) so if for example the PID of the APC20 is pid=0x070,, the line in the definition may need to be..
<init sendsysex="F047007060000442010101F7" />
PS. Please post here the first line of the definition (the one with the Hardware Identifiers), plus a couple of lines for the LEDs, to check just in case there is a typo or missed something.
Inviato Thu 12 Jan 17 @ 7:43 pm
I found this in a forum
So indeed there is an "Ableton/Alternative mode". The above is probably a workaround, but if you manage to find the sysex that is required to be sent, there will be no need to open Ableton prior opening VirtualDJ.
Quote :
To have full control of the LEDs it is necessary to set your APC20 into „Ableton Alternative Mode“, more commonly known as „DUMB MODE“. In order to acces this mode you have to turn your APC20 on, open Ableton Live (or a demo of it) and close it.
You are in DUMB Mode when no button on the APC is lit up.
You are in DUMB Mode when no button on the APC is lit up.
So indeed there is an "Ableton/Alternative mode". The above is probably a workaround, but if you manage to find the sysex that is required to be sent, there will be no need to open Ableton prior opening VirtualDJ.
Inviato Thu 12 Jan 17 @ 7:58 pm
Progress! Ok now the leds come on properly with LEDS = "play ? color 'green' : color 'red'" BUTTON = 'play_pause' if the deck is started from something else besides that button. If I use the button to play/pause the deck the leds go off and stay off.
<?xml version="1.0" encoding="UTF-8"?>
<device name="AKAIAPC20" author="MACK" type="MIDI" decks="2" >
<init sysexid="F047007B60000442010101F7" />
<button note="53" channel="0" name="BUTTON 1-1" deck="" />
<led note="53" channel="0" name="LED BUTTON 1-1 G" value="1" deck="" />
<led note="53" channel="0" name="LED BUTTON 1-1 Y" value="5" deck="" />
<led note="53" channel="0" name="LED BUTTON 1-1 R" value="3" deck="" />
<color note="53" channel="0" name="LED BUTTON 1-1" deck="" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
<button note="54" channel="0" name="BUTTON 1-2" deck="" />
<led note="54" channel="0" name="LED BUTTON 1-2 G" value="1" deck="" />
<led note="54" channel="0" name="LED BUTTON 1-2 Y" value="5" deck="" />
<led note="54" channel="0" name="LED BUTTON 1-2 R" value="3" deck="" />
<color note="54" channel="0" name="LED BUTTON 1-2" deck="" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
<button note="55" channel="0" name="BUTTON 1-3" deck="" />
<led note="55" channel="0" name="LED BUTTON 1-3 G" value="1" deck="" />
<led note="55" channel="0" name="LED BUTTON 1-3 Y" value="5" deck="" />
<led note="55" channel="0" name="LED BUTTON 1-3 R" value="3" deck="" />
<color note="55" channel="0" name="LED BUTTON 1-3" deck="" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
<button note="56" channel="0" name="BUTTON 1-4" deck="" />
<led note="56" channel="0" name="LED BUTTON 1-4 G" value="1" deck="" />
<led note="56" channel="0" name="LED BUTTON 1-4 Y" value="5" deck="" />
<led note="56" channel="0" name="LED BUTTON 1-4 R" value="3" deck="" />
<color note="56" channel="0" name="LED BUTTON 1-4" deck="" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
<button note="57" channel="0" name="BUTTON 1-5" deck="" />
<led note="57" channel="0" name="LED BUTTON 1-5 G" value="1" deck="" />
<led note="57" channel="0" name="LED BUTTON 1-5 Y" value="5" deck="" />
<led note="57" channel="0" name="LED BUTTON 1-5 R" value="3" deck="" />
<color note="57" channel="0" name="LED BUTTON 1-5" deck="" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
<button note="52" channel="0" name="BUTTON 1-6" deck="" />
<led note="52" channel="0" name="LED BUTTON 1-6 G" value="1" deck="" />
<led note="52" channel="0" name="LED BUTTON 1-6 Y" value="5" deck="" />
<led note="52" channel="0" name="LED BUTTON 1-6 R" value="3" deck="" />
<color note="52" channel="0" name="LED BUTTON 1-6" deck="" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
I kept the other lines that identify the other colors separately that I had before this post because I have numerous mapper files that are assigned with those values/identifiers.
<?xml version="1.0" encoding="UTF-8"?>
<device name="AKAIAPC20" author="MACK" type="MIDI" decks="2" >
<init sysexid="F047007B60000442010101F7" />
<button note="53" channel="0" name="BUTTON 1-1" deck="" />
<led note="53" channel="0" name="LED BUTTON 1-1 G" value="1" deck="" />
<led note="53" channel="0" name="LED BUTTON 1-1 Y" value="5" deck="" />
<led note="53" channel="0" name="LED BUTTON 1-1 R" value="3" deck="" />
<color note="53" channel="0" name="LED BUTTON 1-1" deck="" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
<button note="54" channel="0" name="BUTTON 1-2" deck="" />
<led note="54" channel="0" name="LED BUTTON 1-2 G" value="1" deck="" />
<led note="54" channel="0" name="LED BUTTON 1-2 Y" value="5" deck="" />
<led note="54" channel="0" name="LED BUTTON 1-2 R" value="3" deck="" />
<color note="54" channel="0" name="LED BUTTON 1-2" deck="" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
<button note="55" channel="0" name="BUTTON 1-3" deck="" />
<led note="55" channel="0" name="LED BUTTON 1-3 G" value="1" deck="" />
<led note="55" channel="0" name="LED BUTTON 1-3 Y" value="5" deck="" />
<led note="55" channel="0" name="LED BUTTON 1-3 R" value="3" deck="" />
<color note="55" channel="0" name="LED BUTTON 1-3" deck="" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
<button note="56" channel="0" name="BUTTON 1-4" deck="" />
<led note="56" channel="0" name="LED BUTTON 1-4 G" value="1" deck="" />
<led note="56" channel="0" name="LED BUTTON 1-4 Y" value="5" deck="" />
<led note="56" channel="0" name="LED BUTTON 1-4 R" value="3" deck="" />
<color note="56" channel="0" name="LED BUTTON 1-4" deck="" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
<button note="57" channel="0" name="BUTTON 1-5" deck="" />
<led note="57" channel="0" name="LED BUTTON 1-5 G" value="1" deck="" />
<led note="57" channel="0" name="LED BUTTON 1-5 Y" value="5" deck="" />
<led note="57" channel="0" name="LED BUTTON 1-5 R" value="3" deck="" />
<color note="57" channel="0" name="LED BUTTON 1-5" deck="" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
<button note="52" channel="0" name="BUTTON 1-6" deck="" />
<led note="52" channel="0" name="LED BUTTON 1-6 G" value="1" deck="" />
<led note="52" channel="0" name="LED BUTTON 1-6 Y" value="5" deck="" />
<led note="52" channel="0" name="LED BUTTON 1-6 R" value="3" deck="" />
<color note="52" channel="0" name="LED BUTTON 1-6" deck="" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
I kept the other lines that identify the other colors separately that I had before this post because I have numerous mapper files that are assigned with those values/identifiers.
Inviato Thu 12 Jan 17 @ 8:34 pm
To make sure the unit will be detected properly all times and in all computer (in case you need to share that later), you will need to add vid/pid to the <device> line.
So ..
<device name="AKAIAPC20" author="MACK" description="AKAI APC20" type="MIDI" vid="0x09E8" pid="0x007B" decks="2" >
For the LEDs..
- The fact that you still have the additional lines for the separate colors for the LEds, could be the reason of miss-behavior. Have you tried to remove those and try again ?
- Are you sure its channel="0" for all the LEDs/buttons above ?
Also, If you dont intent to use the deck="x" from definition then better remove the deck="" from all lines. Not sure how this can impact functionality, but i would get rid of them.
EDIT. There is a chance that a slightly different sysex may need to be sent. There is something to do to make sure its the right one. Will post details a bit later.
So ..
<device name="AKAIAPC20" author="MACK" description="AKAI APC20" type="MIDI" vid="0x09E8" pid="0x007B" decks="2" >
For the LEDs..
- The fact that you still have the additional lines for the separate colors for the LEds, could be the reason of miss-behavior. Have you tried to remove those and try again ?
- Are you sure its channel="0" for all the LEDs/buttons above ?
Also, If you dont intent to use the deck="x" from definition then better remove the deck="" from all lines. Not sure how this can impact functionality, but i would get rid of them.
EDIT. There is a chance that a slightly different sysex may need to be sent. There is something to do to make sure its the right one. Will post details a bit later.
Inviato Thu 12 Jan 17 @ 8:46 pm
In order to make sure that the sent sysex is the correct one (and see/get other valuable info as well), i would suggest to use an additional application, if you have some basic comp/Midi knowledge.
The application is called USBlyzer and offers a 30 days of trial. http://www.usblyzer.com/download.htm
Important ! After installation, restart your computer.
When USBlyzer is opened, scroll through the left-side list and check (select) the AKAI APC20 device.
Then from the top choose "Start Capture"
Open Ableton (any version that supports the unit)
You will then see data listed on the right side.
Notice the hex values (data) sent from Ableton when the unit initializes and other data sent each time a button is pressed.
I am sure a sysex will be there, almost at the beginning (the one we are looking for) and you may notice several other useful things there.
PS. For sysex, you may find that some additional 04/05/07 are added from USBlyzer every 4 bytes that need to be filtered out. If you have any issues or questions, paste here the data to help you out with.
The application is called USBlyzer and offers a 30 days of trial. http://www.usblyzer.com/download.htm
Important ! After installation, restart your computer.
When USBlyzer is opened, scroll through the left-side list and check (select) the AKAI APC20 device.
Then from the top choose "Start Capture"
Open Ableton (any version that supports the unit)
You will then see data listed on the right side.
Notice the hex values (data) sent from Ableton when the unit initializes and other data sent each time a button is pressed.
I am sure a sysex will be there, almost at the beginning (the one we are looking for) and you may notice several other useful things there.
PS. For sysex, you may find that some additional 04/05/07 are added from USBlyzer every 4 bytes that need to be filtered out. If you have any issues or questions, paste here the data to help you out with.
Inviato Thu 12 Jan 17 @ 8:58 pm
Will do. After cleaning up the definition file here is what I have
<?xml version="1.0" encoding="UTF-8"?>
<device name="AKAIAPC20" author="MACK" type="MIDI" vid="0x09E8" pid="0x007B" >
<init sysexid="F047007B60000442010101F7" />
<button note="53" channel="0" name="BUTTON 1-1" />
<color note="53" channel="0" name="LED BUTTON 1-1" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
<button note="54" channel="0" name="BUTTON 1-2" />
<color note="54" channel="0" name="LED BUTTON 1-2" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
<button note="55" channel="0" name="BUTTON 1-3" />
<color note="55" channel="0" name="LED BUTTON 1-3" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
<button note="56" channel="0" name="BUTTON 1-4" />
<color note="56" channel="0" name="LED BUTTON 1-4" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
<button note="57" channel="0" name="BUTTON 1-5" />
<color note="57" channel="0" name="LED BUTTON 1-5" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
<button note="52" channel="0" name="BUTTON 1-6" />
<color note="52" channel="0" name="LED BUTTON 1-6" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
Here is what I received from MidiTrace "sysexid="F07E000602477B001900010000007F7F7F7F004B0201020004000205010000060003F7"
and works with the definition file. Unfortunately I'm still getting the same behavior with the leds. I've turned off the APC 20 to reset it and also tried to have the led blink if a deck is playing then go solid when the deck is stopped as a possible work around. The led will blink when playing as it should but will go off when stopped. Thank you for your help djdad.
<?xml version="1.0" encoding="UTF-8"?>
<device name="AKAIAPC20" author="MACK" type="MIDI" vid="0x09E8" pid="0x007B" >
<init sysexid="F047007B60000442010101F7" />
<button note="53" channel="0" name="BUTTON 1-1" />
<color note="53" channel="0" name="LED BUTTON 1-1" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
<button note="54" channel="0" name="BUTTON 1-2" />
<color note="54" channel="0" name="LED BUTTON 1-2" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
<button note="55" channel="0" name="BUTTON 1-3" />
<color note="55" channel="0" name="LED BUTTON 1-3" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
<button note="56" channel="0" name="BUTTON 1-4" />
<color note="56" channel="0" name="LED BUTTON 1-4" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
<button note="57" channel="0" name="BUTTON 1-5" />
<color note="57" channel="0" name="LED BUTTON 1-5" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
<button note="52" channel="0" name="BUTTON 1-6" />
<color note="52" channel="0" name="LED BUTTON 1-6" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
Here is what I received from MidiTrace "sysexid="F07E000602477B001900010000007F7F7F7F004B0201020004000205010000060003F7"
and works with the definition file. Unfortunately I'm still getting the same behavior with the leds. I've turned off the APC 20 to reset it and also tried to have the led blink if a deck is playing then go solid when the deck is stopped as a possible work around. The led will blink when playing as it should but will go off when stopped. Thank you for your help djdad.
Inviato Thu 12 Jan 17 @ 9:14 pm
VICTORY!! The leds now work as they're supposed to. The solution was that I had to put the APC 20 in "Ableton/Alternative mode" or Dumb Mode as listed above. Thank you again for your help djdad.
Inviato Thu 12 Jan 17 @ 11:38 pm
Semi-VICTORY!... Ok, so if I put the APC 20 in dumb mode the leds work perfectly as expected until the unit is turned off then it resets. I still can't get the right sysex to keep it in Ableton/Alternative mode. In miditrace I get "F07E000602477B001900010000007F7F7F7F004B0201020004000205010000060003F7". I'm having trouble deciphering the information from USBlyzer. USBlyzer shows "04F07E00070601F7", "04F04700047B6000...", "04F04700047B5000..."
Inviato Sat 14 Jan 17 @ 3:14 pm
i have full working script for apc 80.. If you need help .. I have used it for 5 years..
Inviato Fri 27 Jan 17 @ 5:12 pm
Ok try this..
The 1st sysex shouldnt be a requirement for the unit to work. Its mostly used to get the sysexid of the unit. But can be useful to get the positions of the faders on init. So if a fader is mapped as volume, the volume fader of VDJ should get the value of the hardware fader on init.
The 2nd sysex should set the unit to the mode where the LEDs can be properly controlled (aka Ableton mode)
Not sure what the 3rd sysex does.
Those are sent by Ableton on init so try to add those in the definition file as above.
Remember , you also need a AKAI APC20 mapping.xml file with
<device name="AKAIAPC20" author="MACK" description="AKAI APC20" type="MIDI" vid="0x09E8" pid="0x007B" >
<init sendsysex="F07E000601F7"/>
<init sendsysex="F047007B60000441090701F7"/>
<init sendsysex="F047007B5000100000010E070B040F0000050A00040906F7">
<button note="53" channel="0" name="BUTTON 1-1" />
<color note="53" channel="0" name="LED BUTTON 1-1" values="0x00=black, 0x01=green,0x03=red,0x05=yellow" />
....
...
</device>
The 1st sysex shouldnt be a requirement for the unit to work. Its mostly used to get the sysexid of the unit. But can be useful to get the positions of the faders on init. So if a fader is mapped as volume, the volume fader of VDJ should get the value of the hardware fader on init.
The 2nd sysex should set the unit to the mode where the LEDs can be properly controlled (aka Ableton mode)
Not sure what the 3rd sysex does.
Those are sent by Ableton on init so try to add those in the definition file as above.
Remember , you also need a AKAI APC20 mapping.xml file with
<mapper device="AKAIAPC20" >
...
</mapper>
Inviato Sun 29 Jan 17 @ 1:50 pm
That did it! Thank you for the offer tycoonentertainmentcanada and your time djdad.
Inviato Sun 29 Jan 17 @ 2:42 pm