Akaii APC Mini

The issues found when using the Input/Output Manager panel
3li
Posts: 3
Joined: Wed Jul 06, 2016 2:42 pm
Real Name: Elvira

Hi everbody! ;) :)
I'm kind of new in working with QLC+..
I bought a new Akai APC Mini midi controller, and i managed to make them work together...but the led lamps on Akaii's buttons doesen't work. I'm using a Win 7 platform and i could really use a help... Thank You ! :)
janosvitok
Posts: 1266
Joined: Mon Apr 13, 2015 7:05 am
Location: Bratislava, Slovakia
Real Name: Jano Svitok
Contact:

What you need to do is:
1. check feedback channel in input/output manager (the MIDI out to akai)
2. use proper profile for akai
3. either set in the profile feedback values (color values for on and off) or set them in the virtual console button properties

see http://qlcplus.org/docs/midiplugin.html#akai-feedbacks
3li
Posts: 3
Joined: Wed Jul 06, 2016 2:42 pm
Real Name: Elvira

hI!

This works!!!!!! aaaaaaawww, thank You very very much!!!!
P.s. i forgot to check box feedback in QLC+ .. silly me! :shock:
3li
Posts: 3
Joined: Wed Jul 06, 2016 2:42 pm
Real Name: Elvira

It's interesting to notice that you don't necessarily need to keep 0 as lower value. For example with lower = 6 and upper = 2 the result will be: Function Off -> red LED, Function On -> green LED.

I cannot change color, nor I can shut down green light....

Any hlep with that?
janosvitok
Posts: 1266
Joined: Mon Apr 13, 2015 7:05 am
Location: Bratislava, Slovakia
Real Name: Jano Svitok
Contact:

3li wrote:I cannot change color, nor I can shut down green light....
What do you mean by that?

Please attach here your qxw file and any custom qxf files needed to open the qxw and give as exact step by step recipe to reproduce the problem.
I.e. push ____ button, the led on apc is ___ color, than do ___ and color is ___ while it should be ___.

Jano
User avatar
enbyted2
Posts: 17
Joined: Sat Dec 24, 2016 8:54 pm
Location: Poland
Real Name: Bartek

Hi,

I have the same issue.

So:
- Given you have connected Akai APC mini
- Given that you have set it as input and feedback
- Given that you set the proper profile for it

Case 1:
- Create a simple console with 1 button in toggle blackout mode (I used button 1-1)
- It will work as expected (light green/off then blackouut is on/off)

Case 2:
- Create 30 buttons or more each with different function
- Buttons won't light up

Case 3: (different issue but might be related)
- Create 30 buttons or more all with toggle blackout
- Only first 8 or 9 butons will be working as expected, others will either not work at all or light up and never turn off.

My machine:
- Ubuntu 16.10
- Kernel 4.8.0-30-generic
- QLC+ current GIT version (c18bc5fe7d4dafdbf88d2e44b7b153944ff72c26)

I attach my workspace and required fixture. It may have missing input profile - just select the default for Akai APC mini (i was messing around trying different values and such). Programmed buttons are 1-1 through 8-3 for functions + 1-8 for moving head testing. Slider 1 is submaster and 2 is moving head tilt offset.

I don't really understand Qt and QLC's architecture. I would love to help debug it but I won't have enough time this year to learn it. I have a show for New Years Eve and I would love to use QLC+ then. If somebody has any idea what might be causing this please let me know.
Attachments
test.qxw
(31.28 KiB) Downloaded 225 times
HIPERnet-Moving-Head.qxf
(3.39 KiB) Downloaded 166 times
User avatar
enbyted2
Posts: 17
Joined: Sat Dec 24, 2016 8:54 pm
Location: Poland
Real Name: Bartek

I've been debugging it a little and it seems to be not a problem with QLC+ itself.
Using midisnoop I see that QLC is properly sending feedback values, APC mini is just not reacting to them...

