Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Sign In with Twitter

Tweaking Cntrl:r Ableton Live Script

edited July 2014 in Software Discussion

Hi there ! 

I've been using the Livid script for live for quite a while now and i realize that some changes in the layout would suit me better.
So what i want to do is get a 3rd row of sends instead of the pan section and use the prehear fader to control the volume of this 3rd send.
I would also like to set a maximum value for the eq section so that when the rotaries are all the way to the right it won't go past 0db (they normally go at 6db), but i'm not there yet.... 



  • edited July 2014
    ...based on this discussion, i managed to tweak the code to add the 3rd send but when i launch Live, nothing happens, the cntrlr is not assigned and i don't have the blue rectangle, which i don't understand as i only changed:
    channel_strip_send_controls = []
    for control in range(2):
    channel_strip_send_controls.append(self._dial_left[track + (control * 4)])
    to channel_strip_send_controls = []
    for control in range(3):
    channel_strip_send_controls.append(self._dial_left[track + (control * 4)])
    and:    self._mixer = MixerComponent(4, 2)
    to:       self._mixer = MixerComponent(4, 3)
    Thanks to anyone that can bring me any help, even moral support. I'm going crazy.
  • Help… :(

  • Hey mqzx, 

    Sorry for the delay in answering you, I've been out in the woods without internet for a bit.

    It looks like you've got it right, but maybe I'm missing something.  I pm'ed you my email, please send me your log.txt file and a copy of the script and I'll see if I can correct it for you.

    Regarding capping the max value of stuff at 0db, that's not easy to do.  You'd have to do something independent of the _Framework (which is heavily used for all this stuff), as Ableton doesn't provide a way to do this directly.  That's the reason you haven't seen it in any of my scripts (or anyone else's, for that matter).  It's a bit of a letdown.  I recommend just putting a "Utility" device in your tracks output stage and scaling the output down by 6db if it's that important.....there are other ways to get around it as well.


  • Hi amounra,

    Thank you for taking the time.

    I sent you the log file and the script via email, hopefully you will find what i did wrong.

    Using the utility could actually solve the capping issue, i hadn't thought of it, thanks !

    Also, i don't know if you will notice it but i've installed the mono framework, as well as the "hex" plugin but it doesn't seem work, i might be missing something, maybe you could help me.

    Many many thanks !

  • I can see right away what is going on from your log.txt file:  you've got your test script in a folder called:

    "Livid_CNTRLR Test"

    With the MIDI Remote Scripts folders, there can't be any spaces in the folder names.  If you rename it to:

    "Livid_CNTRLR_Test", it should work.

    RE:  Monomodular stuff, you'll want to grab the most current versions, which I've place in a new repository that is here:

    If you put the package in your Max/packages folder, and copy ALL of the scripts from the "Python Scripts" folder into Live's MIDI Remote Scripts folder, you should be in good shape.  Caveat:  make sure to remove any of the old monomodular files from prior versions or you may run into conflicts.  Let me know how it goes, I'm getting pretty close to releasing this stuff but I know there are still some bugs floating around.  

    One other thing:  you should back up your old _Mono_Framework folder from the Livid installer, as the new version is incompatible with the older scripts.  What I do is keep two versions of Live in my applications folder, and use one for the newer stuff (since its still in beta).  
  • The solution was right in front of me ! Thank you so much !!

    So the script is now working, the 4 bottom pots of the left section now control a 3rd send and i managed to assign the prehear fader (3rd on the right section) to the volume of the 3rd send by changing this : 

    for index in range(2):

    to this : 

    for index in range(3):

    I don't know if that's the right way but it works :)

    Regarding monomodular, i still can't get it to work. i tried putting all of the "Python script" folder into "MIDI remote scripts" but then when i use the "CNTRLR" script, everything seems to light up correctly except i've got 1 encoder lit on the top row (the 3rd one) when i click on it it becomes purple... And the HEX plugin still does not work, the pads are not recognized.... maybe i'm missing something. I'm using the final unfrozen version.

  • You'll want to use the mods that are in the "mod/patchers/Monomodular_b996/hex" path.  The files that were installed with older versions of Monomodular should be removed, as they have conflicting versions of some patches that will possibly override the new ones that were installed from the "Mod" repository.  

    A note about the new CNTRLR script:  things don't work exactly as they used to.  I'm still tweaking the behaviour here, but so far the best arrangement I've come up with for the top buttons, from left to right, is:

    1) Toggle modMode.  When in modMode, the currently selected mod in Live will be available to the controls.
    2) Toggle modLock.   If the currently selected device is a mod, turning this button on will keep the controls locked to that mod even when you've navigated away from the device in Live's UI view.
    3)  DeviceSelector.  By prefixing a devices name with "p1" through "p16", this enables you to quickly select a device in Live by pressing one of the 4x4 grid buttons.  This is a replacement for the old "modSlot" behaviour.
    4)  Toggle Translation mode.  This is the same behaviour as what the old script did when selecting an empty mod-slot.  It turns translation on and shifts all the controls to a different channel so they can be seen by Live for input to tracks or User Mapping.

    Again, it's super important to make sure you've removed any old monomodular files from Max's search path, they will definitely interfere with the new stuff from working correctly.  The easiest thing to do is add a shortcut in Live's file browser to the Monomodular_b996 folder inside the Max/packages/mod directory.  I'm trying to find a way to automate this for the release, but in the meantime its a necessary hazzard.


  • edited July 2014

    It's working !!

    As you suggested i created a duplicate of the to have things appear clearer, dragged the contents of "python script" into "MIDI remote script", removed older versions of monomodular-related things (pretty much everything i could find), and used the HEX provided in the max package.

    I'll play around with it this night and will keep you posted if anything goes wrong.

    Again thank you so much, you've been a huge help to me as i had never heard about python and remote scripts until about one week ago :)

    EDIT: just to clarify, i cannot use the custom script i wrote with the hex plugin, right ?

    EDIT2: to answer my own question: i just duplicated the "CNTRLR" script and modified it as i did before. It's working just fine !
  • If you get a chance to try out the "hex_proto" version, please let me know if you have any issues.  I've packaged things in a different way to ease with distribution and upkeep, but I've heard of some random crashes here and there and I want to see if I can duplicate them.....thanks!

  • edited July 2014

    I will test that.

    Quick question again. In the Max/patches folder i have a folder named "aumhaa_blocks" which is left from previous attempts. It seems that when i remove it neither "hex" nor "hex_proto" are working. Is that normal ? Should i leave it there ?
  • No, you should definitely trash it.  All the dependencies for the patches are in the "mod" folder, which should be in either Max/packages or ~/Documents/Max/packages.  If things aren't working, make sure that you have the "mod" folder in the right place.  Make sure to restart Live and Max after you've made these changes, otherwise Max won't rebuild the paths.  Let me know if you're still having problems, I'm still getting the hang of how this new Max "package" feature works on different OS's and whatnot.


  • So i removed the "aumhaa_blocks" folder that was in Applications/Max 6.1/Patches and put the "mod-master" folder into Applications/Max 6.1/Packages, restarted everything, but now hex doesn't work. 

    The mod doesn't seem to recognize the cntrlr: the pads don't light up and the encoder controls are all wrong.
  • Hey mqzx, 

    Thanks for trying this stuff, it's a big help for me!  There was a problem with the code for those two patches (some test parameters were still turned on that should have been turned off).  I've made a few small changes and updated the repository, please try downloading the package again and I bet things will work this time.  Let me know how it goes.  

    You shouldn't need to do anything with the Python scripts, I didn't make any changes to the _Framework or CNTRLR scripts.  Just replace the mod folder in your Max/packages and you should be good!


  • edited July 2014

    Hi amounra,

    Ok so it seems to be working now, i have removed the aumhaa_blocks folder and put the new mod folder into Max/packages. 

    However i noticed a strange thing: when i'm on the "add" mode, when i play, say a hi hat on a pad, the pad stays green, only the 1st pad lights red and when i play a sequence "live" it only adds the note to the first note of the sequence. I don't know if that's very clear but my english is limited to describe this kind of stuff....

    Also on the "select" mode the white pads stay white even when a note is played on them, i don't know if that normal.
    Another thing, when i launch hex it starts which some sequence already built in, in there a way to start it blank ?
    I haven't tried the proto version yet.

    Apart from that everything works fine (so far... :) )
  • Thanks for this.  It's intended behaviour that addMode doesn't change voices when playing notes;  I did this a while ago b/c it caused a lag when relatching to the new voice when playing multiple notes.....I have a fix for this but haven't implemented it yet.  One way to get around this is to go into settings and deselect all but select and add modes in the list on the right;  this allows you to cycle through ONLY the selected modes when pressing the bottom left two encoder buttons. I'll try to figure out a better way of doing this before release, I agree it's a limitation.

    re:  addMode only adding to first step.  Definitely a bug, I'll have a chance to fix that tonight.

    re:  selectMode staying white.  There will be an option for showing currently playing notes on the mutes or select pads before release.  I have to retool this a bit, as it was taking too much overhead sending all those notes.

    The release version will not have a preloaded sequence, but in the meantime you can clear all the presets by going to the settings page, enabling the "global" button, and pressing the "initialize preset" button.  This should clear out the entire palette, and you can then save the device as a preset an start from there.

    Thanks for the bug testing, let me know what else you find!  I'm almost finished with the all the b996 scripts, so I'll be spending quite a bit more time on finishing up the patches over the next week.


  • edited July 2014

    No problem, will test the proto version later but for now the hex seems to work nicely, i'll let you know if something goes wrong

    In the meantime i've been trying to assign the 4 right faders to a 4th send but i can't manage to do it the same way i did for the 3rd send and the 4 bottom pots of the left panel. Any hints ?

  • edited July 2014

    You need to comment the stuff above what you changed:

    """for index in range(2):

    You can do it like I did above by enclosing the whole block with three double quotes at the beginning and three more at the end.

    Then you need to add the faders to the array you are using to assign them:

    for control in range(3):
    channel_strip_send_controls.append(self._dial_left[track + (control * 4)])
    channel_strip_send_controls.append(self._fader[4 + track])

    I believe that will work, let me know if its not right though I'm not somewhere that I can check it.


  • edited July 2014

    It works perfectly ! Thank you so much amounra !

    Is it possible to select those 4 sends that i now have the same way i select the mixer channels but  with the shift button ?

  • They should be tied to your channel selection exactly the same as the other 3.  I'm not sure what you mean by "selecting" them.....can you explain further?

  • I mean, say we have four audio tracks in ableton, i can cycle trough them by using the buttons 5-8 of the 2row of the 2x16 button matrix on the cntrlr, to select which one i'm "viewing". Could it be possible to do the same with the sends ?

  • Not in a way that I can instruct you to do it here.   It would take some surgery, it's not really covered by the _framework methods.


  • edited July 2014

    Ok i figured it would be pretty complicated.

    By the way i noticed a strange thing, whenever i'm on a "mod" page, blank or loaded for example with hex, i lose the assignments that were made to the right faders (they're now controlling the D send). They return to their original assignment volume/volume/prehear/master.

    Thanks for taking the time !
  • Oh, right:  around line 877, in assign_mixer_controls(), you'll need to change the same stuff as you did in the other method.  Thanks for bringing this up....although chances are the CNTRLR script is going to change its internal structure quite a bit before release so you may have to do this stuff again unfortunately ;)


  • Perfect ! It's working, thanks a lot !!

    As long as the future changes don't make it more complicated it shouldn't be that awful...right ? :)
  • New changes will actually make it MUCH easier.  I'm looking forward to updating all of my scripts, it will make this sort of thing a lot more "instructable".


  • edited July 2014

    Hey amounra ! 

    I've been playing a bit more with the hex plugin (sorry not much time to get on the proto version but i will as soon as i get some), and i've noticed a couple of things:
    I've been trying the polyrec mode, it seems to work fine (even though i haven't been able to play melodies with operator yet, maybe you could help me out ) but whenever i play a sequence, instead of the blue notes on the cntrlr i get some red ones that are blinking when the red runner passes on them, i don't know if that's normal.

    Another minor thing: when the preloaded sequence starts, the quantization on the 1st chain is set to none instead of 4n creating some really scary weird beats... i haven't been able to find the init button yet... :)

    I'm starting to realize what this little thing is capable of, this is absolute madness ! You did an amazing job !!

    EDIT: i found the init button, seems obvious things are the hardest to find...
  • Polyrec:  I haven't messed with it since I made it a long time ago, but it sounds like its working correctly.  It does a lot more if you have an 8x8 grid like Ohm controlling it.  It only works correctly on MacOS, since it depends on the lh_midi external by Leigh Hunt....are you using OSX or Windows?  I can give you the rundown....

    Yes, there's a bug somewhere that's causing the selected sequence to get set to some kind of crazy note interval right after load.  I know about it and have been putting off fixing it....I'll try to make it a priority, it's infuriating.

    It's pretty intense.  I wanted a patch that would do all the rhythmic things I wanted to do all in one, with the ability to reassign voices on the fly.  It's still a work in progress, but its definitely getting there.  There's a great deal more to explore with an 8x8 grid, but it's still lots of fun with just the CNTRLR ;)

    FWIW, the init will be on the front page eventually.  I find a need for an easy way to clear a sequence.  There might even be a quick key in there somewhere.....


  • I'm running OSX, i would love some info about how to use it, if i understood correctly it's like an evolved (and presumably waaaaaay better) version of the livid synthstepper ?
  • It's more like polygome contained in the context of the drumsteppr.  Each voice can hold a sequence of notes that you program in via the controller in real time, but you can have multiple sequences running at the same time in the same "voice", and each one is transposed based on what note is triggered.  It's like a fancy arpeggiator for each voice.

    To get it working, you need to have an IAC bus activated and turn it's "Track" input on in Live's preferences.  Then, go into hex's settings and assign the IAC bus as the assignment for "Poly Output Port"  (it's the last setting in the top left block).  

    Now, when you change a voice's "channel" with the bottom left encoder, it will direct it to the "Poly Output Port" instead of out the hex device's output, so if you have IAC enabled correctly, it will come in through any of Live's track's inputs that are enabled with a matching channel.  You can also grab the device parameters of instrument in the new track by clicking "Detect Instrument", changing the right side of the floating window to from "Plug" to the corresponding MIDI Channel you have selected, and pressing the "Capture" button whilst the destination device is selected in Live's device view.

    I think that's about it....unfortunately its much more convoluted than it needs to be since Live doesn't support multiple plugin outputs, but once you get it figured out it will make perfect sense.  Let me know if something isn't clear.....


  • Hi Amounra, I tried out the script for the mods and it is great, however, when I set the banking for the faders and knobs to True in the file for the CNTRLR script, the script will not work anymore. There might be some minor things that need changing there.

Sign In or Register to comment.