Skip to content

Instantly share code, notes, and snippets.

@zewelor
Last active June 19, 2025 07:24
Show Gist options
  • Select an option

  • Save zewelor/5c0c159cf71200059ffbae7556dced8a to your computer and use it in GitHub Desktop.

Select an option

Save zewelor/5c0c159cf71200059ffbae7556dced8a to your computer and use it in GitHub Desktop.

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:

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.

@prokoudine
Copy link

https://github.com/Ardour/ardour/tree/master/libs/surfaces/maschine2 has been around for quite some time, but I think it's not very functional. @x42 could probably tell more

@x42
Copy link

x42 commented Apr 5, 2025

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.

@harryhaaren
Copy link

Hi Folks! Re Ardour control + Ctrla/Mappa; yeah I remember you hacked in a new class for me to play in in like .. 30 mins or something Robin! That was awesome.

As folks have mentioned here, indeed I'm no longer actively developing OpenAV stuff (other life stuff, jobs etc going on). Still like the Linux Audio scene, and have a great fondness for these projects & what they enable.

If I was to re-design Ctlra today, there would be very few API level changes. I think the core principle, and the abstractions (particularly how hotplug is enabled transparently) is really elegant... unfortunatly I dont see myself getting/making time to work on it in the near term.

@agraef (https://agraef.github.io/) had contributed to the "MIDI mode" for a Maschine mk3 - perhaps he'd have input if you reach out? (not sure I tag him here in Github correctly..)

@agraef
Copy link

agraef commented Apr 15, 2025

I'm afraid that I haven't done any work on that front since then either. My Maschine Mk3 controller has been gathering dust ever since. Which is a shame, since the controller is quite nice, but not having it work at least as a class-compliant MIDI device out of the box is a major PITA.

I did get it working with a fork of Harry's ctrla (https://github.com/agraef/openAV-Ctlra/tree/mapping_v1-daemonx), to the point that it could be used as an emulated Mackie-compatible device (at least in conjunction with my midizap program), see the README in https://github.com/agraef/openAV-Ctlra/tree/mapping_v1-daemonx/examples/daemonx for details. But that code is from 2018, so it probably needs quite a bit of work. I might give it another go some time, but usually I'm just too busy with other things.

As for the Ardour support, I tried to get into Ardour's controller interface a while ago, but never got to grips with it. I'd love to be able to write my own controller interfaces for it, as I have lots of old and new MIDI controllers lying around that might benefit from that. It would help tremendously if there was some documentation walking through the steps necessary to add support for a new controller in Ardour from start to finish. Robin, maybe we can talk about this at LAC @ Lyon this summer? Will you be there?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment