Korg Keystage61 ctrldev

I mentioned in a couple of previous posts that i’ve been wokring on a Korg Keystage ctrldev.
Whilst it needs a bit of work to tidy the code and make it a bit more reliable, I thought i’d upload a video demonstrating where i’m at so far.

As I went along, I created various views just to see what would stick as a workflow.
video starts in a ‘Chain Select Mode’, where volume, pan, mute and solo can be changed for a chain (if audio), then there’s a series of views for volume, pan, solo, mute and an alternative way of selecting a chain. There’s a mode which replicates the 4 zyncoders (of limited use).
Finally there’s a ‘device mode’, which switches to the device screen. The rotary knobs on the keystage adjust the 4 controllers and you can select each bank from the up/down buttons on the Keystage.
With the exception of the zyncoder mode, all the parameter names and values are displayed on the Keystage screen under each knob. The main mode is displayed on the main Keystage screen.
The knobs are unfortunately pots rather than encoders, but I spotted a way of using these in a pickup mode, which is bearable to use.
It’s not shown in the video, but both midi and audio transport has been implemented, using the ‘loop’ button on the Keystage as a shift key.

I’ve been learning Python as i’ve gone along, so there will almost certainly be better ways of implementing the functionality, but it’s proof of concept at the very least. Most of the code was based around the Korg nanokontrol2 ctrldev with some extras from a Mackie ctrldev posted elsewhere as well.
All the display aspects utilise the Korg Keystage native mode and sysex.

If anyone is interested further I can share my code, i’m just not sure if its fit for human consumption yet.

4 Likes

I can’t play the video. Is it me or are others also struggling? It seems to be a .mov (quicktime) video, I guess taken with an Apple device so maybe my Chromebook doesn’t support it… which seems odd!

1 Like

Ah, I did wonder. It was actually taken with an android phone, but was too large to upload. I quickly reencoded it to a smaller .mov, but that’s clearly not gone to plan.
Weirdly it plays in Edge and Chrome on my phone.
I’ll try and upload a fixed version later.

1 Like

I’ve replaced the original video, hopefully that’s viewable by all now.
I was conscious that the oleds on the Korg are quite small, so didn’t want to reduce the video quality too much.
(I think it was the h265 codec which broke things. Have used h264 at a lower res instead)

1 Like

Wonderful! I would be very interested. The Korg Keystage is a quite nice keyboard and it would be brilliant to use all the keys and buttons to control a Zynthian.

1 Like

I am particularly interested in how you are writing legends to the hardware controller.

1 Like

Wow! This is nice. Great job

Current code is in my forked repo here ;

Code is quite messy, but i’ve tried to add comments as best I can.

I’m not a programmer, and thought it might be an interesting project to learn some coding using python. I may have bitten off more than I can chew.
Its been a very iterative process with a lot of trial and error. I think there’s a fair bit of code duplication, and fairly certain a more elegant way of achieving all this.

@riban The Korg Keystage has a native mode documented in the midi implementation here -
https://www.korg.com/us/support/download/product/0/927/
Once you activate this by a particular sysex command, you can send data to the various screen locations using sysex.
In some cases I’ve hard coded the data before converting text to hex and sending to the keystage screens, in other cases i’ve grabbed the parameters and values from chain manager? before converting and sending.
There’s quite a lot of sysex info flying around and I’ve noticed a few quirks in occasional corrupted text and midi timing issues using external gear.
There’s a few other gotchas in that in Native Mode, the Keystage knobs have fixed cc numbers, which means the default cc (1) of the mod wheel will also act like rotary pot #2

2 Likes