Any ideas?
siegmund
Posts: 703
Joined: Mon Nov 02, 2015 11:03 am
Location: Germany
Real Name: Lukas

enbyted2 wrote:I've been debugging it a little and it seems to be not a problem with QLC+ itself.
Using midisnoop I see that QLC is properly sending feedback values, APC mini is just not reacting to them...

Any ideas?
Maybe this is related to this issue: viewtopic.php?f=5&t=6900&p=29106&hilit= ... ack#p29106
I also experienced the issue described in the thread above on my BCF 2000:
When using the mouse in vc to enable the scene by dragging the slider or clicking the button, everything is fine: The button on the BCF lights up red. But if I use the button on the BCF itself to activate the scene, I need to be very "fast": If the tapping of the button happens _really_ fast then it lights up (as expected), but if you push it a bit longer (respectively with a typical duration) the button does not light up (not as expected).
I guess this has to do with timing and some sort of internal feedback of the BCF. When releasing the button on the external control this forces to override the feedback given by QLC+. Maybe the following diagram illustrates the timing a bit. As you can see, on a normal duration of pressing the button, the button is released after QLC+ had send the feedback so the status of the LED gets overridden.

Button press . . . . . |+++++++++|
Internal feedback . . |+++++++++|
QLC MIDI IN . . . . . . |+++++++++|
QLC MIDI OUT (feedback) . ||
____________________________________ time >

I did not investigate the exact timing at all but it seems likely for me because as far as I know QLC+ always sends feedback only once after a change.

So if I got everything right there would be a few possibilities (if you are willing to fix this at all):
1) Send feedback continuously/periodically to external devices.
2) Delay sending of feedback a bit.
3) Send feedback twice (one as it is done now, one with a delay)

Don't know what would be best since 2+3 are a bit "hacky" and 1 will be a lot of work (and processing load).

Regards,
siegmund
Last edited by siegmund on Tue Dec 27, 2016 10:02 am, edited 1 time in total.
Mehovoric
Posts: 7
Joined: Mon Dec 26, 2016 7:14 am
Real Name: JoshW

siegmund wrote:
enbyted2 wrote:When using the mouse in vc to enable the scene by dragging the slider or clicking the button, everything is fine: The button on the BCF lights up red. But if I use the button on the BCF itself to activate the scene, I need to be very "fast": If the tapping of the button happens _really_ fast then it lights up (as expected), but if you push it a bit longer (respectively with a typical duration) the button does not light up (not as expected).
Holy crap! This explanation just helped me figure out whats wrong with my APC40 mk2!! Its the exact same issue. Little back story on my controller:

APC40 mk2 has 3 modes. I can get normal feedback to work fine on modes 1 and 2. I set a dim blue color for the lower value and a bright blue color for the upper value. The downside is these modes don't support "paged" knobs like Mode 0 does. In Mode 0, I have 9 different pages that control 8 physical knobs. In other words, I can actually control 72 different knobs natively. Super useful!

ANYWAYS: In Mode 0 is where I run into feedback issues on the pads. The lower feedback number works fine. However, when I toggle a button, it displays the upper value feedback only as long as I hold the button, and shuts off as soon as I release it. Like you said, if I use the mouse in VC it works as expected. And then I read your post and tried hitting it really fast like you suggested and it worked normally!! So this seems to be a definite issue. The interesting thing is that it only happens on toggle buttons. "Flash function" doesn't have an issue.

