Korg nanoKontrol Myr - A midi remote script for Live 8
Re: Korg nanoKontrol Myr - A midi remote script for Live 8
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
You're looking in the Live app itself (show package contents) and not the remote script folder in Preferences folder, right?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.
Re: Korg nanoKontrol Myr - A midi remote script for Live 8
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
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.
Apologies for time wasting.
Re: Korg nanoKontrol Myr - A midi remote script for Live 8
NICE, I was looking for a way to change PAN to SEND 1.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...
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
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!!!
Thanks man!!! This is the reason I bought the nanoKontrol today!!!
TrypseT
Live 8 Full (not suite), ES-1 MKII, Microkorg, MPC 1000, 2 1200's, Ms. Pinky's, OSX, Edirol FA-101, and a crate 'o' wax
Live 8 Full (not suite), ES-1 MKII, Microkorg, MPC 1000, 2 1200's, Ms. Pinky's, OSX, Edirol FA-101, and a crate 'o' wax
Re: Korg nanoKontrol Myr - A midi remote script for Live 8
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
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:NICE, I was looking for a way to change PAN to SEND 1.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...
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
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:NICE, I was looking for a way to change PAN to SEND 1.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...
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
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.
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
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
.
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
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 *
)
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]'''
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 *
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]'''
___________________
Live Suite 12 / Push 3S / MacBook Pro M1 Max 64G RAM / SS Prophet 6 / Moog Minitaur / TR-8S / Zen Delay / BigSky / Yaeltex Custom / APC40 Mk2 / KeyLab Mk2 / BCR2000 / FCB 1010 / UA Apollo 8 / other random gear
Live Suite 12 / Push 3S / MacBook Pro M1 Max 64G RAM / SS Prophet 6 / Moog Minitaur / TR-8S / Zen Delay / BigSky / Yaeltex Custom / APC40 Mk2 / KeyLab Mk2 / BCR2000 / FCB 1010 / UA Apollo 8 / other random gear
-
Brian Ffar
- Posts: 66
- Joined: Tue Oct 11, 2005 4:27 am
- Location: Chicago
- Contact:
Re: Korg nanoKontrol Myr - A midi remote script for Live 8
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.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.
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
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
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
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.styro wrote:i didnt find something like an api or description that would allow this,
does anyone have a clue for this?