-
Notifications
You must be signed in to change notification settings - Fork 85
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add DAW Controller support for various Arturia controllers #743
Conversation
Build for testing: |
Thank you very much for this contribution @soyersoyer. Unfortunately I don't have the matching hardware to test this with, but I am sure many users will find this extremely useful. Semi off topic: Do you know any good/straightforward documentation how the display and encoder on the Keystep communicates with the host over USB? It just so happens that recently I was thinking about building something the other way around (unrelated to MiniDexed), a simple microcontroller + display + encoder combination that does what a Keystep can do (e.g., to browse presets of the free Analog Lab Play), but without needing an actual Keystep. |
Well users of this specific MIDI controller maybe, but I'm really not sure about hardcoding support for just one vendor's device in MiniDexed... In that SysEx message, 0x00, 0x20, 0x6B is the Arturia SysEx Vendor ID - right? It's a little hard to tell as I didn't seem to be able to find any mention of the MIDI implementation of Arturia devices from the manufacturer themself. Do you have a link? If we were to go down this route, then I think we'd have to have some way of querying a connected device and mapping MiniDexed features to the features of the device itself rather than hard-code in specific SysEx messages in my view. Do we know what other controllers support displays and how they do it? @probonopd you weren't keen on me adding bespoke SysEx to MiniDexed to support this kind of thing between MiniDexeds, so I'm a little surprised you seem quite happy to be considering adding bespoke vendor MIDI messages other than Yamaha...? Kevin |
Do you think KeyLab? KeyStep doesn't have a display. In the MiniLab 3 there is an 'Arturia' program for Analog Lab, but I don't know how it communicates. Probably after an initial model query, the main Encoder sends relative CC-s, the other encoders send absolute CCs, the Analog lab sets the encoder values on preset change and updates the display with sysex. If you think, I can capture it. For the DAW mode, I found this:
This is a very popular controller, so I think it might be worth adding. Additional vendors may be added later.
Yes
From Arturia, No. We can send generic device inquiry with You are right, the DAWDisplayEnabled config option is too broad and should enable some auto-detection mode. |
787cbe1
to
0211e16
Compare
Build for testing: |
@soyersoyer You beat me to it while planning to do the same. It works with my MiniLab3 (firmware 1.1.1). The only issue is the Dumping MIDI to console which seems not reliable. Also you don't configure the any of the available sliders, knobs to actual functions like Pan, Volume etc. Let me take a look. |
0211e16
to
0b55ac6
Compare
I refined it a bit. Now it does a sysex inquiry and only sends sysex if it is MiniLab3 or KeyLab 3 Essential. Does this fix your MIDI issue? |
Build for testing: |
0b55ac6
to
fd5e834
Compare
Build for testing: |
fd5e834
to
c692205
Compare
Build for testing: |
c692205
to
4f88b13
Compare
Build for testing: |
|
How should they work? Should they send CC-s to channel 1? |
4f88b13
to
98788fa
Compare
Build for testing: |
Now, it maps the encoders. Also updates the encoders values at performance load from TG0. Unfortunately the pads cannot be configured to send CC-s in DAW mode, they send notes only on channel 10. What I want also:
|
98788fa
to
d1140e2
Compare
Build for testing: |
d1140e2
to
9f174f6
Compare
I think the encoders should set the parameters based on the menu, so if the display is on the TG1, it should set the TG1 parameters, if on the performance, it should set all TG-s parameters, if it is on the effects it should set the effect parameters. I will try to make this later on a different branch. |
Build for testing: |
9f174f6
to
bb72a25
Compare
Hi there ! Today I am unable to download The MiniDexed_2025... I have this error message : "Failed to generate URL to download artifact." I tried on chrome and also on Brave, I was connected to my GitHub account... Any idea ? |
I think it was deleted because of retention-days:3 There is a 500 MB limit on the free Github tier. It would be good to keep the most recent artifacts on a PR. This is a hidden extra motivation to keep polishing the code, haha :) |
83bc00e
to
20b9800
Compare
Build for testing: |
Hello, I am very impressed with this developpement for the Arturia's keyboards. It is going fast, improvements every week or less, bravo ! |
@Spacepadrille thanks for testing. Can you give an example (click path) for a menu that is only available on one but not the other display? Thanks. |
> @Spacepadrille thanks for testing. Can you give an example (click path) for a menu that is only available on one but not the other display? Thanks." |
What is "long press on shift the sub-menu"? @soyersoyer do you understand why the two displays might not behave identically in some situations? |
@probonopd : lol my sentence was badly formulated. I mean activating the display of the sub menu by a long press on shift. |
MiniLab 3 Keylab Essential KeyLab Essential mk3 KeyLab mkII based on https://github.com/PrzemekBarski/arturia-keylab-essential-mk3-programming-guide Tested on a Arturia MiniLab 3 and KeyLab mkII Keylab Essential and Keylab Essential mk3 is not tested
20b9800
to
b99658c
Compare
Build for testing: |
Sorry, I didn't test a change, and it updated the color of the pads too many times. That's what caused the glitches. If you experience this still, please let me know.
Holding down the Shift key (CC27) will bring up an overlay menu where you can select control layouts for what the 2x4 encoders change. The available overlay menus change depending on where you are in the menu. The Main, TG, Effect, Voice, Op menus have different overlay layers. But all voice and operator settings are routed to Main / TG / Voice also, so that on one page, for example, you can set OP_EG_R1 of the 6 operators (encoder 1-6) and all of them with encoder 8. I think it's a good idea to have the overlay menu appear on the default screen as well. However, it would have to be integrated into the MiniDexed menu and I don't know if others would think it's a good idea. |
Thank you for your hard work ! |
Maybe this can be "transparent", I mean not activated on minidexed without Arturia mod ? If you select "DAWControllerEnabled=1" you have the display of the sub menus on the MiniDexed screen, otherwise not. I'm not a coder, so maybe I tell sh** ? |
I was thinking that it would be possible to set a MIDI CC in the config for the shift button and 8 for the encoders, and it could work with any configurable controller that has 1 button and 8 encoders. |
This functionality will be available here: |
Oh. What does this closing mean for moving the controler code into the main MiniDexed? |
#767 couldn't make it to MiniDexed in 2 months. Maybe probonopd doesn't want to see any vendor specific stuff in it? I don't know. #767 is a small change compared to this, so if this PR could be merged, I think it would take about 1 year to get there. Since these output zips are only available for 3 days, I'd have to do something with the code every 3 days for the next year so people can try it out here. This makes no sense. There's also no point in asking people to try the change #800, but that's not available (for most people). I don't see the reason for changing the retention days to 3 anymore, because it seems like actions from public github projects wouldn't count towards storage. e9751e6 The linked PR doesn't have a 3-day limit. soyersoyer#2 I'll always try to rebase on the main from here. |
Thanks for the insight :) |
Well, to be fair - just /one week/ ago there will still some updates required for this "simple" change. The hazard of having a larger user-base now for code like this is that changing code and testing new functionality is relatively easy, but reviewing those changes and testing for no side effects for existing platforms (remember this supports Pi V1,2,3,4,5,Zero, Zero 2, 400) takes time. People always come forward to test new functionality, especially when it meets an unmet need they had. But very few people come forward and confirm that everything is still fine without side effects on existing platforms. And you may recall it was I who was concerned about vendor specific code (#743 (comment)) not @probonopd who has only been very supportive of these more experimental changes. But my main concern is about longevity of support for these large changes, hence wanting to understand the implications if asked for my opinions on them. As I say, initial implementation is one thing, but it took quite a while to build up knowledge of the code base after the initial creators left, so when faced with a large body of changes (#743, #791, #790, #778, #782, #779, #777, #747, #783, #755, #750, #758), some of which didn't seem to be solving an obvious known issue, some of which were updating core libraries, and some of which were adding a significant amount of code, then we must collectively forgive the fact that volunteer maintainers (who also do this for fun) might take quite a while to catch up with what is going on. Kevin |
I am very sorry for the 3 days limit. I have been running out of space that GitHub grants. Still would very much like to see these contributions to be merged! |
What do public github projects count towards? |
Good question, I need to check. I just got a warning from GitHub toward end of December that I was over 90%. |
Some Arturia keyboards have a Display and this can be used to display the menu.
I also added support for relative encoders, which sends 61 62 63 for decrement and 66, 67, 68 for increment.
With this config the MiniDexed can be controlled well with MiniLab3's Main Knob and Display in DAW mode:
The Home is the shift+Main click
Keylab Essential, Keylab Essential 3, KeyLab mkII work also