I have noticed with my APC40 Mk2 that in Mode 0, if I press any pad button, it flashes it's own feedback (even when not connected to QLC+). As long as I'm holding the button down, its always green (so long as i don't have QLC feedback assigned to it. If I do, that feedback works normally). So I'm wondering if like you pointed out, that is somehow overriding what QLC sends, or it's just bad timing and QLC sends its feedback message before the APC finishes it's own internal note-off message? And I wonder if there is some sort of timing difference on feedback for the Flash vs Toggle?

Hope that makes sense! haha
siegmund
Posts: 703
Joined: Mon Nov 02, 2015 11:03 am
Location: Germany
Real Name: Lukas

I'm glad that helped you to investigate. Just now I realized that the diagram got messed up so I somehow tried to fixed it.
Mehovoric wrote:And I wonder if there is some sort of timing difference on feedback for the Flash vs Toggle?
I don't think there is a difference in the internal timing for flash vs toggle but it's the system in general. So when you use the button as a flash button the internal/external feedback messages do not differ: When you push the button, the internal feedback tells the LED to turn on and a short time after that QLC tells the LED to turn on as well. As soon as you release the button, the internal feedback tells the LED to turn off and a short time after that QLC tells the LED again to turn off. So there is no conflict in the messages.

So you do not have an option to change this behavior on your external controller?
Mehovoric
Posts: 7
Joined: Mon Dec 26, 2016 7:14 am
Real Name: JoshW

siegmund wrote:So you do not have an option to change this behavior on your external controller?
I do not. Akai isn't making a tool for this unfortunately. The only thing I can do is change initialization mode. The other modes work fine, they just don't have pages or banks built-in, so I need to start experimenting with creating pages using Bome.

Made a short little video so you can see exactly what it does. You may need to pause on the annotations, they're a little fast, sorry! haha

siegmund
Posts: 703
Joined: Mon Nov 02, 2015 11:03 am
Location: Germany
Real Name: Lukas

Haha very nice video thanks! :D
I would say this supports the "timing theory". Especially with the solo frames, if you turn on another scene in the same solo frame, the currently activated scene is deactivated by QLC+ itself and sent a proper feedback value.

Since this bug seems to affect multiple users and we are not able to change anything about it on our controllers, maybe one of the developers could have a look at it?

Would highly appreciate that!

Regards,
siegmund
User avatar
enbyted2
Posts: 17
Joined: Sat Dec 24, 2016 8:54 pm
Location: Poland
Real Name: Bartek

Okay, after a lot of testing different things I narrowed down my problem to couple simple and (for me and my controller) reproducible smaller ones.
I don't think it's related to timing in my case.

1. The buttons won't turn off, no matter the "Send note-off on 0 velocity" setting
2. after starting the show feedback on my akai dosen't work, I have to uncheck and check the feedback checbox in inputs/outpus

The #1 may be related to a missing initialization message (I've never setup anything in there). However I can easily control LEDs on akai by manually injecting midi messages.
Also when I have midisnoop active and messages are going through it the buttons actually work 100% of the time (but #2 still exists)

The #2 may actually be a bug in how QLC+ handles ALSA device. I will investigate it deeper, but probably not in the next 2 weeks.

Actually, it is possible that both issues are caused by the same bug. I did one change in QLC+ that got feedbacks working like described above - I added a very dirty std::cout with endl just before and just after sending feedback data, so that it's flushing. It may be a race condition or some other timing issue, but within QLC+ itself. It may also be a bug in ALSA or whatever middleware library QLC is using to access MIDI device. I will investigate it further, but as I said before - in about 2 weeks.

When I get some time I will provide a QLC+ build with some debugging stuff in place and hope that people with similar issues will provide more information.
I will also test it on Windows to see if it's Linux specific.

With all that in mind, I don't really have any experiemce with Qt and I don't fully understand QLC's structure (yet). It would be very helpful if somebody with more knowledge and a hardware to test it could take a look at it.
msccd
Posts: 7
Joined: Sat Jul 25, 2015 10:44 pm
Real Name:

Short question about the feedback to APCmini: Is it possible to disable it for some buttons only?

my problem is: i have to activate three buttons with different functions with button on the APCmini. And no, i know about the collections, but this time they can't help.

If i map more than one button in the VC to one button on the APCmini, the feedback won't work correctly any more. I'd have to disable it on two of the three functions, and set it on the last third.

Any idea? Thx!
User avatar
enbyted2
Posts: 17
Joined: Sat Dec 24, 2016 8:54 pm
Location: Poland
Real Name: Bartek

msccd wrote:Short question about the feedback to APCmini: Is it possible to disable it for some buttons only?
No, that's not available in QLC+ (at least not in a way I know about), but it seems like a useful feature - I'll suggest it on github, so Massimo has a better chance to see it :)

As a workaround you could find a program that will convert midi input to keystrokes and use keyboard shortcuts in QLC+. I don't know any software that does it, but there has to be something.

Edit: here is the issue filed: https://github.com/mcallegari/qlcplus/issues/926
User avatar
mcallegari
Posts: 4461
Joined: Sun Apr 12, 2015 9:09 am
Location: Italy
Real Name: Massimo Callegari
Contact:

Alright, jumping in.
I've had some time to test with a BCF2000 and an AKAI APC mini.
No issues found, with the following considerations:

- by factory default, the BCF2000 sends just one MIDI message when pressing a button. Normally, QLC+ expects to receive a press and a release event to work properly.
That's why at some point I've added the option "Generate an extra Press/Release when toggled". I thought I enabled it by default in the bundled BCF2000 profile, but I haven't.
In any case, it's written in the documentation: http://www.qlcplus.org/docs/howto-input-profiles.html (Button properties)
If you enable that option for every button, there is no issue with feedbacks

- I tested enbyted2 project with an APC mini and after a while I figured out what's wrong with it. You cannot use feedbacks on a universe that's already sending output data to a DMX USB adapter ! It's been explained quite a few times in this forum. Just separate input+feedbacks and DMX output into 2 different universes

- as for Mehovoric video, without a test project I cannot tell what's going on in his setup
siegmund
Posts: 703
Joined: Mon Nov 02, 2015 11:03 am
Location: Germany
Real Name: Lukas

Thank you for your answer!
mcallegari wrote:- by factory default, the BCF2000 sends just one MIDI message when pressing a button. Normally, QLC+ expects to receive a press and a release event to work properly.
That's why at some point I've added the option "Generate an extra Press/Release when toggled". I thought I enabled it by default in the bundled BCF2000 profile, but I haven't.
In any case, it's written in the documentation: http://www.qlcplus.org/docs/howto-input-profiles.html (Button properties)
If you enable that option for every button, there is no issue with feedbacks
First of all, I need to apologize because I was not aware of this possibility. I tried the factory setting and realized that it is not possible to toggle buttons and so I edited the buttons on BCF2000 to be "Toggle Off". This means they act like a flash button and are only on as long as the button is pressed.

So far what happened in the past.

For testing, I've applied "Toggle On" agein as it is the factory default, created a profile (since I have other MIDI commands assigned I could not use the available one) and checked the "Generate an extra Press/Release when toggled" option. Toggling a scene works great, feedback is expected. Unfortunately I'm not able to flash a scene with this checkbox enabled, also the LED on the BCF2000 instantly goes off after pressing. If I disable the checkbox, I have the toggling-behavior again, but on a button that should work as a flash button.
Maybe I'm doing something wrong again. If so, please tell me.

I share the corresponding input profile file, .bcf mapping file (remove additional .qxw extension I needed to add since the forum does not allow .bcf files) and the workspace with which I tested.
Attachments
bcf.qxw
(2.29 KiB) Downloaded 134 times
Template1.bcf.qxw
(10.31 KiB) Downloaded 134 times
BCF-2000(own).qxi
(6.36 KiB) Downloaded 146 times
User avatar
enbyted2
Posts: 17
Joined: Sat Dec 24, 2016 8:54 pm
Location: Poland
Real Name: Bartek

mcallegari wrote:- I tested enbyted2 project with an APC mini and after a while I figured out what's wrong with it. You cannot use feedbacks on a universe that's already sending output data to a DMX USB adapter ! It's been explained quite a few times in this forum. Just separate input+feedbacks and DMX output into 2 different universes
Ohh, that explains it! Maybe it should be stated in the documentation somewhere? (if it is already maybe it's not clear enough? I didn't see it...)
I will change it and test as soon as I get my hands on Akai again, thanks!

As a side note, what is the underlaying reason/error behind it?

EDIT:
BTW, It seems that with ArtNet as output the issue is showing itself in a different way: The buttons will never turn off, but I can change their color. It makes it much stranger of an issue in my eyes.
User avatar
mcallegari
Posts: 4461
Joined: Sun Apr 12, 2015 9:09 am
Location: Italy
Real Name: Massimo Callegari
Contact:

enbyted2 wrote:
mcallegari wrote:- I tested enbyted2 project with an APC mini and after a while I figured out what's wrong with it. You cannot use feedbacks on a universe that's already sending output data to a DMX USB adapter ! It's been explained quite a few times in this forum. Just separate input+feedbacks and DMX output into 2 different universes
Ohh, that explains it! Maybe it should be stated in the documentation somewhere? (if it is already maybe it's not clear enough? I didn't see it...)
I will change it and test as soon as I get my hands on Akai again, thanks!
As a side note, what is the underlaying reason/error behind it?
EDIT:BTW, It seems that with ArtNet as output the issue is showing itself in a different way: The buttons will never turn off, but I can change their color. It makes it much stranger of an issue in my eyes.
Actually, I need to correct myself for what I said before.
I've read in this forum that input+feedback and output should be on different universes, but then I thought that the code can handle them in the same universe, so I started digging again.
What I found is not nice at all :(

I started with a simple project with one button, and everything worked perfectly. Then I used your project with lots of buttons and saw the problem.
When QLC+ goes into operate mode, it sends ALL the feedbacks of the widgets that have an external input channel assigned.
In your project, 30-40 MIDI signals are sent to the APC mini very quickly.
For some reason, Linux detects an hotplug of the device ! Basically udev thinks the APC has been unplugged and plugged on the USB port.
Now I'm not sure if this is an issue specific to the APC or specific to Linux, but what happens next causes feedbacks not to work anymore.
At some point we added an option to the MIDI plugin to send "note off" extra event. Basically for who uses MIDI notes with particular controllers.
That option is enabled by default in the plugin, unless specified otherwise by the QLC+ engine.
In fact, if you look at the beginning of your project XML, you will see "<PluginParameters MIDISendNoteOff="false"/>"

If you unplug and plug a USB device, all the parameters read from the XML file are lost, and this is the real issue that needs to be resolved.
So when you load your project the "note off" parameter is correctly set to "off", but when you go into operate mode, the MIDI line gets re-initialized and "note off" goes back to "on", and feedbacks won't work anymore.

I've tried to understand if there's a quick fix for this, but there's not. This is a plain architecture error, emerged when we enabled the hotplug monitor.
I need some more time to figure how to solve this.
User avatar
enbyted2
Posts: 17
Joined: Sat Dec 24, 2016 8:54 pm
Location: Poland
Real Name: Bartek

mcallegari wrote: For some reason, Linux detects an hotplug of the device ! Basically udev thinks the APC has been unplugged and plugged on the USB port.
Now I'm not sure if this is an issue specific to the APC or specific to Linux, but what happens next causes feedbacks not to work anymore.
That's what I found and thought that was some bug to trace in ALSA or whatever QLC's using for midi.
That also explains why a dirty 'cout with endl' just before sending feedback to midi "fixed" it.
The limit seems to be 8-9 buttons at a time.
Oh, also when I routed midi through midisnoop the problem disappeared.
mcallegari wrote: I've tried to understand if there's a quick fix for this, but there's not. This is a plain architecture error, emerged when we enabled the hotplug monitor.
That's really unfortunate and should be fixed, but we should also trace the re-plug issue, since it might be something that QLC is doing wrong.
Post Reply