Gist to gather found info about using Native Instruments Maschine in Linux. Idea is to document found code samples, to make better experience using NI Hardware in Linux. I own Maschine Mikro MK3 and couldn't find anything how to work with it.
Maschine mikro MK3, and Maschine MK3, and probably others(?), have "Midi mode", but its not read midi mode. Its emulated using virtual midi device. In other words, device in "midi mode" still doesn't send any midi messages over usb. It only gets colored different, and screen says "Midi Mode". It still sends the same messages as in non Midi Mode, only software (driver) emulates it to use as midi.
After some searching found these projects, which has some support for NI hardware:
- https://github.com/openAVproductions/openAV-Ctlra
- Has working example with midi bridge. You can use your controller ( if its supported ) and get Midi messages !
- My fork it and added support for Mikro MK3, tested by myself looks like its working fine.
- Found extended midi bridge code here ( probably optimized to Maschine MK3? ). It also has "Mackie control protocol" support
- https://github.com/shaduzlabs/cabl
- https://github.com/styyle14/cabl fork with Maschine Mikro MK3 support.
- I can see some debug messages there. When rotating encoder leds are being colored in different colors. Couldn't get midi messages to be sent.
- Found some extended (documentation)[https://github.com/Drachenkaetzchen/cabl/tree/develop/doc/hardware/maschine-mk3] about Maschine MK3
- https://github.com/wrl/maschine.rs
- Has support for Mikro MK2. Tried with my Mikro MK3 and pads were almost no responsive. Has example with midi messages being sent, but could get them only when hitting pads very stronly. Also I'm not familiar with rust, so skipped looking into it more.
TLDR: Clone https://github.com/openAVproductions/openAV-Ctlra or my fork ( for mikro mk3 ). Build and run examples/daemon to get midi messages from supported hardware.
We granted @harryhaaren access to ardour/git to add ctrla/mappa support back in 2017 and I have created a skeleton ctr surface which is still there, though rather outdated, but then Harry got a new job... ;)
I thought ctrla is dead. Is the abstraction sufficient for complex surfaces like the Push3 or Machine that have many custom features and dedicated interaction with, and feedback from the host?
Ardour's current Maschine2 support is functional, but predates Ardour's clip-launching support. You can control the mixer, plugin parameters, and play the pads to send MIDI notes using various scales, but that's not very maschine-like (no sequencer) and is not very useful overall.