Akai APC Key25 mk2 driver

Hi @jofemodo . I knew you would continue.

Findings using mk2 so far:

  • PAD+CTRL mode does not have the fine adjustment
  • Shift+Send used to go directly into StepSeq mode. Maybe others won’t like this change (I care not), and
  • I thought you proposed Shift+Send earlier on to go into a PAD+MIDI Learn mode. What is wisdom?
  • I do not know whether I am very fond of STOP_ALL_CLIPS + knob1 instead of shift + knob1. It’s a pretty scary pad already used on its own.

Shall look at mk1 later.

[EDIT] Just plugged it in. You broke mk1! I did not look at the code yet, but you are aware the mk1 has absolute knobs, not encoders?

Yes. It works for me.
On this mode the knobs control the active chain’s favorite controllers.
If no favorite controllers are assigned, then it returns “False” so the knobs can be MIDI learned normally. When operating favorite controllers, fine adjustment works. As normal CC (MIDI learn), fine adjustment is challenging and it’s not implemented..

Accessing the StepSeq mode is quite easy by using “Shift+PAD”, so i don’t think this suppose a serious drawback.

I don’t like neither. I broke my head, but couldn’t find a better solution (until now). I’m open to proposals.
Anyway, i think i made a nice work and the “STOP_ALL_CLIPS + knob1” works fine. If you are careful, you can use it safely. You don’t need to adjust the main volume very often. And if you are really scared about it, you can adjust main volume from the “device mode” without any risk.
I know, it’s not ideal, so please, tell me if you find a better solution,
Fine adjustment is really needed, so the solution should keep this function. Using shift for it can be revised.

Yes, i tried to do the modification with this in mind, but i couldn’t test it. I need your help fir this.

Regards,

Hi @jofemodo, I looked a little bit more at the knobs in apckey25. It looks like you only broke volume and balance in MixPad mode. Using set_mixer_param with the 0..127 value from MIDI CC, instead of 0..1 for volume and -1..1 for balance.

And the knobmoves trick was there iirc to get pick-up movements: only sending out the value if in the vicinity of the current value or when the last value sent was a very short time ago (to acount for quick turns).

If this can be handled directly by more generic code, that would be lovely. There is pickup code for zctrls, and since volume and pan are now effectively zctrls, that may be the way.

Anyway, two things need addressing:

  1. Translation of MIDI 0..127 to the range of volume/pan.
  2. A pick-up mechanism to avoid jumping parameters.

Update:

  1. device mode in mixer mode did not react at all to the three pots one would expect to be working (level, balance, main level). I will investigate further. Probably no zynpot_abs() on that screen. Yes, that it was. Even before the refactor, haha. Added zynpot_abs() to the mixer screen.
  1. I was mistaken about the pickup code ‘existing’ for zctrls. The pickup code is there only for zynthian_gui_controllers, and only when they are shown, and only when invoked via zynpot_abs.
    Also, they are marked as pickup when shown, then whenever the value crosses the current value, pickup is removed, so going to another mode, moving the dials, then returning to device mode would still cause a jump. And also anywhere when CC-invoked.

I think a time/value-based solution would be better, and implemented on a deeper level. Or at least easily choosable by consuming code. I have some ideas:

a) a method called zctrl.propose_value(), that works like a pickup, yet not immediately replaces current set_value(), and
b) zctrl.get_abs_midi_ctrl_val() helper function to get the zctrl value for a given cc value (and current zctrl state), if device drivers should do this on their own.

What do you think @jofemodo and @riban (who I believe wrote the zynthian_gui_controller pickup code)?

Do people expect/want pickup or jumping? Looking at the other drivers, I think pickup is nowhere used, even though plenty have faders.

  1. Fixed vol/pan CC → 0..1 / -1 .. 1 in mixpad by using zctrl.midi_control_change
2 Likes

Just bought an Akai APC KEY25 mk2 :star_struck: and connected to my V4 with Vangelis

  1. I noticed that after pushing a series of buttons on Akai (because I am studying interaction between Akai and Zynthian) , Zynthian interface (buttons and pots) stays stuck for some seconds: is it normal ?

  2. I am studying Device Mode: is the wiki updated about it? this picture does not match with my item status

1 Like

No. The wiki is not updated with the latest changes.

Regards,

Please, could you explain step by step how to get this “UI temporal blocking”?
I would like to reproduce.

Regards,

It should largely match. except the ‘transport buttons’ are now a dim blue.

Please, share a picture of what you see instead.

I verified that buttons have correct colors if I load for example factory snapshot Origin

Did you enable v5 touch buttons?

not, in my V4
now, I activated and the colors arrived and now Zynthian UI is really reactive
thank you Niels

PS
is it possible to adjust the sensibility of APC25 keyboard?

2 Likes