NI Komplete Kontrol mk1 and mk2 light guides with Synthesia

Collaborate with other modders to make Synthesia the way you want it.
Always the latest versions: [ colors.xml | ui.xml ]
Read the Getting Started topic to learn how important it is to MERGE YOUR CHANGES every time you download a new dev preview.
Post Reply
ojacques
Posts: 8

Post by ojacques »

Greetings,

Following the great work from anykey who came up with a first version for Komplete Kontrol MK1, Jason Bret who figured out more details on KK mk2 USB protocol, and Nicholas's support for custom lighting schemes, I wrote Synthesia Kontrol to use Synthesia in conjunction with Native Instruments Komplete Kontrol keyboards and their light guides.
I did this is for my son who started to be interested in keyboard playing through Synthesia Youtube videos!

It supports:
- Guiding lights during playback and different learn modes
- Different colors for left / right hands
- Different color for thumb

There are still rough edges and bugs here and there, which I probably need to work on with Nicholas, but you can see work in progress and code here:

https://github.com/ojacques/SynthesiaKontrol

Preview video:


Hopefully this can be useful for some of you too and be the base for native support of Komplete Kontrol Keyboards in Synthesia!
Last edited by ojacques on 03-24-19 6:53 pm, edited 1 time in total.
Nicholas
Posts: 13132

Post by Nicholas »

That looks really nice!
ojacques
Posts: 8

Post by ojacques »

Thank you for the nice words @Nicholas.

There is a version (Windows only for now) one can download: https://github.com/ojacques/SynthesiaKontrol#windows

I'm looking for testers for Komplete Kontrol MK2 25 and 88 keys, as well as KK MK1. Just reach out in this thread.
I don't expect MK2 25 or 88 keys to work yet. Nor KK MK1: I need to work on that. This is why I'd need testers...
a1vv
Posts: 3

Post by a1vv »

I have a KK S88 mk1, and I've been looking for a way to have the lights on my keyboard only light up when I press on the corresponding keys - as in having all the keys black except the ones I'm pressing down. I've tried both yours and Anykey's Synthesia-Kontrol, although I haven't gotten them to work. When I run anykey's 'komplete.py' it simply returns "No komplete device found", even though the keyboard is plugged in and works. Even if I were to get it to work with my KK, both of these programs are built to work with synthesia, which I don't use. It seems to me like it would/should be possible to write something that allows for the keylights to be triggered by the MIDI notes sent out by the keyboard.

I would love to help test SynthesiaKontrol out on my kk mk1 though, if that would be helpful. I'll mess around a bit and see if I can get something to work for me, but I'm not that good at python so we'll so how that goes.

EDIT: I found the product key for my keyboard (1410) and changed the product ID in anykey's code to 0x1410. Now it recognizes my keyboard when I run komplete.py.
a1vv
Posts: 3

Post by a1vv »

I managed to get what I wanted to work, as I posted on the NI-forums: https://www.native-instruments.com/foru ... 806/page-2

I'll see if I can get your code to work for my keyboard, I think I'd only have to change the offset and the way it sends colors, but I'll give it a shot.

Also, I think I figured out how to calculate the note offset, (offset=108-numkeys+1). The offset for my S88 was 21, and the offset for a S61 was 48. 108-88+1=21, 108-61+1=48. Could be useful when making a program like this easier to use, instead of finding out the offset yourself you'd only have to input the number of keys on the keyboard.
a1vv
Posts: 3

Post by a1vv »

I got it to work! I modified your code and made a version that should work with all MK1 keyboards, as long as you change the product id and input the right number of keys.

https://github.com/a1vv/KompleteKontrolLightGuide
Nabume
Posts: 1

Post by Nabume »

Thank you so much for developing this! It is wonderful, omg!

I have the S88 Mk2, here's the HID addresses incase anyone else wanted them :
device.open(0x17cc, 0x1630)
and the offset :
offset = -21 # To change when keyboard is not 88 keys
Anyone else with an 88 keyboard will need to search the code and replace "61" with "88"

Additionally, I've been trying to learn & play claire de lune with this script. Its immensely helpful and frustating at the same time (because, debussy was a god among mortals)

The reason why it's frustrating is because the 'note-off' message from the MIDI Keyboard triggers the lights off on the keyboard -- even If the upcoming synthesia chord has the notes of the previous chord in it. In claire de lune, sometimes all 10 fingers are on the keyboard, but during a chord change, the releasing of some of the notes triggers the notes off, even though the upcoming chord has those notes? Does that make sense? Im wondering if you can help me come up with a solution! Otherwise, this script is amazing :)!
ojacques
Posts: 8

Post by ojacques »

