|
|
|
06-22-2016, 03:22 AM
|
#1
|
Human being with feelings
Join Date: Feb 2016
Posts: 54
|
Native Instruments Komplete Kontrol Integration [OFFER]
Hi everyone,
Native Instruments Komplete Kontrol devices are these days really popular and its a pity that we cant use them as intended in Reaper.
So what is needed?
At first, and foremost, if you switch in Reaper tracks, the Komplete Kontrol VST plugin should recognize that (its manually switchable on the GUI by a button).
Whats already available?
Python scripts for Ableton who do all these integration stuff.
On Mac side: a OSC integration for Logic/Garageband (but this will not be helpful for Windows users...as the Native Instruments OSC Host Tool is only available for Mac)
Whats the offer?
I (and I am sure many others) offer some bucks for whoever is able to programm (the best would be a control surface integration but python script is also fine if its possible to achieve whats necessary)
Community Donation is also a way to get some more money for it.
I hope the community can make this possible... you contact me for more information about the controller, native instruments, komplete kontrol or whatever. best would be skype!
Thanks so much!
|
|
|
06-22-2016, 04:25 PM
|
#2
|
Human being with feelings
Join Date: Dec 2010
Posts: 3,826
|
Quote:
Originally Posted by xanthos84
Hi everyone,
Native Instruments Komplete Kontrol devices are these days really popular
|
Not so much, if they where, you can bet that somebody would have built support in Reaper.
__________________
Stop posting huge images, smaller images or thumbnail, it's not rocket science!
|
|
|
12-25-2016, 08:34 PM
|
#3
|
Human being with feelings
Join Date: Dec 2016
Posts: 21
|
I'd be really interested in this as well ! Willing to chip in, too.
I'd also add that it would be worthwhile if the SHIFT button and other functionalities were integrated as well. As it is now, only transport controls are supported, but there is count in and metronome toggle buttons that do not work (because they require the shift button).
|
|
|
12-25-2016, 11:50 PM
|
#4
|
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,688
|
Is the goal to have a reaper plugin directly talk to to the Komplete Kontrol hardware (via Midi), or does Komplete Kontrol come with a VST that should be installed in Reaper and manages the communication, or should the stand alone Komplete Kontrol software (that is VST Hosing software and hence a kind of DAW in itself) be installed and same is the target of the communication from/to Reaper ?
Once the appropriate donation (a KOMPLETE KONTROL S61 or S88) is here, I'll take a look .
-Michael
|
|
|
12-26-2016, 03:01 AM
|
#5
|
Human being with feelings
Join Date: May 2007
Posts: 66
|
Ableton uses the Komplete Kontrol vst to communicate with the daw using some python scripts. Using this method changing tracks on the DAW swaps the instance on the keyboard to the relevant setup and using the nav buttons on the keyboard does the same in Ableton. The great thing with the Komplete Kontrol vst is that it not only hosts the NI plugins with auto mapping but can host 3rd party plugs too.
Cubase uses a NI controller dll to communicate with the keyboard which causes the Komplete Daw midi output to send cc messages which are mapped to the metronome or count in, but the software is very buggy as a quick look on the NI Komplete Kontrol forums will show you.
I had a look at the Ableton solution but lack the technical knowledge to port/copy the code for Reaper.
It would be great if the Komplete Kontrol keyboards were supported in Reaper as the auto mapping feature is fantastic
__________________
The more plugins I get....
The Less time I use in making music!!
|
|
|
12-27-2016, 12:47 AM
|
#6
|
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,688
|
As Reaper includes Python script functionality, it should be possible to port the Ableton scripts instead of starting from Zero. And AFAIK, you can do a "Control Surface" (GUI) in Reaper using Python scripting.
-Michael
|
|
|
12-27-2016, 03:27 PM
|
#7
|
Human being with feelings
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 8,062
|
Quote:
Originally Posted by mschnell
As Reaper includes Python script functionality, it should be possible to port the Ableton scripts instead of starting from Zero. And AFAIK, you can do a "Control Surface" (GUI) in Reaper using Python scripting.
|
How is using Python any different from Lua or Eel for doing control surface stuff in ReaScript? (That is, any different from "can't really do it".)
__________________
I am no longer part of the REAPER community. Please don't contact me with any REAPER-related issues.
|
|
|
01-09-2017, 11:49 AM
|
#8
|
Human being with feelings
Join Date: Dec 2016
Posts: 21
|
Thanks for showing interest guys. I wish there was an easy way for the hardware to be available to you.
For what it's worth, here are the python scripts that Native Instruments provide to make it work with Ableton. Everything seems to start with the _ini_ script which calls the track focus functionality but also calls up something from Ableton called Framework.Capabilities.get_capabilities();
The scripts are lightly commented thankfully but I don't know python, nor do I understand how Reaper could use them. (see attachment)
|
|
|
01-09-2017, 12:32 PM
|
#9
|
Human being with feelings
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 8,062
|
Quote:
Originally Posted by kaeru
how Reaper could use them. (see attachment)
|
I would expect there is very little reusable code since Ableton Live and Reaper have a completely different API.
__________________
I am no longer part of the REAPER community. Please don't contact me with any REAPER-related issues.
|
|
|
01-09-2017, 01:30 PM
|
#10
|
Human being with feelings
Join Date: May 2007
Posts: 66
|
And to make matters worse NI have not released any documentation on the API of their keyboard software.
Did put in a request on the Native Instruments forum for Reaper to be supported so guess it's just a waiting game to see if any developer takes it on.
__________________
The more plugins I get....
The Less time I use in making music!!
|
|
|
01-09-2017, 08:08 PM
|
#11
|
Human being with feelings
Join Date: Dec 2016
Posts: 21
|
At the very least the scripts that trigger the desired komplete kontrol keyboard behavior can be used, they just need to be triggered from within reaper (perhaps via actions?). That would mean maybe getting the keyboard to react to track changes within reaper.
|
|
|
01-12-2017, 03:34 AM
|
#12
|
Banned
Join Date: Sep 2015
Posts: 1,650
|
Does the Shift button send a midi message or change the notes sent by the buttons?
|
|
|
01-12-2017, 06:58 AM
|
#13
|
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,688
|
Quote:
Originally Posted by Mark90
And to make matters worse NI have not released any documentation on the API of their keyboard software.
Did put in a request on the Native Instruments forum for Reaper to be supported so guess it's just a waiting game to see if any developer takes it on.
|
Provided it is based on Midi, it should not be too hard to trace the USB traffic and reverse-engineer the protocol...
-Michael
|
|
|
01-12-2017, 08:58 AM
|
#14
|
Human being with feelings
Join Date: Dec 2016
Posts: 21
|
Quote:
Originally Posted by snooks
Does the Shift button send a midi message or change the notes sent by the buttons?
|
I fired up my keyboard and reaper as well as midi-ox to check this. The keyboard shows up as 3 different devices:
1.Komplete Kontrol: only notes for music sent over midi
2.Komplete Kontrol DAW: transport controls sent over midi but not the shift or other buttons
3.Komplete Kontrol EXT: No data
Also, holding shift didn't modify the midi data being sent on any device.
I know the keyboard uses other protocols to connect to certain DAWs and it could just be that the shift button is not MIDI at all. I also assume the EXT device is for integration with certain other DAWs (either to send and/or receive data).
Is there something like MIDI OX for OSC data? I have a feeling it uses OSC to talk to Logic (where it has 100% full integration)
To get everything working in reaper we are instructed to setup the first device as MIDI, and the DAW device as a Mackie Control Unit.
EDIT:
while googling around to try and find whether komplete kontrol uses OSC at all, I found this
https://gist.github.com/jhorology/a8...7d2dbdad04011c
Seems like someone trying to get better integration with garage band by tapping into OSC messages. (I could be mistaken)
Last edited by kaeru; 01-12-2017 at 09:20 AM.
|
|
|
01-12-2017, 10:29 AM
|
#15
|
Banned
Join Date: Sep 2015
Posts: 1,650
|
You can use Wireshark for sniffing network messages. It looks from that github code that you need to init the keyboard with the sysex message, F0, 7E, 00, 06, 01, F7 to get it to start doing whatever fancy stuff it does. You can send that with MIDI-OX. Maybe recheck what the Shift button does after that via MIDI as well as checking the network activity?
Btw are you on Windows? I've made a control surface plugin that should do the transport buttons and display the track name on the keyboard whenever the selected track is changed in Reaper at the moment (not that this is too useful, but it's to check the format of the sysex message and I can't test it anyway). I see in the Logic integration that the Loop button is used as a shift key, but the shift key not doing anything is weird.
Hopefully NI will share the spec, it's a bit miserable of them if they don't and backwards engineering everything seems like a bit of a time hoover.
I've attached a zip of the dll just in case. I can't promise I'll finish it or anything, but I'll put it on github whenever I've had enough of fishing in the dark.
|
|
|
01-12-2017, 01:08 PM
|
#16
|
Human being with feelings
Join Date: Dec 2016
Posts: 21
|
Just checking in with some results, thanks again for your time with this.
I tried using the dll but unfortunately the transport buttons which worked previously stopped working with the new dll. I couldn't get any other behavior out of the keyboard buttons either.
There isn't really a place to display track names on the keyboard itself, maybe there was a misunderstanding here, I certainly do not want you to waste your efforts !!! And I thank you again for all your help.
I installed wireshark and all the little apps it comes with. I was able to see a reading on one of my usb interfaces for pretty much every button on the keyboard. I'll definitely try to record the data if it's useful to anyone (after I figure out how to filter out my mouse and keyboard T_T)
Following is just for clarification, just in case there was any confusion ! Ignore this if it was already obvious !
The "track focus" behavior users are looking for is hard to explain without a demonstration. Basically the keyboard has a light guide and parameter knobs that react to whichever instance of a specific VSTi plugin (KK) has focus. This can be achieved manually by bringing up a menu that populates all possible instances and picking the desired one. The hope is that since Ableton implements this through python, maybe the scripts that send the message to the keyboard to change instances automatically can be re-used. (there may also be a possibility through OSC apparently).
What should happen is two fold: when clicking on a track that has this VSTi in it's FX chain, a message to change focus to that VSTi it is sent to the keyboard. Secondly, the keyboard has up and down arrows (that do not seem to send normal MIDI messages) that can also be used to navigate through tracks.
Last edited by kaeru; 01-12-2017 at 01:13 PM.
|
|
|
01-12-2017, 01:29 PM
|
#17
|
Banned
Join Date: Sep 2015
Posts: 1,650
|
Whoops, I assumed from the Python scripts that there was a screen to display stuff on....
Code:
def send_to_display(self, text, grid = 0):
if(len(text)>28):
text = text[:27]
msgsysex = [240, 0, 0, 102, 23, 18, min(grid,3)*28]
filled = text.ljust(28) # 27 Characters
for c in filled:
msgsysex.append(ord(c))
msgsysex.append(247)
self._send_midi(tuple(msgsysex))
... obviously not!
Does pressing the play/loop button in Reaper not light up the play button on the keyboard as well as the buttons not doing anything in Reaper?
ps, don't worry about me wasting time, I love playing around with these kinds of thing.
|
|
|
01-12-2017, 04:06 PM
|
#18
|
Human being with feelings
Join Date: Dec 2016
Posts: 21
|
play, stop, record, loop, FF and RWD buttons all work as intended, lights and all, when pressed in reaper, when you set the right device in mackie mode. The shift button which could potentially give some metronome controls doesn't work but thanks to your suggestion we found that's just the natural order of things since it doesn't send any midi signal at all. It must be something that is processed within the keyboard itself.
With that said, I still have hope that clicking on a track in reaper could be tied to an action that runs the correct python script to make the keyboard's light guide and parameter controls react. Since the arrow buttons on the keyboard itself do not send any MIDI data, though, I am less hopeful about being able to implement browsing through the tracks from the hardware.
It would be impossibly hard to play with without having the hardware, but I really am grateful for whatever progress you make, I am sure it'll be useful down the line as others join in .
Ideally, NI would just implement an OSC or python solution for reaper. I don't even know if they've tried and given up or just thought it wasn't worthwhile, they're -really- tight lipped about it.
|
|
|
01-12-2017, 05:24 PM
|
#19
|
Banned
Join Date: Sep 2015
Posts: 1,650
|
Sorry, I was meaning the new dll - whether the transport works in either direction or none? I tested with MIDI-OX and it's definitely sending MIDI when using the transport controls, the notes (that I took from the Live Python files) with a value of 0 for off and 127 for on. So I'm surprised it isn't working (at least from Reaper to KK). It might be a massive error on my behalf or something to do with multiple control surfaces enabled or something else.
Btw, are you sure that the Shift and other buttons aren't sending Sysex? You need to make sure MIDI-OX is setup to show it, because I don't think it does normally (nothing in the Filter and Options->Pass Sysex).
The only other thing I can think of that would get the ball rolling is sending the "Garageband" Sysex that you discovered on GitHub.
Btw, as Xenakios says the Python scripts are not compatible with Reaper (apart from being in Python, but all of the stuff it calls is specific to Live). They've been helpful to show the MIDI notes for the buttons and the Sysex sent to update the state of the keyboard and the display (wherever that is), as well as some other hints though.
|
|
|
01-12-2017, 06:24 PM
|
#20
|
Human being with feelings
Join Date: Dec 2016
Posts: 21
|
Yessir, I have pass SysEx on and nothing checked in the Filter box as well as "Display SysEx in Monitors" checked on.
I tested the dll again to be sure, I get no reaction within reaper for play, stop or anything else
EDIT:
just thought i'd also include a picture of the device showing what the "guide lights" are and what the parameter knobs do. The display I think the scripts refer to must be the mini displays under each knob. Take a quick look !
pic
The lights mimic what you see on a kontakt virtual keyboard, where the notes are often in blue with keyswitches in red or green or other bright colors.
Last edited by kaeru; 01-12-2017 at 06:31 PM.
|
|
|
01-13-2017, 05:58 AM
|
#21
|
Banned
Join Date: Sep 2015
Posts: 1,650
|
Just to be 100% clear, so pressing the play button on the KK doesn't make Reaper play. But does pressing play in Reaper light up the play key on the KK?
edit: I've attached a new version with the MIDI input hopefully implemented, so the transport keys (except FF/RW) should work both ways now. If they don't then this process isn't going to work!
Last edited by snooks; 01-13-2017 at 06:38 AM.
|
|
|
01-13-2017, 08:01 AM
|
#22
|
Human being with feelings
Join Date: May 2007
Posts: 66
|
Hi Snooks, thank you for your effort in creating this dll.
The file does work as intended, when play is pressed in Reaper the keyboard play button lights up and when the play button is pressed on the keyboard the play works in Reaper.
The transport on the keyboards uses the MCU control surface protocol as detailed here
https://support.native-instruments.c...st-Integration
The problem is how the other buttons (shift,encoders,cursor keys) are implemented as they do not send any sysex when pressed (although the dll Cubase uses to control the keyboard unlocks this and the buttons then send the extra data via midi).
Thank you for your efforts
__________________
The more plugins I get....
The Less time I use in making music!!
|
|
|
01-13-2017, 08:22 AM
|
#23
|
Banned
Join Date: Sep 2015
Posts: 1,650
|
Cool, at least the basics are not broken!
Does sending the Sysex message "F0, 7E, 00, 06, 01, F7" (from the Garageband file) start the keyboard sending Sysex from the other buttons?
edit: I've attached a version that should send that Sysex.
Last edited by snooks; 01-13-2017 at 08:53 AM.
|
|
|
01-13-2017, 10:53 AM
|
#24
|
Human being with feelings
Join Date: May 2007
Posts: 66
|
Just tried the latest dll, sorry the other buttons are still not sending any midi data at all.
Looked at the github reference quoted earlier and that is using the NIHostIntegrationAgent which loaded by Mac OS only, there is no NIHostIntegrationAgent on windows machines loaded. SEE POST BELOW
__________________
The more plugins I get....
The Less time I use in making music!!
Last edited by Mark90; 01-13-2017 at 02:45 PM.
Reason: Mistake
|
|
|
01-13-2017, 02:44 PM
|
#25
|
Human being with feelings
Join Date: May 2007
Posts: 66
|
Just had another look tonight, NIHostIntegrationAgent is running as a Windows Process.
When I load Cubase 8 the following sysex is sent from Cubase to the keyboard
F0 00 21 09 63 75 62 61 03 00 00 00 00 00 F7 F0 00 21 09 63 75 62 61 04 00 00 00 00 00 F7 F0 00 21 09 63 75 62 61 05 00 7F 00 00 00 F7 F0 00 21 09 63 75 62 61 06 00 00 00 00 00 F7 F0 00 21 09 63 75 62 61 07 00 00 00 00 00 F7 F0 00 21 09 63 75 62 61 08 00 00 00 00 00 F7 F0 00 21 09 63 75 62 61 09 00 00 00 00 00 F7 F0 00 21 09 63 75 62 61 0A 00 00 00 00 00 F7 F0 00 21 09 63 75 62 61 02 00 00 00 00 00 F7
(found out using LoopBE monitor)
and the encoder and 2 buttons start sending CC values
But when I send the same cubase sysex to the keyboard using midi ox nothing happens.
__________________
The more plugins I get....
The Less time I use in making music!!
Last edited by Mark90; 01-13-2017 at 02:55 PM.
Reason: Incorrect Sysex Dump
|
|
|
01-13-2017, 02:50 PM
|
#26
|
Banned
Join Date: Sep 2015
Posts: 1,650
|
It was worth a bash, there must be some secret code involved although I don't understand how kaeru observed USB traffic when pressing those buttons.
Anyway I've hopefully got a nice FF/RW implementation that works during playback. Four levels of FF or RW scrub, press multiple times to step through speeds. If it works.
It's attached here, I at least want to get all the transport working nicely so that the ball is in NI's turf with allowing their customers access to the thing that makes their product what it is.
edit: I hadn't read the message above. That's great detective work and also frustrating because the magic key eludes us.
Last edited by snooks; 01-13-2017 at 03:08 PM.
|
|
|
01-13-2017, 02:58 PM
|
#27
|
Human being with feelings
Join Date: May 2009
Posts: 29,260
|
Quote:
Originally Posted by snooks
It was worth a bash, there must be some secret code involved although I don't understand how kaeru observed USB traffic when pressing those buttons.
|
I've read none of the thread but from a geek perspective, Wireshark has a USB traffic component as of late that allows you to trace USB communication between the computer and hardware. There are other methods since USB is often just COM wrapped but that depends on who it is and what they are doing.
__________________
Music is what feelings sound like.
|
|
|
01-13-2017, 03:09 PM
|
#28
|
Human being with feelings
Join Date: May 2007
Posts: 66
|
Snooks, Thank you so much for having a go I appreciate your efforts.
After firing up Cubase again I realized how buggy NI's integration is with this DAW so if they can't get it right...
Will try your new dll file.
Thanks again.
__________________
The more plugins I get....
The Less time I use in making music!!
|
|
|
01-13-2017, 03:24 PM
|
#29
|
Banned
Join Date: Sep 2015
Posts: 1,650
|
@karbs: interesting... I don't understand how the keyboard is sending messages to the driver that aren't MIDI though when there is no driver on OSX. Maybe the keyboard is made aware via the Windows driver that it's on Windows and the driver is eating the commands? I'm a bit weirded out by it.
It's all a big ding dong on NI's behalf over hiding MIDI from a couple of buttons imo.
@Mark90: no worries... thanks for testing my increasingly non-buggy/useless thing. Since I fixed the length of Sysex bytes maybe the set display thing does something now when changing tracks in Reaper - could you check to see zero happens on the display?
|
|
|
01-13-2017, 03:43 PM
|
#30
|
Human being with feelings
Join Date: May 2007
Posts: 66
|
Just tested the new dll and..
The play/Record/Stop functions work in both directions (reaper to keyboard, keyboard to reaper)
The Loop button only works from Reaper to the keyboard.(the keyboard loop button lights up when loop is enabled from Reaper but pressing loop on the keyboard is not triggering Reapers loop function)
The RWD and FFW work when play is pressed and moves the timeline not the playback marker line
And sadly nothing happens when you change tracks on Reaper.
Thanks again.
__________________
The more plugins I get....
The Less time I use in making music!!
|
|
|
01-13-2017, 04:07 PM
|
#31
|
Banned
Join Date: Sep 2015
Posts: 1,650
|
Thanks for the clear feedback. Could I just ask whether a note off is sent when you released the Loop button on the KK? If so, is it a note-on off (NoteOn vel 0) or an actual Note Off (what velocity?)? The loop button is supposed to work when released so that it can be used as a shift with the rotary encoder a la the Logic integration. Maybe NI have hidden the note-offs too (you b'stards!)!
The FF/RW was a boo boo, I thought scrub would work but it does only work in stopped mode. Would you be happy with FF/RW altering the playrate in increments or just do a bar skip or something?
|
|
|
01-16-2017, 05:21 AM
|
#32
|
Human being with feelings
Join Date: May 2007
Posts: 66
|
Hi Snooks, sorry for not replying sooner.
The loop button sends the data D6 (56) note on at full velocity (f7) when pressed and D6 note off at 00 velocity when released.
Please note as I stated in a few posts ago that the transport uses the Mackie MCU protocol and as such already works with Reaper, so without sounding ungrateful for your efforts, please don't spend too much time on this as the basic functionality is already there.
Thanks again.
__________________
The more plugins I get....
The Less time I use in making music!!
|
|
|
01-16-2017, 02:12 PM
|
#33
|
Banned
Join Date: Sep 2015
Posts: 1,650
|
No worries, I realise it might seem a bit daft reinventing the wheel here, but it's honestly no hassle and once the transport controls are redone (which they should be, will post later) then the code will be ready for adding the funky functionality on if/when NI release the/a secret key.
From the Logic spec the transport controls have more than one function when unlocked so the process isn't completely nuts because at that point the MCU implementation goes of the window. At least it smells that way with the loop button needing to react to button up rather than down, even if the MCU compatible messages were still sent on their own port, which it doesn't sound like they can be.
Last edited by snooks; 01-16-2017 at 04:33 PM.
|
|
|
Thread Tools |
|
Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -7. The time now is 01:15 AM.
|