Skip to content

Latest commit

 

History

History
86 lines (54 loc) · 4.69 KB

README.md

File metadata and controls

86 lines (54 loc) · 4.69 KB

Native Instruments Komplete Kontrol Light Guide and Screen Mirroring Support for Synthesia.

Running on Komplete Kontrol MK2 S

Running on Komplete Kontrol MK1 S

Features

Routes Synthesia lighting information to your Native Instruments keyboard controller USB device. Mirrors the Synthesia application window onto your Komplete Kontrol MK2 displays.

Auto-detects a Native Instruments S-series keyboard controller USB device. Listens on the 'LoopBe' MIDI input interface port. Notes received are forwarded to the keyboard controller USB device as key lighting requests adhering to the Synthesia protocol.

Additionally supports jogwheel and the 'Play' button for starting and stopping a session in Synthesia.

In Action

Chose your favorite lightguide colors or work with the defaults.

Lightguide Setup

Setup

You first need to configure your system and Synthesia to support our way of routing the lighting information to KompleteSynthesia. Please follow SETUP.md.

Use

Simply run KompleteSynthesia.app. First thing you will have to permit a bunch of rather intrusive application capabilities.

When running it the first time, the first thing you will be asked by your system is:

  • Allow for 'Input Monitoring'

    • this is needed for receiving button events from the Komplete Kontrol controller
  • Allow for 'Screen Recording'

    • this is needed for mirroring the Synthesia application window onto the Komplete Kontrol LCD screens

Then, when pushing the 'Play' button or using the jogwheel, the system will ask you for:

  • Allow for 'Accessibility'
    • this is needed for sending out virtual keyboard events to your system, recognized by Synthesia

Komplete Synthesia will detect your controller and show a little rainbow swoosh on the keyboard lights, signalling that it is up and running. The 'Play' button should be illuminated now just like the jogwheel. You will also recognise a little MIDI cable icon on the top right of your screen.

For finding out about the detected controller, click on the icon which will show a menu which contains its name. The displayed menu will additionally tell you if Synthesia was detected running.

Komplete Synthesia

Problems

  • No Native Instruments keyboard controller detected

    • Komplete Synthesia currently supports the Komplete Kontrol S-series
    • Make sure the keyboard is connected and powered on
  • MIDI interface port 'LoopBe' not found

  • Synthesia lighting only ever shows green keys (right hand), never blue (left hand)

    • Synthesia isn't setup the way we need it - we need "Finger-based channel" lighting
    • Make sure you followed the Setup documentation on Configuring Synthesia
  • All Keyboard LEDs show blue lights

    • Are you running any other NI applications while running KompleteSynthesia?
      • Some NI tools like KompleteKontrol.app do set the keyboard into something KompleteSynthesia just can not work with
      • Exit KompleteKontrol.app - you wont need it while using Synthesia
    • Use the "Reset" function in KompleteSynthesia drop-down menu

Background and Motivation

The approach and implementation of Komplete Syntesia in its early inceptions was closely following a neat little Python project called SynthesiaKontrol. Kudos and many thanks to Olivier Jacques [@ojacques] for sharing!

The inspiration for re-implementing this as a native macOS appllication struck me when I had a bit of a hard time getting that original Python project to build on a recent system as it would not run on anything beyond Python 3.7 for me. Another driver here is that I always took great pleasure from controlling hardware via code. As a result no third party dependencies are made use of - pure, native macOS code that will compile without hassle in 10 years from now.

Credits

  • Olivier Jacques [@ojacques] for the inspiring SynthesiaKontrol project
  • GoaSkin [@GoaSkin] for the inspiring qKontrol project
  • Thanks for invaluable help in achieving MK1 compatibility, Daniel Demmel [@daaain]