Thank you all for the very nice feedback and the willingness to help. a1v, nabume, your comments / your code helped me for a new release.

So, I have just released a new version which should support KK MK1 and MK2, 61 and 88 keys. It is only tested with KK MK2 88 keys, on Windows though.
* Code: https://github.com/ojacques/SynthesiaKontrol
* Releases/download (for Windows): https://github.com/ojacques/SynthesiaKontrol/releases
Naycin
Posts: 2

Post by Naycin »

Hello,
I really appreciate there is a solution to create lights for Synthesia on the Kontrol keyboard.

I'm looking for help to get this feature working. I've come to a problem i need to solve. Presently stuck at the "pip install hidapi" stage. Attached screenshot. Terminal response says -bash: pip: command not found
Can anyone help?

Regards
Nathan
Last edited by Naycin on 03-31-20 10:46 am, edited 1 time in total.
Naycin
Posts: 2

Post by Naycin »

I found success by adding 3 on the command line to make "pip3 install hidapi"
tillt
Posts: 4

Post by tillt »

Here is another project supporting the Komplete Kontrol S-series; Komplete Synthesia.

Komplete Synthesia works on macOS 11.0 and beyond.
SynthesiaRunning.png
SynthesiaRunning.png (43.85 KiB) Viewed 20188 times
[
Action.png
Action.png (935.8 KiB) Viewed 20188 times
See https://github.com/tillt/KompleteSynthesia for more.

Download the latest release from https://github.com/tillt/KompleteSynthesia/releases

Give it a try!
tillt
Posts: 4

Post by tillt »

Oh, now it additionally supports Synthesia application window mirroring onto the Komplete Kontrol LCD screens.

See it in action;

Image
Nicholas
Posts: 13132

Post by Nicholas »

Wow, I didn't realize they offered so much control (kontrol? :lol: ) over the device to do that sort of mirroring. Nice work on all of that!
Fannon
Posts: 5

Post by Fannon »

Really impressed with the screen mirroring. Just curious - how did that work? For sure not via MIDI interface 8-)

Thanks for putting this script out there. I used to have a Komplete Kontrol Mk2 (sold it recently) and used this a bit. But now I've got a LinnStrument and took your project as inspiration to create something similar for it.
tillt
Posts: 4

Post by tillt »

Just curious - how did that work? For sure not via MIDI interface 8-)
Hehe - no, not via MIDI. The screen is captured image by image using the Core Graphics API macOS offers. Those images are then converted into something the Komplete Kontrol can display. The converted image data then is transferred via USB bulk transfer to the controller. KompleteSynthesia operates at 24 images per second while it could do a lot more, at least on my machine.
tillt
Posts: 4

Post by tillt »

Extreme Setup for the LoLz

Display: Philips BDL8470QU/00 - 84" / 213cm
Keyboard: Komplete Kontrol S88 MK2
Attachments
ExtremeKompleteSynthesia.jpg
ExtremeKompleteSynthesia.jpg (4.43 MiB) Viewed 16711 times
Nicholas
Posts: 13132

Post by Nicholas »

This is one of my favorite ways to use Synthesia.

84" is larger than I've ever attempted, but if you can find a way to mount it on some sort of arm or tilting stand, you can get the bottom lip of the screen just above the tops of the keys. Next, get everything aligned using the "Custom" keyboard size mode (in the magnifying glass popup menu). (That mode disables snapping to the nearest key so you can align things just right.) Finally, use the little square that pops out when you pause the song to hide the on-screen keyboard.

At that point the on-screen notes fall directly to the real, physical keys and it's kind of a magical experience.
yabix
Posts: 1

Post by yabix »

Running SynthesiaKontrol.v1.4 + LoopBe1 v1.6 + Windows 11.

LoopBe detection fails:

Connecting to Komplete Kontrol Keyboard
Opening Keyboard device...
Turn off lights for all notes
Connected to Komplete Kontrol!
Turn off lights for all notes
Opening LoopBe input port
Error: can't find 'LoopBe' midi port. Please install LoopBe1 from http://www.nerds.de/en/download.html (Windows) or name your IAC midi device 'LoopBe' (on Mac).
Traceback (most recent call last):
File "C:\Users\jacqu\AppData\Local\Programs\Python\Python310\Lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 130, in run
File "C:\Users\jacqu\AppData\Local\Programs\Python\Python310\Lib\site-packages\cx_Freeze\initscripts\console.py", line 16, in run
File "SynthesiaKontrol.py", line 245, in <module>
NameError: name 'exit' is not defined

Version 1.3 works as intended.

Is there a way to get developer support to intergrate it directly in Synthesia? Would be a very good investment.
Post Reply