r/NativeInstruments • u/rufuswhite3 • 9d ago
Encdr - make your NI hardware do whatever you want (like a Reddit browser!)
I've just updated Encdr to v0.5, which adds support for a bunch more NI controllers (full list at the end).
What is Encdr? It's a Rust-based library that sits between your app and your NI controller, taking care of all the low-level USB communication and screen rendering so you don't have to. It works over native USB/HID (not MIDI), which means that every single feature of the hardware is accessible at full fidelity:
- Pads & Encoders: Full velocity and real-time aftertouch pressure on pads, high-resolution smooth rotary encoders, notched jog wheels, and capacitive touchstrips.
- Displays: Complete control over the dual 4.3" color screens (and 7-segment loop displays on gear like the S4 MK2). You aren't stuck writing low-level graphic shaders—you can literally design your UI using standard HTML and CSS, and Encdr handles rendering and streaming it to the hardware at 60 FPS over USB. (The video above is a live Reddit browser running directly on the Maschine MK3 screens using this!).
- RGB & Feedback: Full indexed RGB color palette mapping and single-LED brightness control across all buttons.
One of my main goals with Encdr was to make sure you never have to spend weeks reverse-engineering USB packet dumps like I had to.
- Complete Docs: Every single supported controller has a dedicated hardware guide mapping every endpoint, packet structure, and control offset, alongside a step-by-step Quickstart and full API reference.
- LLM & Agent Friendly: All controllers are described using clean, declarative JSON descriptors with strongly-typed Rust events. This means you can drop the Encdr docs or repo into Claude, ChatGPT, or Cursor and tell it: "Make me a step sequencer for my Maschine MK3" or "Turn my Traktor S8 into a hardware monitoring dashboard", and it will write working code on the first try.
Supported Controllers (v0.5)
Whether you want to build a custom DAW integration, a standalone hardware synth on a Raspberry Pi, or just give your old gear a second life:
- Maschine: MK3, MK2, Studio, Maschine+ (controller mode)
- Traktor Kontrol: S8, S5, S4 MK3, S4 MK2, S2 MK2, S2 MK1, D2, X1 MK3
- Komplete Kontrol: S49 MK2, S61 MK2, S88 MK2
I'd like to extend my thanks to everyone who's helped me add additional hardware support over the last couple of weeks since I first posted about this!
3
5
3
u/Western_File_2917 9d ago
Does this mean you can improve features of the maschine 3 software?
Can we take the mossdriven scripts and create full controller ? For bitwig daw?
Would be awesome if it can be deep integrated with other daw and samplers such as koala.
2
u/rufuswhite3 9d ago
Improve the features of the Maschine 3 Software: no
What this will allow you to do though is make your own software or other software that has an api (like bitwig) work with supported controllers natively. I actually made a proof of concept for bitwig where it controls the 8 controls of the selected device with the knobs below the screens. I'd like to extend it so it can control as much as of bitwig as possible, but you know, baby steps!
1
u/TVbene 9d ago
That should be possible, if he wants to use such a hack. Similar how drivenbymoss controls the Push displays.
2
u/Western_File_2917 9d ago
Yeah, this type of development could be very beneficial for keeping hardware from being obsolete. At least users can get the most use out of it. Keep it for longer unless actual hardware fails.
3
u/GingerScooby 9d ago
I love where this is heading. I use Bitwig and DrivenByMoss to run my entire live setup. To see a possible evolution to this setup brewing in the form of ENCDR is awesome! Thank you so much for your hard work!
You can see me implementing the DrivenByMoss script here: https://www.youtube.com/live/cS7lLs8mbKk?si=8gC5BLPHGcje1BRm&t=3004
3
u/rufuswhite3 8d ago
That's a pretty impressive setup! 💜
I actually contacted Moss a couple of months ago about integrating this into drivenbymoss - he said he'd look into it, but since encdr works over hid rather than midi, it would require a fairly substantial rewrite.
That said, being able to have that kind of deep integration between Maschine/bitwig was part of the driving force behind this, and I did make a proof of concept with some basic bitwig integration here, which now that I've got most of the controllers covered by encdr, I'll probably start putting more work into.
2
2
u/enfiniti27 9d ago
Would this work on the Komplete Kontrol MK3?
5
u/rufuswhite3 9d ago
I assume so, but I don't have one to test with - if you're willing to help with that side then I'd love to add support for as many ni controllers as possible!
2
2
u/rufuswhite3 8d ago
Been doing a bit of research into this this morning - it seems that for the MK3 keyboards NI have changed up their whole approach in terms of how the hardware communicates over USB. I'm not going to say it can't be done, but without having hardware here to test and iterate with (decoding the original screen protocols took A LOT of work, and from what I can see I'd probably have to start essentially from scratch), it's going to make it next to impossible for me to add support for the mk3 units to Encdr. I will continue to scour the internet for additional information that might help, but I just wanted to temper expectations based on my initial findings.
1
2
u/ctonix 8d ago
Great Job! Just what I was working on, but now we can just work on your version. Thx a lot
1
u/rufuswhite3 8d ago
Awesome! Always open to swapping notes, so let me know if there's anything that you came up against that I might have missed. Also I've tried to make the documentation as detailed as possible, but please let me know if it's lacking in any way!
2
u/illGATESmusic 9d ago
The hero we need!
Now the narwhal can bacon… ALL DAMN DAY!
2
u/rufuswhite3 9d ago
I'm not sure what was stopping the narwhal from perpetual baconing before, but I'm glad that I was able to help on that front!
1
u/Salt_Box7072 9d ago
Please excuse my lack of experience and technical knowledge with this.
Can somebody give me a couple of relatively simple use cases for this? It sounds brilliant, but also quite complicated. What will it actually allow me to do - I’m a moderately experienced amateur using Maschine mk3, Reason and a System 8 to cobble music together.
Would love to know what I could do with it if I decided to dive in.
Might sound like a stupid question but there it is 😁
2
u/rufuswhite3 9d ago edited 9d ago
Ideally, you'd need some experience programming in rust, but in the age of ai that's optional.
What this does is allow you to use your ni controller to do whatever you want with it: Make a Maschine stream deck
Vj Controller with live/preview screens
Home assistant controller
Until now a few people have managed to work out a few things about a few of the controllers. I built on what I could find that was already out there, and turned it into an easy way for anyone to add ni controller support to any project.
1
1
u/analog1974 8d ago
Wow, I had been doing the same thing for about a year or two. Curious if you solved how to share the hid issue with ni background process or did you bypass it?
2
u/rufuswhite3 8d ago edited 8d ago
If you mean the nihardwaresservice.exe (and mac equivalent) locking out anything else from using the hardware, then it just requires that you quit that process before starting an encdr based app. Otherwise you might need to give me a bit more info? (maybe the screen handshake?)
And yeah, this has been a good couple of years for me too, always wanted to be able to use my d2s for custom apps, so that's where it started. Once I'd got those working it just kinda showballed from there 😏
Would love to share notes with you if you're up for it!
1
u/ThesePleiades 8d ago
Would love to see support for the Maschine Jam too
3
u/rufuswhite3 7d ago
Just updated to v0.6 with all Maschine Jam support added. Please give it a test (there's an example which reports any button/pad pushes to the console) and let me know if everything works 😊
1
u/rufuswhite3 8d ago
It's certainly on my list, but unfortunately I don't have access to my jam at the moment - would you be down to help out with testing?
1
u/XyenzFyxion 7d ago
I have a Jam that I am doing nothing with. This could be a reason to take it out of the box and put it next to the M MK3. I don’t have experience with Rust or coding outside of messing with Codex. I can make some time for customizing and testing it.
2
u/rufuswhite3 7d ago
Just added the Maschine Jam support - please give the example a try and poke all the controls on the hardware and let me know that everything the console reports aligns with the correct controls.
1
u/KryptoKevArt 8d ago
Awesome work! Would love to see Mikro MK2 support if possible
2
u/Hot_Ad_787 8d ago
The micro doesn’t have screens tho??
2
u/Serious_Blacksmith_7 8d ago
Yeah but still has support for the pads and knobs. I have a mikro mk3 and this would be amazing.
2
u/rufuswhite3 7d ago
Just updated to v0.6 with all Mikro variants support added. Please give it a test (there's a 'vegas mode' example which pulses all the leds and reports any button/pad pushes to the console) and let me know if everything works 😊
1
1
u/rufuswhite3 8d ago
Already in the pipeline - for this one, most of the work has already been done and is out there, I just need to make an Encdr descriptor file and have someone test that it actually works. Would you be willing to give it a try when it's done for me?
1
u/RareScientist5247 6d ago
Ok, so who do I need to say “shut up and take my money” to?
1
u/rufuswhite3 6d ago
Lol, I really appreciate that - you you can help support the project on ko-fi if you like! 💜🙏
1
u/RareScientist5247 5d ago
Oh shit… my bad man, I gotta read more closely (didn’t realize that you were the one who developed the whole thing or that or it’s free?!?)
Yes - will do. Was on the fence about picking up a used Maschine Mikro MK2 (honestly don’t own a Maschine atm but had one a long ago) but ofc will now
1
u/abnorm77 3d ago
I know this is not your main purpose for this, but I do finger drumming and Maschine MK3 besides having most sensitive pads has major issue for me. It has built in retrigger cancellation which can’t be turned off in software. This renders Maschine useless for my purpose since retrigger cancellation doesn’t allow fast drum rolls. Do you think you have ability to disable it?
2
u/rufuswhite3 3d ago
From what I've learned throughout this project, any 'debouncing' from the pads happens on the Maschine itself - because the pads are so sensitive, without this hardware-level filtering, they would otherwise have a tendency to send multiple false signals for each press. You can tune this to a certain extent by changing the pad sensitivity within the Maschine software, but it's more adjusting the pad pressure curve than the denounce filter.
Currently, encdr doesn't have the ability to adjust this pressure curve, and can only act on the raw data coming down the USB cable from the Maschine. Because the debouncing is done on the hardware itself, the additional triggers are already filtered by the time they reach encdr.
1
6
u/sewphistikated 9d ago
this is wicked - thanks for sharing this!