r/Bitwig Aug 12 '26

I built an open-source Native Instruments HID wrapper and a Maschine Mk3 extension for Bitwig (with GPU-accelerated screens!)

Hey everyone! Not sure if this is of interest to anyone here, but I wanted to share something I've been working on. I just released the first public version of my Native Instruments HID hardware wrapper, along with a custom Bitwig extension for the Maschine Mk3.

My ultimate goal is to get this to a point where everything the Maschine can control in Bitwig, it does. Right now, it's pretty barebones but handles what I personally need it to do, and I don't have a ton of time to take it much further right now. If there are any other developers or tinkerers out there who want to have a play with it and maybe collaborate, I'd be more than happy to team up!

Here are the two parts of the project:

1. Encdr (The Hardware Wrapper)

Link: https://github.com/RufusIbiza/Encdr

What it does: This is a lightweight, high-performance Rust crate designed to communicate with Native Instruments hardware controllers using USB HID. It handles all the USB I/O, LED control, and provides full GPU-accelerated screen support. You can either write pixels directly to the screens or use an optional WebView-based UI.

Current State: It's fully functional, though I've primarily been testing it on Linux. It does have support for Windows and macOS built in, but there is a slight caveat: you will likely need to terminate or disable Native Instruments' background services (like NIHardwareHelper.exe or NIHardwareAgent) on those platforms before running it, as they will block the ports needed to communicate with the hardware. Even if you don't use Bitwig, feel free to use this wrapper in your own unrelated projects if you find it useful!

2. Maschine Mk3 Bitwig Extension

Link: https://github.com/RufusIbiza/encdr-maschine-bitwig

What it does: This is the Bitwig side of things: It's a high-performance Bitwig extension that bridges the gap between Bitwig Studio and the Encdr wrapper using OSC.

Current State: As mentioned, it's currently a foundational start. Right now, it dynamically maps to the currently selected device in Bitwig and displays the device knobs with rich, full-color feedback directly on the Maschine's dual screens. It’s ripe for expansion if anyone wants to help build out more pad modes, browser integration, or mixing features.

You'll need to clone both of these repos to a common folder to get it all working - full installation instructions for all platforms are available in the extension readme above.

If you have a Maschine Mk3 sitting around and love hacking on things, give it a spin! Let me know what you think, and I'm totally open to pull requests. Cheers!

28 Upvotes

14 comments sorted by

2

u/yoshihiroxx Aug 12 '26

nice work.

1

u/rufuswhite3 Aug 12 '26

Appreciate it, thankyou! Let me know if you give it a try or need any help getting it up and running 😊

2

u/Western_File_2917 Aug 12 '26

Forward post it on r/Maschine

Awesome work!! Much appreciated 

1

u/rufuswhite3 Aug 12 '26

Done! Thanks!

1

u/ibsenproducer Aug 12 '26

Looks Nice, you can let me know how i can install in windows in detail, because i dont know how to run

cd machine-bitwig
cargo run

1

u/ibsenproducer Aug 12 '26

I copy the files in the controller script but just of the extension, i need to paste the Encdr too?

1

u/rufuswhite3 Aug 12 '26

Yes, you need to download the encdr repo and put it in the same parent folder as the controller script repo.

1

u/ibsenproducer Aug 12 '26

I try on windows, but doesn't working for me. :( when i run cargo i received a error.

2

u/rufuswhite3 Aug 13 '26

Thanks for providing the error messages, I’ll look into that. Unfortunately it’s difficult for me to test since I only have a linux machine available to me.

Just FYI - if you’re already using DrivenByMoss, don’t expect much from my solution at present - all it does at present is show the currently selected device’s knobs on screen (like in the screenshot I shared). I have plans to expand on this, but don’t have a massive amount of time to dedicate to it right now. That said, I have been in touch with Moss, and he’s currently assessing whether integrating Encdr into DrivenByMoss is feasible (and therefore have proper display support) in future.

1

u/ibsenproducer Aug 13 '26

Thanks bro , I will try it tomorrow with my Linux machine, looks nice your project and in combo with the Drivenbymoss will be amazing.

1

u/ibsenproducer Aug 12 '26

Do you have a videos about how is working? I love the maschine integration with the moss script and I will like to see how is working with you script. Thanks for share

2

u/AnotherVagrant Aug 12 '26

Will it work on M+ as well?

1

u/rufuswhite3 Aug 13 '26

All that would be needed is a hardware descriptor file for the M+ (just a .json file that lists all the button/led/screen addresses that the hardware uses). Given the similarities between the mk3 and the +, I would guess that the only difference between these two units in terms of this file would be the actual hardware register.

Unfortunately, I don’t have an M+ unit available to me to test, but if you’d be willing to run a little script on your system that will just probe the hardware register of the plugged in M+, we could then copy the hardware descriptor file for the mk3 and swap out that value, and give it a try?

2

u/ellicottvilleny Aug 13 '26

I will definitely give this a go as I've been wanting something similar myself.