Korg NanoKontrol Studio

Post Reply New Topic
RELATED
PRODUCTS

Post

Hello

I want to start coding the Script for this controller because I found no one.

Does someone knows which other controller script could I take as example to start with?

Thanks :)


I will upload the last versions here so everyone can use it

Post

You could look into the livid CTRL:R one... The livid script are pretty cool woth a prototypes framework for stuff like step sequencer and controls... Otherwise one of the newer ones like the maschine jam or behringer x-touch

Post


Post

Also you could look into the code from the akai midimix or the novation launchkontrol XL... Those are similar in the controls they have and could be a matter of only changing the midi notes and CCs they listen to

Post

That is what I was wondering now, how to know the notes and CCs which the NanoKontrol Studio uses.

I have seen things like this,

Code: Select all

var CC =
{
	CYCLE : 0x2E,
	REW : 0x2B,
	FF : 0x2C,
	STOP : 0x2A,
	PLAY : 0x29,
	REC : 0x2D,
	PREV_TRACK : 0x3A,
	NEXT_TRACK : 0x3B,
	SET : 0x3C,
	PREV_MARKER : 0x3D,
	NEXT_MARKER : 0x3E,
	SLIDER1 : 0x00,
	SLIDER8 : 0x07,
	KNOB1 : 0x10,
	KNOB8 : 0x17,
	S1 : 32,
	S8 : 0x27,
	M1 : 48,
	M8 : 0x37,
	R1 : 64,
	R8 : 0x47
};
, and I'm wondering how to get those values :neutral:

Post

well one thing you can do is have a callback set on midi, and just log its values... a code example of how I did it:

Code: Select all

...script setup ( loadApi and stuff)...

var SILENT = false;

function init()
{
  host.getMidiInPort(0).setMidiCallback(onMidi);
  host.getMidiInPort(0).setSysexCallback(onSysex);
}

function onMidi(status, data1, data2){
  log('MIDI:'+status + ' - '+data1+" - "+data2);
}

function onSysex(data){log('SYSEX: '+data)};

function log(msg){
  SILENT || println(msg);
}
The SILENT variable can be changed to true once you are done with the script so you dont have to manually comment or delete every println

Post

brunomolteni wrote: Tue Nov 20, 2018 3:45 pm well one thing you can do is have a callback set on midi, and just log its values... a code example of how I did it:

Code: Select all

...script setup ( loadApi and stuff)...

var SILENT = false;

function init()
{
  host.getMidiInPort(0).setMidiCallback(onMidi);
  host.getMidiInPort(0).setSysexCallback(onSysex);
}

function onMidi(status, data1, data2){
  log('MIDI:'+status + ' - '+data1+" - "+data2);
}

function onSysex(data){log('SYSEX: '+data)};

function log(msg){
  SILENT || println(msg);
}
The SILENT variable can be changed to true once you are done with the script so you dont have to manually comment or delete every println
thanks a lot! I'll check today :ud:

Post

brunomolteni wrote: Tue Nov 20, 2018 3:45 pm well one thing you can do is have a callback set on midi, and just log its values... a code example of how I did it:

Code: Select all

...script setup ( loadApi and stuff)...

var SILENT = false;

function init()
{
  host.getMidiInPort(0).setMidiCallback(onMidi);
  host.getMidiInPort(0).setSysexCallback(onSysex);
}

function onMidi(status, data1, data2){
  log('MIDI:'+status + ' - '+data1+" - "+data2);
}

function onSysex(data){log('SYSEX: '+data)};

function log(msg){
  SILENT || println(msg);
}
The SILENT variable can be changed to true once you are done with the script so you dont have to manually comment or delete every println
Sorry for my late reply...

Addid that code to my script I get something like this,

Image

My question is, from where are coming following values?? What do they mean?

Image

I guess those are "SYSEX", why I cannot see it if I'm calling the function,

Code: Select all

function onSysex(data){log('SYSEX: '+data)};

Post

Ok I got it... a controller can send CC or SYSEX or both :)

Post

Hey olaims those are hex versions of the same numbers you are getting on the console... Lookup hex conversion

Post

Ok, I'm using the CC numbers anyway and it is working.

I'm fighting to program the logic, but it seems to work :)

The only "problem" is that I have no idea of how to control the LEDs

I'll put the script on Github when I have some time

Post

For the LEDs Usually it's just a case of sending a midi note to the same note/cc that the control has.. for ex. If you want to turn on a led on a button that sends a note 50, just send back a midi note 50 to the controller... The velocity usually controls the color/behavior ( rgb color on Rgb leds, turned on/off/blinking )

Post

I just created a Github repository with my last version

https://github.com/olaims/nanoKONTROLStudio

Post

with the Index and so on.... I'm fighting because I don't know how to work with it on a dynamic way.

Also some groups are not working correctly with the Index, when the group is opened. It always jumps one index back when is out of the group, like

4 is a group
1-2-3-4-4a-4b-5-6
the index work like
1-2-3-4-4a-4b-4-5-6

With the lights not so much success but I'll try to investigate it further.

Post

AUTO-ADMIN: Non-MP3, WAV, OGG, SoundCloud, YouTube, Vimeo, Twitter and Facebook links in this post have been protected automatically. Once the member reaches 5 posts the links will function as normal.
Hello there! I've been working on taking olaims' script and cleaning up the code, and starting to add some new features (like jog wheel support).

Soaria nanoKontrol Studio driver (https://github.com/kayateia/nanoKONTROLStudio)

(github -> kayateia -> nanoKONTROLStudio)

I'm not planning on maintaining it super intensely, but I'm using it myself, and it works alright :) I still haven't fixed the LED support, but at this point, I probably won't... I've had to turn them off entirely to stop the "screen saver" distraction.

Post Reply

Return to “Controller Scripting”