KORG nanoKONTROL 2 issues

Sorry, new to this script things…
Thanks @dhj and @pianopaul for the instructions, got it to work.

KORG KONTROL Editor works well to remap the CC# on the hardware side before it gets to GP to change things like this.

I don’t think he’s using a KORG device

You’re right @dhj … it’s a “KORK” device :laughing:

I have the same device and using the kontrol editor solved the issue for me.

You’re looking at the original post — the user who posted recently (klangschmied) is using a Faderfox UC44, not a Korg

@dhj yes it is Faderfox uc44, cou can change the CCs, but not with an editor, only on the hardware…

There is perhaps a solution using this GIG script I made just for the fun :nerd_face::

var
  AxEdge             : MidiInDeviceAlias // Define AxEdge as a RigManager alias to the real controller
  state              : Integer=0;
  CC0_mem, CC32_mem  : ControlChangeMessage;
  PC_mem             : ProgramChangeMessage;
  time               : Double = TimeSinceStartup();  
  stateDelay         : Double = 10.0; //in ms
  //
  CC0_remap          : Integer = 1;  // CC0  will be remapped to this value 
  CC32_remap         : Integer = 33; // CC32 will be remapped to this value 

Initialization
  SetTimersRunning(true); // We could also stop the timers when not necessary at State 0
End
  
On ControlChangeEvent(m : ControlChangeMessage) Matching 0 from AxEdge

  Select
    state == 0 Do state = 1;
                  CC0_mem = m;
                  time = TimeSinceStartup();
    
    state == 1 Do InjectMidiEventViaRigManager(AxEdge, WithCCNumber(CC0_mem, CC0_remap));
                  CC0_mem = m;
                  time = time - stateDelay;
    
    true       Do InjectMidiEventViaRigManager(AxEdge, WithCCNumber(m, CC0_remap));
  End 
End

On ControlChangeEvent(m : ControlChangeMessage) Matching 32 from AxEdge
  Select
    state == 1 && (TimeSinceStartup() < (time + 2*stateDelay))
               Do  state = 2;
                   CC32_mem = m;
    
    state == 2 Do  state = 0;
                   InjectMidiEventViaRigManager(AxEdge, WithCCNumber(CC0_mem, CC0_remap));
                   InjectMidiEventViaRigManager(AxEdge, WithCCNumber(CC32_mem, CC32_remap));
                   InjectMidiEventViaRigManager(AxEdge, WithCCNumber(m, CC32_remap));
    
    true       Do InjectMidiEventViaRigManager(AxEdge, WithCCNumber(m, CC32_remap))
  End
End

On ProgramChangeEvent(m : ProgramChangeMessage) from AxEdge
  If state == 2
  Then
    state = 0;
    InjectMidiEventViaRigManager(AxEdge, CC0_mem);
    InjectMidiEventViaRigManager(AxEdge, CC32_mem);
    InjectMidiEventViaRigManager(AxEdge, PC_mem);
  End
  
  PC_mem = m;  
End

// Called by timer ticking
On TimerTick(ms : double)
  Select
    state == 1 && (TimeSinceStartup() > (time + 2*stateDelay)) 
               Do state = 0;
                  InjectMidiEventViaRigManager(AxEdge, WithCCNumber(CC0_mem, CC0_remap));
    
    state == 2 && (TimeSinceStartup() > (time + 3*stateDelay)) 
               Do state = 0;
                  InjectMidiEventViaRigManager(AxEdge, WithCCNumber(CC0_mem, CC0_remap));
                  InjectMidiEventViaRigManager(AxEdge, WithCCNumber(CC32_mem, CC32_remap));    
  End
End

It is supposed to convert all CCO and CC32 but not those part of a MSB+LSB+PC sequence. I couldn’t really test it because none of my controllers accept to send a CC0 or CC32. But, I have great hope that it should work. :nerd_face:

@dhj
Compiling the script results in an error:
"Rackspace (Rackspace) - Semantic error in “Main”: Line 18, Col 4: Not valid in this script entity. "

Well, we said to do this in the gigscript, not in a rackspace script.

Thanks, got it. To test I have to dig out my old MIDItemp MP88…But the script did not solve my problem with the uc44, because the CC0 and CC32 remap to 1 and 33 colidate with already assigned ccs (and there are in a consecute order).

Well, then you have to pick different CC values for your mappings —

Replace 1 and 33 by what works for you.

1 Like

Yes, I know, I can do, but the uc44 has 8 encoders and 16 switchable banks, starting with cc00 to cc127…so no cc is free in the original setting of the uc44.

Why do you need switchable banks?

And you can use other MIDI channels for the converted CC0 and CC32.

1 Like

the default layout of the uc44 is programmed with 8 encoders and 16 banks, banks are easliy switchalble with 16 buttons …each bank with 8 encoders for each vst-plugIn.

Yes but in the GP world, you should use widgets to control plugin parameters, not direct MIDI messages

yes, I already started to use widgets.

Well, now I am a bit lost. If you, or if I modify the script for you the CC0 ch 1 and CC32 ch 1 will be converted as CC1 ch 2 and CC33 ch2 (or to any other channel of your choice. Thus you will be able to MIDI learn… widgets!… with your controller.

Is this what you want?

@David-san
now I get ground under my feet :slight_smile: