old app: pages

  • i've just released an early beta version of an application i've been working on called 'pages'. the main project page is here:


    the v0.1 release can be downloaded from the 'Downloads' tab and documentation can be found on the 'Wiki' tab. from the documentation:

    Pages was designed to allow multiple applications to run simultaneously on a single monome device. One page (application) is in focus at any given time and will receive input from the monome and output led changes to the monome. The focused page can be changed by holding down the page change button (the bottom right button on the monome) and pushing another button on the bottom row.

    Pages doesn't make any sound on its own; it is intended to run alongside applications like Ableton Live and Max/MSP. It is not limited to these two applications and should work with any applications capable of sending/receiving MIDI and/or OSC. Think of it as a somewhat general purpose MIDI/OSC router for interfacing monome(s) with other audio applications.

    There are currently 5 pages available, and any number of monomes can be configured with any combination of these 5 pages. The pages adapt to the size of the monome you are using. Each page supports 8x8 (40h/64), 16x8 (128), and 16x16 (256) sized monomes and will automatically adapt based on your configuration.

    * MIDI Sequencer

    The MIDI Sequencer page turns a monome into a MIDI clock-driven step sequencer that sends MIDI note on/off messages. It has approximately 240 banks of 32x15 steps each (that's 32 steps wide, 15 instruments deep). Basic features such as copy and clear pattern/bank have been implemented, as well as a simple pattern generator and pattern alteration algorithm.

    * MIDI Keyboard

    The MIDI Keyboard is a basic keyboard interface that sends a MIDI note on message when a button is pressed and a MIDI note off message when a button is released. The buttons are automatically mapped to musical keys/scales. Up to 6 instruments can be controlled from a single instance of the MIDI Keyboard by sending MIDI note messages on different MIDI channels. The key and scale can be selected on the monome. Currently 4 scales are implemented with 12 keys, for a total of 48 possible key/scale combinations.

    * MIDI Faders

    The MIDI Faders page turns the monome into a set of virtual faders where each column represents the MIDI CC value of one parameter. There is a variable delay that controls how fast the faders move from value to value.

    * External Application

    The External Application page is used to route an external application (ie. mlr, boiingg, flin, dj64, etc.) through a page. This allows you to run multiple applications simultaneously on a single monome device and switch between them. For example, you could run mlr on page 1, bboingg on page 2, etc. You could also run quadrants or hub configured with a few applications of their own through a page.

    * Ableton Clip Launcher

    The Ableton Clip Launcher page is an interface to launch clips, stop tracks, or record enable/disable tracks in Ableton Live. It is currently implemented to use the LiveOSC project to communicate with Ableton Live (so you'll need LiveOSC installed and configured for this to work). It polls the state of Ableton Live and updates the page according to the state of the clips, so it is always in sync with the state of Ableton Live.

    please note that this is the first release of the application -- the documentation is incomplete, i'm sure there are bugs, etc. i will be improving the application and its documentation as i get the time. source code is also available and is licensed under the gpl. feel free to post any problems here or contact me on irc.freenode.net / #monome.


  • this is a video demonstration of a very early implementation of this concept. this particular implementation has no gui, can't be reconfigured except by recompiling, etc:


    the only pages represented here are the midi sequencer page and the ableton clip page. i'll try to do a proper video of the new application soon.

  • this is totally ideal for what i want to do. major props! cannot wait to test it out!

  • Hi phortran.

    Very nice, but where I can get the LiveOSC?

    And I understand the overall proposal, but how I make it works?



    Is that right that LiveOsc, just works on Windows?

  • hey ricardo,

    i'll write up a quick tutorial on the ableton wiki page:


  • Hi phortran

    I`m on Mac... so I will need to wait... :(

    Anyway nice work!


  • hi ricardo,

    here's the main project page for the LiveAPI (of which LiveOSC is a component):


    the project description claims that somebody has it working on os x but hasn't committed the code yet, so it might not be far off. you might be able to get ahold of him and get a copy of the code.

  • for some reason, the external application page is not getting added properly for me. it doesn't matter which order i add it in, it just never shows up in the menu or changes the window.

    i'm on a mac btw.

  • hey soundcyst,

    just to make sure, this sequence of events should work:

    file menu -> new configuration -> name it
    configuration menu -> osc settings -> hit save
    configuration menu -> new monome configuration -> set it up and save

    that should create a new sub window in the empty space with a page menu

    from there it should be page menu -> new page -> select external application from the dropdown

    you should then see the configuration panel for the external application page with prefix, hostname, osc in and osc out port settings. double check them and hit the 'update preferences' button and you should be good to go. let me know at which point in this process it's failing.

  • errors from command line, as discussed in IRC

    Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: javax/swing/GroupLayout$Group
    at org.monome.pages.MonomeConfiguration.addPage(MonomeConfiguration.java:111)
    at org.monome.pages.MonomeConfiguration.actionPerformed(MonomeConfiguration.java:141)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1882)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2202)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:334)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1051)
    at apple.laf.CUIAquaMenuItem.doClick(CUIAquaMenuItem.java:119)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1092)
    at java.awt.Component.processMouseEvent(Component.java:5602)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3135)
    at java.awt.Component.processEvent(Component.java:5367)
    at java.awt.Container.processEvent(Container.java:2010)
    at java.awt.Component.dispatchEventImpl(Component.java:4068)
    at java.awt.Container.dispatchEventImpl(Container.java:2068)
    at java.awt.Component.dispatchEvent(Component.java:3903)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4256)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3936)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3866)
    at java.awt.Container.dispatchEventImpl(Container.java:2054)
    at java.awt.Window.dispatchEventImpl(Window.java:1791)
    at java.awt.Component.dispatchEvent(Component.java:3903)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

  • aha! looks like GroupLayout is only available in java 1.6. i'll see if i can switch the layout manager, probably don't have time for it today, but in the meantime java 1.6 should work. when i get the layout manager switched it should be compatible with 1.5.

    thank you for helping find this! much appreciated!

    for osx, i believe this link should give you java 1.6 compatiblity:


  • update: i just uploaded a new jar file that should fix the 1.6 dependency, so no 1.6 update should be required now.

  • Phortran: Congrats on your program and your first bug!!

  • Congratulations! :-) guess your beta-testers weren't so bright :-P

  • ha! thanks guys ;) you were great, i switched out the layout manager at the last minute and hadn't sent a copy around for anyone to test. since i'm using java 1.6 it always worked fine, i never realized they only introduced it in 1.6. anyways i switched out grouplayout for another compatible one and actually downloaded and tested it on java 1.5 -- seems to work now. :)

  • i wonder whether it would be possible to have a page of radio-style buttons, grouped into rows, such that pressing a button in a row would deactivate the previously lit button in that row (and send a note-off), and send a new note-on for the pressed button. This would be very useful for doing more elaborate rack changes...

  • @lokey

    definitely! one nice thing about the way the program is laid out is that adding in new pages is a fairly easy thing to do.

    for the page you're describing, what would you like to call it? MIDI Toggles?

    maybe each row would correspond to a midi channel, and send note ons (and corresponding note offs) from left to right as c1, c#1, d1, d#1, etc..?

    let me know if this sounds good and i'll be happy to implement it, or let me know how you'd like to see it if i'm off track here.


    send your page ideas and i'll be happy to (try to) make them!

  • lovely app phortran, thanks! only problem seems to be i can't get the app to send light data for the page changes. the pages change fine in the app, but i only get light changes on the monome when a new page is added. when i try to swap back to an existing page the lights on the monome don't change. any ideas?

    osx 10.5.4, 40h.

  • thank you, glad you're liking it!

    you know, come to think of it, i might not have tied the page menu -> switch page function to actually change the page on the monome. my bad, i'll see if i can get that fixed.

    the easy way to change pages is to hold down the bottom right monome button and press another button on the bottom row. the layout for a 40h would be like:

    (this is the bottom row)

    those are supposed to be buttons above :) so you hold down the p-ch (page change) button and press one of the 1-7 buttons to go to the corresponding page.

    let me know if this works for you!

  • riiiiight. that shows me for not RTFM. lovely!

  • hello,

    version 0.1.1 of pages is available at http://code.google.com/p/monome-pages/downloads/list

    included is a fix for the page menu -> switch page feature (it will actually change the page on the monome now) and 2 new pages:

    * MIDI Triggers

    The MIDI Triggers page is a simple grid of MIDI trigger buttons. The buttons send MIDI notes when pressed. The buttons are organized in either columns or rows, and each column/row sends on it's own MIDI channel. Each row or column can be configured to act as toggle buttons instead of triggers. In toggle mode, a row or column's buttons will switch from on to off whenever they are pressed. In trigger mode, a row or column's buttons will stay lit while the buttons are held down.

    The MIDI Triggers page can be configured as a mostly-functional replacement for the Ableton Clip Launcher page if you haven't been able to get that working.

    * Machine Drum Interface

    The Machine Drum Interface page is a set of controls for controlling an Elektron Machine Drum (any version should work). It has 4 kit save slots, 4 kit load slots, it can initialize a new kit with random machines in each slot, and it sends random parameter changes to machines and global effects. Useful as a live performance tool or in the studio for crafting kits w/ randomness. This can generate some bizarre, other-worldly drum sounds. Other MIDI pages (like the sequencer) can be routed out to the Machine Drum as well (just select the appropriate midi output device in the page).

    See the Wiki for more information:


  • Im trying to run sevenUp along with monogrid128 with pages. I'm on a Mac. Has anyone tried this and have it working?

  • hey doostin,

    i have a feeling this is going to be difficult to setup. i haven't tried it myself. a few challenges that come to mind:

    1) sharing midi devices is generally bad, so make sure that both apps are using seperate midi devices.
    2) you'll have to use sevenup live as an 'external application' in pages. this is assuming it uses osc to communicate to the monome (i think it was using rxvt to communicate directly w/ the monome at one point, this probably won't work with pages or other apps). you basically need to figure out which ports and prefix it's using to communicate and set that up as an external application page in pages. generally apps will use 8000/8080 since these are the default ports, so you'll want to switch monomeserial to use 7000/7070 or some other set of ports to free up 8000/8080 for sevenup / pages communication.
    3) i know that sevenup live also has a concept of pages and paging, so it might get a little confusing. i believe it uses a different button to switch pages though so it should work though.

    i will try to set this up as soon as i get a chance and let you know if i have any success. assuming that sevenup only communicates to the monome via osc then it should be possible to run both applications. if i get it going i'll put up a setup guide.

  • I didn't have a problem getting it to communicate with the monome because makingnoise did switch it over to OSC.

    I did use ports 7000/7070 and did get the correct lights functioning from sevenUp. It uses the right column to switch between its 7 pages. And pages allows you to hold the right bottom button which was also working for me. The problem I had I guess was setting up the mIDI channels in pages. It uses 4 IAC outputs and one IAC input I believe. So I couldn't get any sound or MIDI into ableton...

    thanks for trying, im definitely not the expert here, haha. crossing fingers for you success!!

  • oh great, it sounds like the osc side of things works and it's just a midi situation. pages doesn't dictate which midi inputs/outputs you need to use so you should be able to just add a few more IAC devices (6, 7, 8, ...) and use those in pages, while using the original 4 or so for sevenup. let me know if this works out!

  • so good news, I have a keyboard, sequencer and sevenUp running simultaneously. I have the first two devices on IAC1/2. Then I start sevenUp on IAC 3 to IAC7. I have audio and lights! But on the stepper/sequencer there are random lights that are forced on/off. These don't affect sevenUp but are there. For example, in pattern select mode the top left light is always on. The one below that flashes once every two bars. It seems the looper (another page) works great and doesn't see any interference. When you select certain MIDI notes, other lights will light for now reason. (the pattern select is a 7x7 grid where you select diff MIDI notes for each row starting at C3 to F#3). In sequence mode, all the lights get forced on, on the last column. Again doesn't affect sevenUp. Looper and Melodizers are working great.

    MonomeSerial - 7000/7080. prefix 128.

    SevenUp - 8000/8080. prefix box.

    SevenUp MIDI clock - IAC3
    Stepper - IAC4
    Looper - IAC 5
    Melodizer - IAC 6
    Melodizer - IAC 7

    Also I tried to save the configuration and had troubles opening it back up... It was 3 pages. Should I be able to open the config and have all the pages set up still?

  • hey doostin,

    great news! thanks for the report. i'm going to give this a try today and see if i can fix any of the glitches you mentioned. the saving/loading should work, i wasn't aware of any issues, but if you want to send me the configuration file i'll see if i can reproduce any of the issues on my side. i have a few other non-related bug fixes that i'm planning on incorporating into a new release today, so hopefully some of this stuff can get worked out as well.

    thanks for testing!

  • new version is now available! pages v0.1.2 is mostly just bug fixes, but there's one new enhancement in the external application page. there's a 'disable led cache' checkbox, this should take care of the funny stuff in sevenup. i also fixed an error with saving/loading configuration, hopefully it resolves your issue doostin. you can get it here:



    almost forgot! for anyone using the ableton clip launcher page, there have been a few bug fixes, but i also had to update a liveapi file. you should download this file and put it in your remote scripts folder (see the wiki link below for the instructions):

    download this file:



    (at the bottom)

  • the 'disable led cache' worked great! that problem fixed with 7up

    i did a bit of playing around with saving various configurations. ie. 40h with seq/keyboard, 128 with seq/keyboard, then with external app. I was able to open some configs and not others. So after realizing that on these previous attempts I hadn't set any MIDI in/out in pages. Once you select an IN/OUT your config doesn't load. I'm not experienced enough to say if its a bug, I'll leave that to you :)

    unsuccessful with monogrid128 and sevenUp. when I started the virtual machine in chuck the tempo in live would drop by atleast 1/2. strange. but I can't even fathem a reason why, haha. good news was that it had it was running through pages!

  • glad to hear disable led cache works for you!

    can you email me a few config files that fail to load? i can't seem to reproduce that one on my side. dinchak at gmail.

    that chuck/tempo issue is bizarre, i wonder if it happens with pages out of the picture? there might be issues with sharing the audio driver between both applications.

    i also posted a minor bugfix release (0.1.3) which addresses a midi triggers page loading issue and the configuration menu getting redrawn. you can get it here:


    thanks to ricemutt for helping to test and finding these bugs.

  • I'll send you the configs tonight..

    Yeah I tried Monogrid with just sevenUp running and it had the same result, so it is not an issue with pages. I posted that also on the sevenUp page in hopes mtn would have some ideas.

    Regarding the driver issues, I used IAC 8/9 for monogrid and IAC 3-7 for SevenUp..

  • great thanks! i may send you a few test jars to make sure any potential fix works.

    ah glad to hear it's not pages specific, i wouldn't know where to start with that one ;) it almost seems like both apps opening up the audio driver might be causing issues (chuck and ableton), but really not sure on that one.

    that should work! i guess as long as each thing is using it's own IAC drivers then things should work right. also be sure that ableton doesn't have any of the outputs enabled on those IAC devices that you're using from pages/sevenup/other applications. i guess think of each IAC as two devices, an input and an output. as long as the input is only used in one place and the output is only used in one place then you should be golden.

  • So I was trying this out on my MidiBox based Monome clone last night, and I must say it's amazing. Pretty much the exact concept I have been trying to put together myself. Thank you and well done!

    I'm working on a max patch using the LiveAPI like your clip launcher page. One great thing about the API is that it will update your led's if you have a clip there. Using the MidiAPI you can get the state of the clip, playing, if it exists and triggered. In my implementation I have been using flashing leds to indicate if a clip is playing, a quicker flashing for a triggered clip and solid if a clip exists. Seems to be the best I can come up with without multi colored leds. I'm not even sure if that's part of the api, it might just be sent out via midi, I cant remember exactly. Any chance you add this feature to your page? Its really nice to be able to see if a clip exists in a give slot. I'm not even sure if you can do this with the LiveOSC stuff. Just thought I would throw it out there. Oh also do you plan on releasing the source for this project? Is it already available? I think this is a great concept.

    Thanks again,


  • hey luke!

    glad you like it and thanks for the kind words.

    the varying led behavior to represent clip states is completely do-able actually and not all that hard (i love liveapi). i'll see what i can to expand it as you described, i really like that idea.

    the application is completely open source and if you're interested in contributing i would be happy to give you commit access to the svn repository. you can browse the code here:


  • Excellent! I'll add myself to your group.

    Thanks again for your great work!


  • o, hey phortran, i have a slough of questions that arent really about the app... sorry.

    1.i found a post by you where you talk about looking for a way to trigger clips in LiveAPI. i have all but given up...but these 2 functions seem like something...i havent the slightest how to use them though.

    so this is a call for help. how do i use these? can you make them trigger recording? who is the man in the yellow hat, really?


    2. if you don't mind, how would i write song.song.undo (or song.view.undo, i am not sure)

    i am sorry to draw from your app. are the monome buttons mapped to functions automatically with the ableton page? if i have 2 pages, will they be discreet?

    i want to use my 40h to record loops on the fly. i have a particulare arrangement worked out with monome basice, but i want to have the freedom to move down in my set and reference old loops as the set moves on without much touching the computer.

    that was a bit longer than i expected.



  • hey griotspeak,

    no problem!

    preface: i'm using LiveOSC for everything now, but i'll include code from LiveOSC in hopes that you can translate it easily to monomebasic.

    1) i use the osc call /live/clip/play to trigger clips. a clip does need to be in the slot for this to work, and i haven't figured out a good way to record realtime audio in this way (honestly i haven't messed around w/ it much, i'm sure it's fairly easy). to trigger existing clips though:

    def playClipCB(self, msg):
    """Called when a /live/play/clip message is received.

    /live/play/clip (int track, int clip) Launches clip number clip in track number track
    if len(msg) == 4:
    track = msg[2]
    clip = msg[3]
    LiveUtils.launchClip(track, clip)

    that's the liveosc callback to trigger the clip. basically you call LiveUtils.launchClip(track number, clip number). that's really it, it seems to work for me. i do like recording midi loops on the fly, and to do that i just create empty midi clips, turn on loop mode for them, and set their length to whatever i want it to be. then when the clip is playing and the track is armed (and overdub mode is on) all incoming midi notes on the track are recorded into the midi clip. once the length of the clip has been reached it will loop back and play what you just recorded.

    2) undo is a big one i want to incorporate into my ableton clip page, so i haven't actually done this yet and have no idea if it works, but here goes..

    according to the LiveAPI documentation, undo() is a method of the song object. i would imagine it's as simple as LiveUtils.getSong().undo() (or redo()). i haven't tried it though so no idea if it works. i'm planning on enhancing the clip launcher next so hopefully i can add an undo button and verify for you if it works or not.

    don't be sorry for drawing from my app, sharing is caring. yes they are mapped automatically, and right now it doesn't make a lot of sense to have 2 ableton pages unfortunately because they'll basically mirror each other. i'm considering making other types of ableton pages as well, which is why i've kept the ableton osc configuration at the very top level of the application (so multiple pages could potentially share it).

    one feature i had in the old implementation of the ableton clip launcher page (and intend to add into this new one) is the ability to 'offset' the clips that the buttons control. the idea was that the far right column selects the offset, and the 7x6 buttons starting at the upper left button represent the clips. if the first offset was selected it would show/control the clips playing in the first 7x6 area of ableton. if the second was selected, it was start with the 7th slot down in ableton and go from 7-12, 13-18, etc. up to 42. so on a 40h/64 you could have 7x42 clips to control/record into/trigger/etc.

    i hope that last paragraph made sense, and i hope this helps you.

  • "one feature i had in the old implementation ..."


    that is what i am trying to accomplich for monome basic. the code does exactly that if i only want to tirgger clips that are there. the last column is static.

    Thanks. i kept failing trying to call song.song.undo() or song.view.undo() so it is great i find out i should have been using something else.

    Thank you again.

  • def getSong():
    """Gets a the current Song instance"""
    return Live.Application.get_application().get_document()

    that little bit of code...is so effing hot.

    Undo works.

  • yup, this is a great app... let's get some people writing new pages for it :D

  • Hi phortran.

    This a greate app with a lot of potential!

    Every things work fine with me except with "ableton Clip Launcher" page (I'm on vista): I'm only able of toggle buttons of row 7 without any response for ableton.

    I made every things like described in the wiki page but there is no trace of "LiveOSCBindings.py" in pages files or in LiveAPI files. Maybe it's the problem.

    In live, I select LiveOSC in MIDI / Sync tab but without selecting Input ou Output. Is it correct?

    Juste another question: on the monome we can select 7 pages from the last row wich is great! But couldn't we use all the other button to have 63 pages?

    Sorry for my bad english!

  • That sounds like a good idea. Press, for example, the top left button, hold it down and press another button to change to that page. Wht do you think?

  • hi felart!

    thanks for the kind words, i'm glad you're finding it useful.

    the liveosc stuff is a little confusing to setup, i've actually included a modified version of the LiveOSCBindings.py file that has a few extra calls (namely to get the arm/disarm track working properly). you'll need to download the modified version from here:


    direct link:


    after you download that, copy it over to the C:\Program Files\Ableton\...\Resources\MIDI Remote Scripts\LiveOSC directory and overwrite the one that comes with LiveAPI. you might also want to delete the LiveOSCBindings.pyc file in this directory, but it might not be necessary.

    you're right about setting up LiveOSC in ableton, you just select LiveOSC from the control surface dropdown (i think that's what it's called? don't have it in front of me) but you don't need to select anything for input/output.

    yes, and i've thought about that a bit, 7 seems like enough to me but if you find a need for more then i'll make it expandable to 63. :)

    thanks, and i hope that helps. let me know if you're still having trouble.

  • @dovemouse

    that idea is already being used, except it's the bottom right button. :) right now i'm limiting it to 7 total pages per monome (the other 7 buttons on the bottom row, although this is 15 for 128's and 256's), but i may expand it to allow for 63 on a 64/40h, 127 on a 128, and 255 on a 256 if people are feeling limited right now.

  • Yep, sorry...forgot how the app worked :)

  • no problem. :) just wanted to clarify.

  • i've started a simple todo list on the wiki to keep track of feature enhancements. if you have anything to add let me know! i'm hoping to get all of these features into the next release (probably tomorrow or sunday):


  • Hi phortran,

    Thanks for your help!

    I made what you said about LiveOSCCallbacks.py, but it's still the same problem: only row 7 buttons are toggleable and no communication with ableton. Is there no way to debug?

    For the todo list: add 2 velocity levels in midi SEQ like in sevenuplive!

  • good enhancement, added it. :)

    debug is a little tricky. i'll see if i can come up with a way of debugging it, maybe output some information to the console. essentially how it works is this:

    1) pages sends a request to ableton to get information on the current state of the tracks. this is a /live/track/info message from pages to ableton. the new LiveOSCBindings.py has a function called 'trackInfoCB' that handles this call.

    2) when LiveOSC receives the /live/track/info message it will send OSC messages back to pages indicating the armed state of each track. this should update the leds and toggle value of the variables that represent this state in pages.

    so i take it that pushing the 7th row buttons is not arming or disarming ableton either?

    if you haven't already, try deleting the LiveOSCBindings.pyc (the compiled version) from your ableton/resources/midi scripts/liveosc directory and restarting ableton--that should trigger a recompile. maybe it's not recompiling the new version of the script? kind of a long shot but maybe worth a try if you haven't already.

    otherwise i'll add some debugging to the console so we can determine where communication is breaking down.

  • I solved the problem!

    LiveTelnet must be installed in ableton/resources/midi scripts and the reference to python folder must be checked the "in __init__.py" file.

    So it gives me an idea for an other enhancement :)

    Add a parameter in AbletonClipLauncherPage to give the option to trigger 8 clips for a column. So MLR would be easy with follow action(but I don't know how to stop the clips, maybe 2 buttons pressed at the same time?).

    Thanks again, very cool app!!!!