Page 5 of 6

Re: Korg nanoKontrol Myr - A midi remote script for Live 8

Posted: Fri Nov 20, 2009 4:23 pm
by tigali
Sorry to be resurrecting this but I can't find the myr script in the midi pane of Live. It is definitely placed in the Midi scripts folder of Live but I can't get it in the midi pane. I'm on a MacBookPro if that's any help.

Re: Korg nanoKontrol Myr - A midi remote script for Live 8

Posted: Sat Nov 21, 2009 1:54 am
by delicioso
tigali wrote:Sorry to be resurrecting this but I can't find the myr script in the midi pane of Live. It is definitely placed in the Midi scripts folder of Live but I can't get it in the midi pane. I'm on a MacBookPro if that's any help.
You're looking in the Live app itself (show package contents) and not the remote script folder in Preferences folder, right?

Re: Korg nanoKontrol Myr - A midi remote script for Live 8

Posted: Sat Nov 21, 2009 11:52 am
by tigali
Yep. I know it's in the right folder, I was very careful about that but no joy in the midi pane.

Re: Korg nanoKontrol Myr - A midi remote script for Live 8

Posted: Sat Nov 21, 2009 12:33 pm
by tigali
Okay, figured it out. It was in the right folder but the wrong version of Live. I was looking for it in the latest version of Live but I'd placed the folder in 8.0.4.
Apologies for time wasting. :oops:

Re: Korg nanoKontrol Myr - A midi remote script for Live 8

Posted: Thu Dec 17, 2009 3:51 pm
by dentaku
oddstep wrote:Got it - sends[0] is the first send. St8 livecontrol script gave me the idea. Once again, "Nice 1" to myralfur, I would not have known where to look if he hadn't mentioned st8's work.Can't suss how to use a shift button to make the encoder switch to sends[1] though... :(
NICE, I was looking for a way to change PAN to SEND 1.

