Korg nanoKontrol Myr - a midi remote script for use with the nanoKontrol and Live 8

  • I've been working on a midi remote script for the Korg nanoKontrol to provide some extra functionality and work a bit better for my setup when used with my monome.
    I'm finding it especially useful when running mlr into ableton and needing to record things quick without changing back to the Clip Launcher page.

    It's largely hacked from the old decompyled python scripts with some extra functions from ST8's LiveControl app.

    Hope you guys find it useful.

    -----------------------------------

    nanoKONTROLMyr

    A midi remote script for use with Ableton Live 8 and the Korg nanoKontrol.

    Set-Up
    1. Download and Unzip the file.

    2. Move the nanoKONTROLMyr folder to the MidiRemoteScript folder within your Ableton Live application folder.

    3. Open your Korg nano series editor and load the presets within the NanoKontrol Presets folder, over-writing your previous settings.

    4. Select nanoKONTROLMyr as a control surface in the midi pane of the preferences window, and select nanoKontrol as the input.

    Mappings

    Banks
    Bank 1 controls tracks 1 - 8
    Bank 2 controls tracks 9 - 16
    Bank 3 maps the encoders to the selected device and provides functions for moving tracks and devices.
    Bank 4 is free for mapping to whatever you like, sending on midi channel 4.

    Global
    The Ninth Slider is Always mapped to Master Volume, regardless of bank or midi channel.
    The Ninth Encoder is Always mapped to Cue Volume, regardless of bank or midi channel.

    Transport
    Transport functions only work when receiving midi cc numbers on channel 16.
    Different functions are called when in session view and arranger view for some of the buttons. The Loop button acts as a Shift to allow more functions to be called with the other transport buttons.

    Loop = Shift
    Play = Play (Scene Launch when Shift held)
    Stop = Stop (Stop All Clips when Shift held)
    Record = Record (Overdub On/Off when Shift held)

    Session Specific
    Rewind = Scene Up (Scene Up by 5 when Shift held)
    Forward = Scene Down (Scene Down by 5 when Shift held)

    Arranger Specific
    Rewind = Cue Position Left
    Forward = Cue Position Right

    Encoders
    The Encoders map to the Pans of the tracks. When sent on different midi channel numbers they map to different tracks. Channel 1 maps to tracks 1 - 8 and Channel 2 maps to 9 - 16 etc.
    When sent on midi channel 16 they map to the selected device. This works in conjunction with the pads and buttons sending on channel 16 which provide functions for moving track and controlling devices.

    Sliders
    The Sliders map to the Volumes of the tracks. The tracks they are mapped to changes with the midi channel they are sent on. Channel 1 maps to tracks 1 - 8 and Channel 2 maps to 9 - 16 etc.
    There is as yet no function for when they are sent on channel 16.

    Top Row of Buttons
    The buttons on the top row turn Tracks On/Off. The Ninth Button on the row acts as a Shift and when this is held the other buttons Record Arm the tracks. They function the same as the sliders and encoders in that they map to tracks depending on the midi channel.
    However, when sent on midi channel 16 the buttons select and view tracks 1 - 8 mapping the encoders above to the first device in that track.

    Bottom Row of Bottons/Pads
    The buttons, or pads, on the bottom row Trigger Clips. The Ninth Button on the row acts as a Shift and when this is held the other buttons Stop the relevant clips. They function the same as the sliders, encoders and top row of buttons in that they map to tracks depending on the midi channel.
    However, when sent on midi channel 16 the buttons provide various functions for controlling devices.

    Button 10 = Track Left
    Button 11 = Track Right
    Button 12 = Device Left
    Button 13 = Device Right
    Button 14 = Bank 1
    Button 15 = Bank 2
    Button 16 = Device On/Off
    Button 17 = Clip View/Device View

    For any questions regarding this script contact:

    Myralfur - james@waterworth.org.uk

  • I like it. I've actually been setting mine up very similar to this, but not quite as in depth. I'll give it a try and see if it suits me. Thanks for sharing!

  • let me know what you think!

    the instant mappings can always be overwritten, but if you've got any issues with it or extra functions you'd like i'll try and add them in.

    enjoy.

  • this rocks... really smart layout and the shift functions give you just about everything you need to work efficiently with ableton.

    so if i want to use the functions above that are specific to midi channel 16 do i simply use scene 3 for that? or is the right way to specify channel 16 via the kontrol editor?

    also i think i understand now how the banks work but was a bit unclear at first, the only thing that doesn't seem to be working for me now is the device left and device right functions (i assume they function like the arrow buttons on the apc)...

    thank you for sharing this, great stuff.

  • also appears to have been picked up by the almighty CDM blog and some good info/feedback there as well... ;)

    http://bit.ly/qm2L9

  • @ Lauer303

    Thanks a lot man.

    The documentation could have been clearer on banks and channels, it was late in the morning when I finished the last bit of code and did the write up.

    The nanoKontrol presets I provided set Bank 1 to send on Channel 1, Bank 2 on Channel 2, Bank 3 on Channel 16 and Bank 4 on Channel 4. This allows the Banks to map to the tracks described and Bank 3 to control devices.

    I mentioned the midi channel information in case anyone has a nanoKontrol setup they already like using and want to add ableton live control to different Banks. For instance if you're only using 8 tracks or below you can change Bank 2 to send on Channel 16 and have Banks 3 and 4 on the nanoKontrol free for whatever you want. Similarly if you use up to 24 tracks you could change Bank 3 to send on Channel 3 and Bank 4 to Channel 16.

    Here's where it can get a little confusing. There's also a second type of 'Bank' I put in the documentation. Apart from the nanoKontrol Banks there's also a Bank in Ableton Live Effects. For instance if you're using a standard effect or synth in Live, as opposed to an instrument or effect rack with only 8 knobs, they generally have more than 8 controls you'd like to access. The Bank 1 and 2 controls on the bottom row of buttons on nanoKontrol Bank 3 allow you to change the encoders to control other functions of you're selected device.

    I've noticed there's more than 2 possible banks for some of the Live synths with lots of controls and I'm hoping to change the buttons to skip up and down between the 4 possible Banks instead of just selecting between Banks 1 and 2.

    As for Device Left/Right I'm really not sure why that wouldn't be working. One thing to note is that with the Live API there is as yet no option for locking to nested devices, or individual devices within an effect or instrument rack. You unfortunately need to seperate all you're effects or divide them into separate racks with smartly mapped macro's. Hope that was the reason for this problem, otherwise I'll have to have a look at the code on someone else's computer if possible, because it seems to work fine on mine.

    Glad you're enjoying it.

  • Fixed a few bugs.

    Stop buttons now work a bit better, don't cause any errors when there's no clip to stop, and basically act more as track stop buttons than individual clip stops. So the clip doesn't have to be in the currently selected scene to stop.

    Also added the extra two banks available to some of ableton's larger effects. When on Scene 3 you can now hold down the 9th button on the bottom row and press the Bank 1 and 2 buttons to gain access to Banks 3 and 4.

    Oh and why I was calling the Scenes Banks I'll never know. It was far to early in the morning when I first finished the documentation. So I've updated it a bit and promise to call the Scenes Banks no more.

    My attempts to add control of sends and the ability to select a Take-Over mode other than absolute have so far failed miserably.
    I'm pretty busy with some other projects at the moment, so I'm not giving up, just don't have the time right now.
    When I do get the time I'd like to add control of sends to Scene 3, or whichever you put to send on Channel 16. The sliders are free, and with track select already set-up on that Scene it should allow you to select a track and then have the sliders mapped to sends 1-8 of that track.

    If anyone else wants to have a go at adding this functionality I'd love to see how you do it.

    Enjoy for now tho.

  • Oh and I just found the old version for Live 7 I made, it's not really complete, it's missing some functionality of the new one, and without Live 7 I can't really test it or add the new functionality that easily. But try it out if you're still using Live 7.

  • just made an edit for SubFunk on the ableton forum.

    it switches round the track mute and record arm function so record arm is activated without shift held, and track mute when it is. also changes the stop clip function on the bottom row to solo/cue.

    however, doing this made me realise i never really use track on/off, i use record arm more often and that solo/cue is pretty useful, specially for me DJ sets.
    so if no ones got any objections I'm gunna be changing the top row of buttons to record arm and then solo/cue when shift is held.

  • Latest version of my script for the Korg nanoKontrol now up at the top.

  • Slightly necroing this thread because of some...troubles I've had with it.

    Followed the instructions above to the letter with a download from CDM and this topic and it still doesn't work right.


    The first fader always controls the 3rd channels volume, the 9th fader controls that channels panning, etc.


    Any ideas whatsoever how I could fix this? I'm on a vista machine and Live 8.1.1

  • The only thing I can think of that would cause that behaviour is not changing the midi cc's the NanoKontrol is sending out.

    The download comes with a preset which you need to upload to the NanoKontrol using the Korg Kontrol Editor, overwriting you're previous settings.

  • Aye I tried that, although it's entirely possible I'm doing that bit wrong.

    I'll try some more things with that.

  • When you upload there's two options. Upload to scene and... something else I can't remember.

    Anyway one of them's right, one of them not, can't remember which unfortunately, but try both. Do any of the Scenes work, tracks 9-16 on Scene 2?

  • My face is indeed red now.


    That was exactly what was wrong, I got slightly ahead of myself. Works perfectly now.

    Thank you :)

  • Hej...
    Great work...
    I tried to make my own version of both versions... where the upper buttom is to set the track on/off and the other would be to arm the track...
    Would it be a big thing to do this?
    Best wishes
    Jonas

  • Haven't worked on this in a long time. I'm quite busy with other projects and the Live Clip Chopper M4L app at the moment. If you have a look in the SliderSection.py and Pads.py files it's a very easy change to make.

    Once I get the time I'm going to be re-writting this patch to utilize the new Framework classes and possibly making an M4L version that'll be much more configurable.

    Good Luck.

  • did it...after 3h learning python and a lot else...

    here my version with the lower button to arm and the upper to mute/unmute

    have fun

  • I just bought a nanoKontrol and your script is amazing.

    Finally i have it running perfectly ;)

    Thanks!

  • dude I found out about this earlier today too! Lovin it

  • btw is there anyway to get takeover mode to work with this?

  • This has been working incredibly well. However, after spending hours trying to muscle through the py scripts, I'm unable to do something which I'm sure some of you more adept coders can handle.

    I've already changed the default action for encoders in banks 1 and 2 to manipulate sends instead of pans. However, sends[0] only applies to Send A. I'm trying to define button 9 as the modifier in the Encoders script so that I can manipulate Send B (Sends[1]?) by holding down button 9.

    Any ideas?