M4L Control Monome - Now with Clip Launcher, Clip Chopper and Device Control

  • M4L control is a collection of M4L apps and abstractions designed to help anyone create their ideal set-up in Ableton Live, using whatever hardware devices they have available.

    The idea is that you drop in one M4L device, named M4L Control Hub, which queries the Max 4 Live API for the IDs of all objects within the set, and stores them within appropriately named Coll and Value objects accessible to any other M4L device. The device then uses these IDs to set up appropriately named Send, Receive and Value objects for every major function and value within the Live API.

    There is also a collection of satellite apps which communicate with the M4L Control Hub and set-up individual controls and configurations on your hardware device. For instance M4L Device Control, an app which allows you to set the Appointed Device, this is the highlighted device or device with the blue hand, and then control it using 8 macros.

    In the pipeline there is also a Clip Launcher, Mixer, new version of Live Clip Chopper and a Midi Input Device for Drum Racks and the like.

    Although so far apps can only be controlled by Midi Mapping or the monome, the plan is to develop a mapping device which allows the user to plug in any Midi, OSC or HID device and be able to map any of the controls to any of the functions within the Live API.

    This will also allow users to create custom apps for the monome using a few buttons for functions from the Live Mixer, some to control a Live Device, some to Launch Clips and some to Chop Clips. These configurations can then be saved with the live set, but also stored as presets and dropped into any new set.

    Although this is still some way off I have abstracted out as much of the code as possible along the way, providing small functionally concise and well commented chunks of code which can easily be edited to create any set-up you'd like, providing you've got a little bit of max experience or are willing to learn.

    So as I've finally got a stable base to start building the Clip Launcher and other apps on top of I thought I'd release the main M4L Control Hub device with all of its abstractions. Hopefully it'll prove useful for creating any other device you'd like using the Live API or for learning about it and exploring it.

    I've also included the first device I've built with it: M4L Device Control, and a version for the monome.

    This app maps the first 8 macros of the Selected Device to faders on the first 8 columns of the monome. For the moment the other functions are midi mappable, however I'm planning a function row with lots of extra goodies, pattern recorders, storing a few device ids to recall quickly without moving around the tracks etc.

    To get this to work drop the M4L Control Hub onto any track, then drop either the M4L Device Control or M4L Device Control Monome Patch onto any track.
    Click Go on the M4L Control Hub patch to start everything.
    If using the monome patch then click the Connect Button.

    See bottom of thread for latest download revision.

  • Thanks

    Sounds awesome!

  • very cool! wil giv ehtis a try today

  • looks great. will give it a whirl today! any improvements on timing for LCC? is this something a M4L update could fix?

  • You.
    Are.
    The.
    Man.

    I will check this out as soon as I get the chance.

    ExPairOfMentalists

  • amazing :D
    let me know if you need any help with patching solutions. i know big projects like this can get overwhelming!

  • I just had a litter of kittens! Can't wait to dive into this after the weekend.

  • ...

    Downloading.......

    It is possible to get colour info from clips? I have an rgb clone and I want to get the feedback in it!

    I will help in the remote scripting side... any wiki or web? Let's gonna do it here?

    ^^

    ...

  • ...

    Sooo beautyful work... I'm shocked!

    Explain this a bit more please...

    "To get this to work drop the M4L Control Hub onto any track, then drop either the M4L Device Control or M4L Device Control Monome Patch onto any track.
    Click Go on the M4L Control Hub patch to start everything.
    If using the monome patch then click the Connect Button."

    One hub at master (ie?) and how many control devices?

    I'm excited (but I'm new to max integration... I'm learning the remote scripting side...)


    THANKS A LOT!

    ...

  • ...

    doubled sorry


    ...

  • Wow it's great! superb work.

    I'm utilizing it on my 256 I'm wondering if the second half could be split to serve different functions perhaps? That would be pretty powerful. To have full macro controls of a device on one side and then say, a multi octave keyboard on the other half.

  • thanks myr, can't wait to sink my teeth into this!

  • Glad you're enjoying it guys.

    More to come, soon as I build it.

    Had a bit of a revelation yesterday about ways to get all the IDs. I've gone back through the M4L Control Hub.amxd and it's subpatchers redoing the way it gets large sections of the IDs. I've switched from using poly objects to just iterating through everything one at a time. It's actually much quicker and takes up less headroom.

    There is now no limit to the amount of Tracks, Scenes or Devices it gathers the IDs of. There is a limit of 32 for Device Parameters, if anyone does actually need to go over this it's very easy to change.

    It's also set up now so that the two things there aren't live observers available for, Devices and Clips, can now be updated much quicker. You can update the Devices and Parameters on a Track by individual Track. With Clips you can now update by Track and also individual Clip within a Track.

    It's possible there's a way to check whether Clips or Devices have been dragged in or all deleted, once I've found it, it'll be possibly to have it all update automatically.

    Everything else updates all the IDs appropriately, i.e deleting or adding a track or scene.

    The names of a few different things have changed slightly, so make sure you DELETE ALL OF THE OLD REVISION otherwise when using them together some things might not match up.

  • @ Mudo

    Instructions for use:

    1. Drag M4L Control Hub.amxd onto a Track in Live.

    2. If using just a Midi Controller drag M4L Device Control onto a Track.
    If using a monome drag M4L Device Control Monome onto a Track.

    3. Click the "Go" button at the top of the M4L Control Hub device.

    4. If using a monome now click the "Connect" button at the top right of the M4L Device Control Monome device.

    You can click the "Open" button on M4L Control Hub to view all of the code, in which you can view most of the IDs within the dark blue coll objects or within message boxes within the dark green patcher objects.

  • @ XPM

    Cheers man, cool to know it's you on the forums now. Let me know how it goes.

    @ Dovemouse

    I'll let you know if I'm having a brain block on any code, but have a look through it and let me know if you can think of anything to improve it, or anything to add.

    @ emergencyofstate

    I'm planning to build a collection of apps including a Clip Launcher, Device Control, Midi Input, Clip Chopper, Mixer and Sequencer. I'm trying to make them all scaleable to any size, but for my personal set-up the aim is to have the monome split into 4 different 8x8 apps. Which I can switch and route around on the monome by triggering a clip, or scene with that clip on.

    @ watson
    Still seems a few people are having trouble with aspects of timing in M4L. As far as I can tell there's nothing that can really be done to improve it at the minute. After getting most of this finished I'm going to be building a version of Loop Shifter to work with the monome, loading samples into buffers in max rather than moving the clip play head. It just doesn't seem to be stable enough at the minute.

  • @ myr - excellent! can't wait. I used the objects for hours yesterday. very cool indeed.

  • Revision 3
    --------------

    Few updates to the M4L Control Hub.amxd, now on revison 8.
    It now collects all Device IDs into one value object, and all Device Parameters into one coll object. Using those it collects the names of all Devices and all Parameters in the format for sending to a umenu.

    More to come.

  • ...

    Thanks for the step guide... and check!

    http://createdigitalmusic.com/2010/07/21/monome-meets-max-for-live-control-new-album/

    Mudo = Mutis Mayfield (at Facebook)

    ;)


    ...

  • Revision 4
    --------------

    Few more updates to M4L Control Hub.amxd, now on revision 9.
    Now collects all Track, Scene, Device and Parameter names.

    @Mudo

    Ah cheers man, good to see it up on CDM :).

  • are there any videos of this in use?
    Id like to see it in action before i give it a go....

  • Looks like a fantastic tool, but is there a way to make it work with Launchpad?

  • hey. sorry guys been away for a few days.

    more updates to come soon, few more big developments in the code. to make it easy to create, mixer and clip launcher type apps.

    @ scubasteved
    just got myself a cheap webcam, gunna be putting up some tutorials and videos soon as i've finished off a bit more of the code and have the clip launcher and mixer to demo as well.

    @ oivindi
    to make M4L device control work with a launchpad you could use a monome emulator. if you search the monome forum or ableton live m4l forum there's links, downloads and documentation.

    unfortunately i don't have a launchpad and can't really afford to get one, a native launchpad version would however be pretty easy to set-up if you've got one to test on.

    only a very small amount of this code is specific to the monome, about two subpatches i think. everything else is setting up re-useable code that is useful for any work with the Live API regardless of what hardware you're using.

  • Alright it's not quite finished, and if anyone can solve the issue it'd be much appreciated... i probably just need to get some sleep and rethink over it though.

    But yes, a load of updates on the M4L Hub Patch, came to quite a few realisations about the M4L API, mainly that any IDs you request or get only work in the patch they are first requested in.

    And then there's the Clip Launcher. Just drop it in after M4L Control Hub, Set the Size of the Clip Grid, set-up the monome connection and Click Go. Note you need to click the Get button on M4L Control Hub if you haven't already initialised it.

    The column to the right of the Clip Grid Launches Scenes, the row below Stops Tracks, the bottom right button Stops All Clips.

    I'm going to be adding some Function Rows with all the goodies possible, and hopefully making it customisable.

    Let me know what you think.

  • Question: I've tried this (M4L Device Control Monome) with a Drum Rack instead of an Instrument Rack and it didn't work. They both have the same 8 macro setup...is it possible?

  • Revision 5
    -------------

    Got the Clip Launcher sorted now. Just going to be adding some function rows, although I'm considering making an app for all the main live controls, tempo transport etc, and for control over these apps, and which is displayed.

    Device Control should now be working again. It's due an update now I've incorporated 4 devices into the Control Hub patch. So I'm looking to include the ability to store 4 different Devices from the live set, which you can switch between easily and use one knob to control knobs on all four at once.

    Control Hub has a few more updates. Clicking the View code button now also opens up two helper/display patches which just show you all of the receive, send, value and coll objects used to store all the IDs and values.

    Just starting work on a Mixer now :).

  • @ emergencyofstate

    try the latest version. i just tested it dropping a drum rack in clicking the refresh devices button on M4L Control Hub and it worked fine.

  • this looks very promising.

    can't really figure out how to set up monome device control. i can only make it control the first device in selected track (selected in live, not in the device control), and if i select the track holding the device control, it changes the size parameter to the default 64 (i use a 128). overall, the setup is not very intuitive.

    when setting the smooth parameter to anything other than 0, i can get my cpu usage to go as high as 80%. i'm testing on a fairly old macbook, but it still seems a lot.

  • Hi, Myr
    Great work. I'm playing with the clip launcher but I can´t find out how to launch scenes or stop clips. It seems right column and botton row are not working. I'm using release 5.
    Thanks

  • @Myr - nice. i've got it controlling an audio effect rack now. excellent.

    pretty rad! I actually have clip launcher and device control working together. i have a 256 and as long as I make sure Live has 8 tracks before my tracks holding clips start, I can have macro device control on one side of the monome --- then 8 tracks of clip launchers on the other :)

    @ jdm - I've been stopping clips by triggering an empty clip slot in that column. You can record to new clips this way if you're track is record enabled. The bottom row works as a stop for me. Right column doesn't tho.

  • These apps are all effectively in Beta testing at the moment. I could have waited 'til it was all finished and fully functional, but I think it helps to have people testing along the way and I thought the abstractions and code I've written along the way could hopefully prove useful to anyone diving into the Live API.

    So apologies for things not being entirely finished, not labeled, buttons a bit mixed up and there, as yet, being no video tutorials or readme/manuals.

    They are all on their way, as soon as I've finished the main Live apps I'll be attempting my first video tutorial.

    @ beatskk

    i'm not entirely sure what you mean?

    to get device control to work, make sure you've downloaded the latest version and deleted all of the old revisions then:

    1. drop M4L Control Hub onto a track then drop M4L Device Control Monome onto a track.

    2. set the monome settings on M4L Device Control Monome, and click connect to bang the prefix through to monome serial.

    3. check Device On button is yellow on M4L Control Hub then click the Get button on M4L Control Hub.

    You can now use the + and - buttons on M4L Device Control monome to move devices, they can be midi mapped or key mapped. Function rows to come.

    You can also select any device with your mouse or keyboard and it'll show that device on the monome.

    As for the smooth parameter it's a really simple and light-weight solution, the same used by tehn in his slide app in monome base. i personally with a small set and all of the M4L Control devices in get my cpu usage around 40% and that's with audio samples loaded to RAM. sounds like you've got something else going on to make it do that.

    @ jdmonteagudo and emergencyofstate

    the Width and Height number boxes in the GUI actually set the size of the Clip Grid. Scene Launch and Stop Buttons are not included in this.

    So if you wanted to use the app on a 64 with Track Stops and Scene Launches you'd set the Width to 7 and the Height to 7. 15 and 15 for a 256, etc.

    If i've been an idiot and it actually isn't working let me know, don't have my monome to hand but i can have a look through the code.

    @ emergencyofstate

    i'm planning some kind of routing app to allow me and others to use all of these apps at the same point. for the moment you can change the prefixes of each device and use some routing software such as monoroute.

    i think i might also include a way that all the apps share the same prefix but you can press buttons, midi map, or automate clips to change the offsets of these apps or make them take control of one area. from tests building an OSC router using udp send and receive in max4live doesn't work fast enough.

    so it's either use the same prefix with offsets and that for each or use different prefixes and some external routing software. not sure which one i like the idea of more...?

  • i've done exactly as you instructed, but no matter what i try, i can only select the device i want to control by clicking on it (blue hand). the +1 and -1 buttons do nothing.

    oh well. since i seem to be the only one having problems, it must be on my end. sucks though, because it would be a nice tool to have.

  • @ beatskk

    sorry to hear that. i'm not with my monome at the moment, but i'll try and test it out tomorrow or monday and check I haven't just made a mistake.

    have you got any control surface scripts loaded in the midi pane of the live preferences window?

    i haven't actually tested it out with any scripts loaded. i can't see why but there's a possibility there might be a conflict or a script trying to override the selecting devices functionality.

  • I have really like this project so far I think its coming along really well. I am excited about seeing a little more documentation for the abstractions too. Im not the most seasoned max user. But I need little more then a push in the right direction and a and a basic understand ing of how to make the abstractions work for me to start creating patches with them.
    Needless to say I have been watching this project closely and and really excited with what I have seen so far.

    a couple of notes I have from tinkering with it.

    I have also had a bit of trouble with the +/- buttons not cycling through objects but I can key map them and that works to switch between them.

    and i can get it to work just right with my 64 kit. but my 256 only the left most side seems to work and im thinking im just missing a simple thing somewhere it would be sweet if I could split in in half or quarters to control 2 racks side by side or rack and sequencer and so on.

    really nice work so far, I am endlessly impressed with the amount of work you have put into this. : )

    Scott

  • wow it's been a while.

    i've been pretty busy this past month getting ready for an album launch club night last weekend. although i haven't been able to spend as much time as i'd like coding and getting M4L Control fully functional and polished off - i had to actually get down to making some music ;) - i have done quite a lot of work making the app gig ready and designing a paging and hub/routing system to use with the apps i've built so far.

    i used this latest revision at the gig on saturday doing an hour long set and it all went smooth and felt really good to use.

    for various reasons, mainly considering the latency sending data between two m4l devices, i've decided to merge all the apps into one master m4l device.

    i call it M4L Control Monome.

    as it's still in development and this is probably the least polished of the releases quite a few numboxes in the different tabs in the UI need to be filled to get it to work. so i've included some presets you can drag in depending on your monome size which set it up for paging between apps or having a quadrant or hub like set-up for a 256.

    after dropping the preset in check the monome connection setting on the far right and click Connect.

    click the Get button in the top left corner.

    then click the Set button directly underneath it.

    The app should now appear on your monome.

    To page between apps you can midi map the App Page numbox in the monome connection area of the UI, you can automate it with clip automation also.

    You can also hold down the button in the bottom right corner and then press 1 of the first 6 buttons of the rightmost row to switch apps.

    The first four buttons of the row underneath Track Stops in the Clip Launcher now move around the grid. If you have the LiveOSC midi remote script installed the red box will appear. The 5th button along is a shift button. when held down the arrows move by 5. also when held down pressing a scene launch selects that scene, pressing a track stop selects that track, and pressing a clip makes that clip visible in the detail view at the bottom.

    There's also now a version of Clip Chopper included. Sub-looping is currently disabled, and the tabs in the UI should give you some idea of what i'm going to add next.

    Lots of improvements and work still needs to be done, but hopefully this'll give you an idea of where i'm trying to go with this, and it's pretty fun to play with too :).

  • using windows vista 64 bit, live 8.15,latest max I'm getting an error when dropping the presets on top of the m4l control r5 (in master track).

    it says that it is not finding "m4l monome control r1.amxd" in my library presets.

    the m4l control r5 was loaded from a directory in my "downloads directory" using the live browser drag and drop

    trying to open the max page to look at errors crashes live, also.

  • @rawore

    sorry if i didn't make this clear, it was pretty late when i finished last night.

    you no longer need to have M4L Control Hub in the set. you should only have one device, the M4L Control Monome r1, dropped into the set.

  • that's ok... I'm one of those beta testers who exercise the software by trying things (sometimes clueless, sometimes stupid). your replacement for a code coverage (instruction coverage) chain.

    so: I get the error when I drop the preset into live, first thing, in a default empty. this is my interpretation of your statement "after dropping the preset in check the monome connection setting on the far right and click Connect."

    the preset, taken from ".../M4L/Control Monome Presets" comes up as "M4L/Control Monome r1" it still reports that it cannot find the preset, when dragged by itself into an audio track. it seems to be looking down in my library, rather than relative to the origin from which it was dragged?



    trying to figure out where I erred. should I put the presets in the library?

  • clicking "open the max window" still crashes live, when the preset reports its error.

  • Thanks for the update Myr! Will try on my 256 this afternoon.

    Could you expand a little bit on what your setup is like for your live set? Are you interfacing with external gear and stuff?

  • checking back on the thread release r5 also on aug 4, should this one be r6?

  • I get the same message/behavior when trying to drop a preset in from the preset folder.

    "can not access the max device file M4L Control Monome r1"



    If I just use M4L Control Monome r1, things run.

  • also seen on windows 7, live 8.15, most recent max

  • sorry for the mix up guys.

    i've never used presets before for m4l devices. i assumed they worked just like presets for an audio rack, or operator etc.

    so you could just drop the preset file onto a track and it'd get going.

    apparently not...

    maybe it needs to be in the library? maybe i need to include it as some kind of live pack which you can then install? not too sure yet.

    either way the M4L Control Monome r1 device should still be working and although a few numboxes need to be filled in to get it working, once you've done this you can save the live set, or hopefully make a preset yourself and it'll all save.

    so to get M4L Control Monome working from scratch with no preset you need to:

    1. drop M4L Control Monome r1.amxd onto a track in Live.

    2. check the monome connection area on the far right, check it's all good and you've got monome serial open, then click connect. the preset should get sent to monome serial if it's all good.

    you now need to go through the tabs in the UI setting up settings for each app.

    3. click on the first tab, Offsets/Select. use the live.menus to make sure the tracks, scenes and clips are numbered correctly, or you can enter them yourself. but clicking on one of the options in the three live.menus above the sets of numboxes will set them automatically to tracks 1-16, scenes 1-16 and clips 1-16 across 16 tracks. you can also set the clips to either Playing or Scene mode.

    4. click the second tab ClipLauncer, set what size you want the clip grid to be. for a 64 i'd suggest 7 wide and 6 high. for a 256 15 wide and 14 high. make sure the Link button next to 'Offsets' is turned on.

    5. click the third tab ClipChopper, set the number of slices you want the clips to be divided into and set the amount of clips you want to see. for a 64 i'd suggest 8 slices and 6 clips, for a 256 16 slices and 14 clips. you also need to set the quantize and the length of pattern recs, although there seems to be a bug with them at the moment.

    6. nothing needs to be set on the DeviceControl tab but you do need to check the Devices On/Off button on the far left of the M4L device is turned on for it to work.

    you now need to set the apps to the pages and positions you like.

    7. go to the monome connection area on the far right of the device and set the page to 0 and app and turn the 'app sel' toggle on.

    8. go to the ClipLauncher tab and set it to the app page you'd like, the app size you'd like and the position on the monome you'd like.

    9. do this for the ClipChopper app in it's tab.

    10. do this for the DeviceControl app in it's tab.

    note: for a 64 i'd advise setting them all to app size 64. setting the position to top-left and setting the app page to different numbers, i.e 0, 1 and 2. for a 256 you could set them all to the same app page, with the app size of each 64 but change the position on the monome to different quadrants.

    11. now click the big Get button at the top left corner.

    12. now click the Set button beneath that.

    phew... it should all now be working and be on ur monome.

    the presets i created basically just set those up and were supposed to load the settings on dropping them in. maybe if you try hot-swapping the presets once you've dropped the device in...?

    hope that helps and some of you guys can get this working.

    is everyone having a problem opening the M4L Control Monome r1.amxd and trying to edit it. does it crash live?

  • @ emergency of state

    going for a real minimal set-up at the moment so i can get it in a rucksack and go on the bus, train and tube.

    macbook, monome 256, korg nanokontrol and an apogee one audio interface.

    currently running M4L Control Monome with a 16x8 clip launcher on the top half.
    an 8x8 clip chopper in the bottom right corner and an 8x8 device control in the bottom left.

    nanokontrol for volumes and some filters till i get the mixer and filter apps finised :).

    hopefully once all this is working a bit better i'll be able to get on some tutorial videos, show how i've got it set-up and have a template/live pack with some clips, effect racks and dummy clips all set-up.

    ...but anyway i'm off to a festival in england called Bestival for the weekend, should be back to a laptop next wednesday or tuesday. but then i'm off to greece for a week, again sans laptop to try and get away from it all for a short while.

    but keep posting, i'll have my ipod touch so can still reply to a few bits even if i can't get on the code for a while.

    hope you can get it working and enjoy it :).

  • I was getting the crash from the button that showed up when I dropped a preset.

  • on a 16" toshiba, windows 7, the application is overfilling the device viewer at the bottom, showing just the top 1/4 or so of the last row of buttons, with the
    status bar selected. for the m4l control monome r1 device

  • @rawore, what screen resolution are you using?

  • @lokey 1366x768.

    low budget display ;) it's the tops on this machine. cheap tho. I shopped for cpu power above display

    windows seems to have removed possibility of scrolling larger sizes on virtual screens, with 7.

    boo

  • @ rawore

    heh, yep. that's how much of a quick hack the UI was before i had the gig. still need to redesign it all.

    hopefully have a bit of time in the next few days to do some work on it before i'm off on holiday.

  • Nice work! I like the direction this is going for sure.

    My only comment/feedback/request would be to keep the function rows consistent across the apps. That way you could mute/stop or navigate from any app/page.

    Like in clip chopper the dual mode approach for the lower right button seems a good solution for doubling the functionality of the last two rows.

    You could have 1 mode be for global functions like track stop/mute and navigation and the other mode for app specific functions.

    This is from the perspective of using a 64/40h

    Keep up the excellent work!

  • Bumped - dying for an update on this project :)