Now all I need is to figure out how to get the top row of buttons to be
Track On/OFF (without shift)
Solo/Cue (with Shift #1 held which is the 9th button)
ARM (with Shift #2 held which probably can't be the LOOP button because it's a part of Transport.py but what do I know about Python)

Maybe it's possible to make holding down BOTH 9th buttons be SHIFT #2?

Re: Korg nanoKontrol Myr - A midi remote script for Live 8

Posted: Wed Dec 23, 2009 2:42 am
by Trypset
thanks so much for this free file. I came, I searched, I found, I increased my productivity+fun.

Thanks man!!! This is the reason I bought the nanoKontrol today!!!

Re: Korg nanoKontrol Myr - A midi remote script for Live 8

Posted: Sun Dec 27, 2009 11:05 pm
by dentaku
If anyone would like to know, with the help of my cousin who writes software professionally I now have a slightly modified Midi Remote Script named nanoKONTROLMyrDentaku.

I figured out how to change the PAN to SEND [0] easy enough but I don't know anything about Python so today we got LOOP + buttons 1 to 16 to work as track.solo

So... for the top 8 buttons
Default = track.mute
Button 9 modifier + buttons = track.arm
Loop modifier + button = track.solo

It's a shame Live 8 doesn't record solo button automation :(
dentaku wrote:
oddstep wrote:Got it - sends[0] is the first send. St8 livecontrol script gave me the idea. Once again, "Nice 1" to myralfur, I would not have known where to look if he hadn't mentioned st8's work.Can't suss how to use a shift button to make the encoder switch to sends[1] though... :(
NICE, I was looking for a way to change PAN to SEND 1.

Now all I need is to figure out how to get the top row of buttons to be
Track On/OFF (without shift)
Solo/Cue (with Shift #1 held which is the 9th button)
ARM (with Shift #2 held which probably can't be the LOOP button because it's a part of Transport.py but what do I know about Python)

Maybe it's possible to make holding down BOTH 9th buttons be SHIFT #2?

Re: Korg nanoKontrol Myr - A midi remote script for Live 8

Posted: Fri Jan 01, 2010 2:56 pm
by dentaku
I'm now wishing I could figure out how I can add LOOP + ENCODERS = SEND 2 so I would have control over two sends instead of just one but it looks like it would be more complicated to add than it was adding the LOOP + BUTTONS = track.solo.
dentaku wrote:If anyone would like to know, with the help of my cousin who writes software professionally I now have a slightly modified Midi Remote Script named nanoKONTROLMyrDentaku.

I figured out how to change the PAN to SEND [0] easy enough but I don't know anything about Python so today we got LOOP + buttons 1 to 16 to work as track.solo

So... for the top 8 buttons
Default = track.mute
Button 9 modifier + buttons = track.arm
Loop modifier + button = track.solo

It's a shame Live 8 doesn't record solo button automation :(
dentaku wrote:
oddstep wrote:Got it - sends[0] is the first send. St8 livecontrol script gave me the idea. Once again, "Nice 1" to myralfur, I would not have known where to look if he hadn't mentioned st8's work.Can't suss how to use a shift button to make the encoder switch to sends[1] though... :(
NICE, I was looking for a way to change PAN to SEND 1.

Now all I need is to figure out how to get the top row of buttons to be
Track On/OFF (without shift)
Solo/Cue (with Shift #1 held which is the 9th button)
ARM (with Shift #2 held which probably can't be the LOOP button because it's a part of Transport.py but what do I know about Python)

Maybe it's possible to make holding down BOTH 9th buttons be SHIFT #2?

Re: Korg nanoKontrol Myr - A midi remote script for Live 8

Posted: Sun May 16, 2010 10:45 pm
by swishniak
first another thanks to james for this. ive been using it on alot of different projects and shows. . great script.

but recently ive been thinking it could be possible to consolidate all the functions i need onto one scene.

- first 8 encoders automap to macros
- first 4 sliders automap to the first tracks
- second 4 to 4 sends
- buttons like in the first Myr script (buttons mute / pads trigger)

im not sure how to implement this. tried doing it in the korg kontrol editor, but you cant chanege the channel of particular faders without the pot..

anyone with a tip on how i could easily change this on from the python side? i looked at the scrips and its all looks kinda hairy to me. thanks.

Re: Korg nanoKontrol Myr - A midi remote script for Live 8

Posted: Mon May 24, 2010 11:49 am
by swishniak
any ideas?

Re: Korg nanoKontrol Myr - A midi remote script for Live 8

Posted: Mon May 31, 2010 10:00 pm
by Myralfur
sorry for the delay in reply, i'm pretty busy with other projects at the moment.

there's no way to change around the functionality easily, without going into the python and editing it. i ran into the same problem with a track of controls on the nanoKontrol all needing to be on the same midi channel.

the script was a quick hack of another one, to be honest i'm still not sure how parts of it work myself.

i am however going to be redeveloping it using the Framework classes and possibly M4L, in M4L at least i'll be able to make it much more customizable.

think we're all stuck with midi mapping over the useful functions for the minute, myself included.

more updates when i can, and i'm glad you're enjoying it :).

Re: Korg nanoKontrol Myr - A midi remote script for Live 8

Posted: Wed Jun 23, 2010 5:26 pm
by oddeo
I am taking my first stab at Python and am wondering if someone can help. I generally understand the "if, then" style of programming, but obviously there is always more to it than that. I have taken Myralfur's code (seen below) and am trying to make a fairly basic change (or so I think). Slider 9 controls master volume on all 4 scenes. I would like for it to continue this functionality on Channel 1 (Scene 1) and Channel 16 (Scene 3) but bypass (transmit incoming messages) for channel 3 and channel 4.

Can anyone tell me what I will need to change in the python script to pull this off?

Thank you, Neil

P.S. I am looking very forward to the M4L version. Any guestimated ETA?




"""

import Live
import MidiMap
from consts import *

class SliderSection:
__module__ = __name__
__doc__ = ' Class representing the sliders on the NanoKontrol '

def __init__(self, parent):
self._SliderSection__parent = parent
self._SliderSection__mod_pressed = False



def build_midi_map(self, script_handle, midi_map_handle):
feedback_rule = MidiMap.CCFeedbackRule()
feedback_rule.channel = 0
feedback_rule.cc_no = NANOKONTROL_SLI9
feedback_rule.cc_value_map = tuple()
feedback_rule.delay_in_ms = -1.0
for channel in range(16):
MidiMap.map_midi_cc_with_feedback_map(midi_map_handle, self._SliderSection__parent.song().master_track.mixer_device.volume, channel, NANOKONTROL_SLI9, MidiMap.MapMode.absolute_14_bit, feedback_rule, 1)

for channel in range(4):
MidiMap.forward_midi_cc(script_handle, midi_map_handle, channel, NANOKONTROL_BUT9)
for slider in range(8):
track_index = (slider + (channel * 8))
if (len(self._SliderSection__parent.song().tracks) > track_index):
feedback_rule.channel = 0
feedback_rule.cc_no = NANOKONTROL_SLIDERS[slider]
feedback_rule.cc_value_map = tuple()
feedback_rule.delay_in_ms = -1.0
MidiMap.map_midi_cc_with_feedback_map(midi_map_handle, self._SliderSection__parent.song().tracks[track_index].mixer_device.volume, channel, NANOKONTROL_SLIDERS[slider], MidiMap.MapMode.absolute_14_bit, feedback_rule, 1)
MidiMap.forward_midi_cc(script_handle, midi_map_handle, channel, NANOKONTROL_BUTTONS[slider])
else:
break

for button in range(8):
Live.MidiMap.forward_midi_cc(script_handle, midi_map_handle, 15, NANOKONTROL_BUTTONS[button])

for slider in range(8):
Live.MidiMap.forward_midi_cc(script_handle, midi_map_handle, 15, NANOKONTROL_SLIDERS[slider])


def receive_midi_cc(self, cc_no, cc_value, channel):
if (list(NANOKONTROL_BUTTONS).count(cc_no) > 0):
button_index = list(NANOKONTROL_BUTTONS).index(cc_no)
if (cc_no == NANOKONTROL_BUT9):
self._SliderSection__mod_pressed = (cc_value == 127)
elif (button_index in range(8)) and (not channel == 15):
track_index = (button_index + (8 * channel))
if (len(self._SliderSection__parent.song().tracks) > track_index):
track = self._SliderSection__parent.song().tracks[track_index]
if (track):
if self._SliderSection__mod_pressed:
track.solo = (not track.solo)
elif track.can_be_armed:
track.arm = (not track.arm)
if self._SliderSection__parent.song().exclusive_arm:
for t in self._SliderSection__parent.song().tracks:
if (t.can_be_armed and (t.arm and (not (t == track)))):
t.arm = False

if track.arm:
if track.view.select_instrument():
self._SliderSection__parent.song().view.selected_track = track

elif (channel == 15):
track_index = (button_index + (8 * 0))
track = self._SliderSection__parent.song().tracks[track_index]
self._SliderSection__parent.song().view.selected_track = track

'''elif (channel == 15):
slider_index = list(NANOKONTROL_SLIDERS).index(cc_no)
track_index = (slider_index + (8 * 0))
track = self._SliderSection__parent.song().tracks[track_index]
self._SliderSection__parent.song().tracks[track_index].mixer_device.sends[0]'''

Re: Korg nanoKontrol Myr - A midi remote script for Live 8

Posted: Tue Oct 26, 2010 4:04 am
by Brian Ffar
Myralfur wrote:to be honest i never use panning live either, usually have the encoders mapped to some eq's and tempo for dj'ing. i can see that sends would be a lot more useful to most people so I've been thinking it through.

the best solution i can think of so far would be to have the top row of buttons act as track select when the Loop button is held on Banks 1 and 2. then once you've selected you're track you can hold the Loop/Shift button and the encoders will map to the first 8 sends of the selected track.
First of all, this script is absolutely STUNNING! I've been a mouse-click kind of guy for all these years, and this has singlehandedly allowed me to start thinking of new ways (for me) to control Live. Myr, thank you SO much for all of your hard work - you have changed the way I look at making music.

As for your comment, I definitely think this is also the way to go for sends. I would most likely put this on my Scene 4. Anyone have any ideas or made progress on this item?

Another way to do it would be to control 8 sends from Scene 1 (midi channel 1) by selecting the track (from scene 3 top buttons), and then back to scene 1 where holding shift, as the modifer, would allow you to control 8 sends (i.e. shift + encoder 1 would be send A on the selected track, shift + encoder 2 would control send B on the selected track, and so on).

As for Takeover, I actually have seen this fixed for the NanoKONTROL. I hope nobody minds me mentioning another commercial developer in this thread, but Stray411 (youtube) has developed a whole series of scripts (for pay), and in his videos, he shows that the takeover issue is solved. I'm personally looking for a DIY/open source solution, but if you're willing to pay, it looks like he's got some really impressive work going on at www.nativekontrol.com. I mention this site because it also looks like the 8 sends bank issue is solved as well.

Just an FYI

Re: Korg nanoKontrol Myr - A midi remote script for Live 8

Posted: Sat Jan 08, 2011 2:07 am
by styro
Hello!
found this script, wow!!! very cool!
tryed to make some modifications and was surprised
that is seems to work... oh gosh another language to learn (why couldent
they choose javascript or perl or something like c)
then i stumbled over the nanokontrol-scene-change-not-pickup-problem...
i think the eazyest way to solve this would be to check if the midichannel
of the last nanokontrol-event has changed -> means new nanokontrol-scene.
and then say live preferences nanokontrol midi-input toggle remote on/off
(then it gets again in pickup-mode.)
the only problem, is there a way to script this, making changes in the MIDI-preferences?
i didnt find something like an api or description that would allow this,
does anyone have a clue for this?
It would also be fun to controll the display zoom factor with a fader :-)

many thanks for any help!

peace
styro

Re: Korg nanoKontrol Myr - A midi remote script for Live 8

Posted: Sat Jan 08, 2011 2:20 am
by delicioso
styro wrote:i didnt find something like an api or description that would allow this,
does anyone have a clue for this?
I believe he mentioned in this thread that this script is based on ST8's LiveControl and LiveOSC apps which can be found on the monome forums.