[M4L app] Live Clip Chopper

  • Live Clip Chopper

    A Max4Live device for controlling the playing position of clips within Live.

    MLR mash-up business in Live!

    ----Set-Up----
    1. Drop the Live Clip Chopper device onto any track in Live.

    2. Select your desired application or monome size.

    3. Use the monome connection section on the far right to connect to monome serial or your desired routing application.

    4. Select the appropriate Live Tracks Mode and Live Clips Mode.

    5. RAM enable any Clips you'd like to chop by clicking the RAM button in the sample section of Live's Clip View.

    6. Click the big yellow LCC button on the far left to start. LEDs should now appear on your monome.

    7. Start mashing.

    ----Use----
    Clips are mapped across a single row on the monome, from left to right, each row representing one Clip in Live.

    The playing position of the clip is represented by a single LED which moves across the row. You can move the playing position of the clip by clicking on any of the buttons along the row.

    You can move around Live's Clip Matrix by clicking on the arrow buttons, a separate display window can also be activated for use in performance.

    The Live Tracks Mode menu allows you to select how many Live Tracks the Live Clip Chopper should focus on. The first number represents how many tracks will be available on a 64 or horizontal 128, the second how many for a vertical 128 or a 256. This allows functionality similar to Choke Groups in MLR when used with the Live Clips Mode Scene selected.

    The Live Clips Mode menu allows you to select whether the Live Clip Chopper will focus on clips depending on the master Scene, or depending on the currently playing Clip in that Track.

    The Live Track and Clip that should be represented on each row of the monome can also be selected individually in the 32 boxes bellow. The left box being track the right scene.

    The Quantize menu allows you to select what quantisation you would like applied to your button presses.

    The pattern recorders allow you to record a series of button presses, they will then loop that pattern of button presses until stopped. The length of the buffer can be changed in the drop down menu.

    Clicking the FunctionRow button on the left turns the two bottom rows of your monome into two Function Rows of Track Stops, Pattern Recorders and some handy functions for controlling LCC. The last row gives you access to functions from the GUI in this order;

    Left - Up - Down - Right - Track Modes - Clip Modes

    The second to last changes with the size of the monome, but generally provides track stops for 6 or 14 Tracks with the last two buttons turning two of the Pattern Records on/off.

    ----Note----
    All Clips you want to chop must have RAM Enabled. You can shift select or click over the whole Clip Matrix to do this quickly.

    Also check the latency time in the audio pane of the preferences menu as this can affect the performance.
    ----------------

    Original Live Clip Chopper v0.91 made by 9gon a.k.a Nonagon.
    http://nonagon.net

    Thanks to 9gon for the clever math and proof of concept that finally made this possible.

    Download the latest revision from the app page here:
    http://docs.monome.org/doku.php?id=app:live_clip_chopper

    --------------------------------------

    Thought it was about time to give this application it's own page, under the title it has taken, and it's first official release as all the main functionality is now there and, at least for me, relatively stable :).

  • yo

    when setting quantization to 'none' with r25 a whole lot of bad things happens to me: Live's CPU load meter freaks out, audio stops, the clip play button keeps blinking and the leds starts moving very slow... Bug?

    Also when changing Live track mode in LCC some leds starts hanging (staying lit).

  • Hi,

    The same for me when setting quantization to 'none' (with r25).

    It's very huge to play inside Live as mlr, but with clips!
    Unfortunately it's not exactly the same feeling, maybe because of the quantization. It doesn't react as mlr (but it's not mlr..)

    Also inner loops will be a great implementation.

    Anyway, thanks again for LCC!

  • In fact I'm a bit mistaken. I set the quantization to 64 and it's not good for me. Better (and perfect) feelings with 32. Nice.

  • I continue with my feedback. This release is particulary stable for me (macpro 2,66, ram 7G, os x 10.5.8, digi 002).

    Finally I got muddled between midi clip and audio clip with the quantization thing: triggering clip is nice with audio clips but not with midi clips.
    Maybe it's because of latency, but I'm not shure, I set my buffer to 64. When clips were triggered some midi note are not.
    I don't know if it could be resolved, because it's midi.

    Hope I'm clear..

  • This Max4Live device is rockin!!

    Thanks so much for your fine work!

    ps I will keep working with it and post about feedback and other productive stuff soon.

  • So I got further into this app recently and had alot of fun playing with it. Having haphazard LED feedback, some tracks light up, some don't. Biggest issue I realized once I played more with it was that there does not appear to be any fading going on between slices... this makes the changes much more abrupt.


    Also getting some pretty bad latency on my audio inputs when I have it running

  • For me no problems with leds feddback or click sounds between slice.

    What I try to explain before is that when I move the playing position of the clip (audio or midi) by clicking on a button, the launching point is not good, out of sync. A bit later, never on a slice.

    Maybe I forgot to set something, so I would like to know if I'm alone with this issue..

  • Nobody to help me?
    I should be the only one or maybe I can't understand anything...

  • Now that the play is almost done I can get back to making music. Does the LCC handle inner looping?

  • @7anu5
    None quantization mode is still not working unfortunately. I tried to lower the number used to calculate the ms per beat to an extreme, way less than for 64n.
    Unfortunately Live doesn't seem able to handle it and suddenly prangs out, no audio and that. Looks like i'll have to edit the timing section in the clip to deactivate the metro banging through presses when None quantization is desired.

    @drone
    Glad to hear 32n quantization is good for you. I haven't experimented too much with midi clips. As you have to set Audio Clips to RAM for LCC to work and there's no RAM option on Midi Clips I assume this may be where the problem lies.
    The only reasons i know for the playing position not triggering the correct slice are:

    1) RAM is not enabled on the Clip.

    2) The overall latency, displayed in the Audio pane of the Preferences window, is not 0.00ms, or close to it.

    @ thealphanerd
    Glad you're enjoying it.
    It would be possible to add fades between slices. But to do it properly you would need to have a multi-max file application, that had one 'master' app and a separate app on every track to handle fading the volume of that track.
    Personally I can't see that being worthwhile, at the moment anyway.

    The LED feedback is a bit glitchy, sometimes going back to the first column. It seems to be a problem with the information the Live API sends out when you listen to Clip_Playing_Position. Not much I can do about it unfortunately, not that I can think of at least.

    Haven't experimented much with audio inputs at the same time, can't see why this would cause a problem though, I'll try and test it myself.

    @watson
    There's no inner or sub looping so far. I'd definitely like to have it though, will try and work on it soon as I can.

    Cheers for trying it out and getting back to me guys. Hoping to work on it a bit more soon, just gotten pretty involved in learning javascript to access the LiveAPI and create a monster Clip Launcher, Mixer, and Device Control application :).

  • I'll be interested to see what you come up with Myralfur. My quick tests of js clip launchers were slow during the beta. I guess youve got to cache all the live.paths as i think they're the bottle neck

    I'm still not convinced by m4l yet. Thinking about whether its worth buying.

  • I'm basically just extending this code written by Darwin Grosse and Andrew Pask to include listeners for the Mixer area and Devices within the Live Set.

    http://20objects.com/articles/2009/12/21/clip-grid-remote-control.html

    It's only got a Clip Launcher with listeners over the Clip matrix so far, but it seems pretty quick. Haven't started working on the monome side of things at all though. I'm hoping to just extend this js API script to include all the required calls and callbacks and then set it up to be contacted over a network or udpsend. This way all devices whether monome, lemur or korg nanokontrol can have small patches sending and receiving calls to this one remote js API script. Very similar to LiveOSC. Be interested to test the two methods, python vs js, against each other if I ever get it done.

  • @Myraflur

    r25 is super awesome and runs perfectly with my launchpad, well done!!

  • oh, 1 idea...
    would be great to have a gate option for each row. enable this option would let use each row in a different way. Sample would play just when a button is pressed.
    That will give extra power to your fantastic patch...

  • @le k

    Glad you're liking it, and good to know it's working with the launchpad emu's. Thinking of making a native launchpad version for some friends with launchpads. Shouldn't be too hard to convert the monome handling section over. I'll post it up when it happens.

    I like the idea of a gated mode for each clip. Unfortunately I think that would be another thing that would involve splitting this patch into a master device and then individual devices per track, to control volume fades and the gating of the audio. As we can't trigger the clip to start at different points when it is not playing the clip would have to be running all the time with the audio of that track gating depending on presses. With more requests for this kind of functionality I'll look into it though.

  • This is looking pretty promising, however for me it isn't so useful unfortunately because of the lack of no quantize (hopefully fixable) and the inability to start in the middle of a loop. :(

    I've never been able to enjoy playing with quantize and my playing style involves a fair amount of 'mute slicing' (where you trigger a slice then mute then trigger another slice..so you can get some space in there) ...although I guess one compromise would be to mute the track instead of stopping the clip playing, not sure if that would feel right though.

    Also I wonder if there is any way of enabling ram from the live API? This would be great! (if not maybe we could try and request it on ableton's forums...it's pretty inconvenient to have to do this when you are doing live looping)

  • @Myraflur
    a smart guy like you will find out the way to do it for sure!
    ;)

  • This might sound silly but why not have all the clips play at the same time and hitting a button moves the play head and then unmutes it...
    That way you can start in the middle!

  • Before I go any further, I love the patch, exactly why i bought M4L, and really getting my monome into more use now!

    I for one would quite like to have an option for being able to have a simple device which can just be popped onto a single track, and function as a clip chopper on that track alone, with the option to select which row will control it.

    I'm also for a gate option - Its dissapointing that you cant start the clips from anywhere but the beginning of the loop.

  • @xpm - i'm in the process of building a suite of apps like you describe.

    see here for details: http://post.monome.org/comments.php?DiscussionID=7174&Focus=84639 hoepfully i'll have something ready to share next week.

  • Just has a chance to try r25 out. Really awesome, good to see the clip bracket is movable from the monome.

    Bit of feedback:

    Autofocus still seems to be broken.

    Would it be possible to make the stop clip buttons global? i.e. stop the clip playing on scene 1 while being on scene 2 ready to launch clips from that scene? (I'd like to eventually drop my APC40, and just use the monome for clip launching, stopping, and mashing, then get an 8 knob controller board built into my monome casing to use for automap effect rack macros).

    Is it possible to make the control row toggle from a monome button? i.e. hold the rightmost bottom button down to enable (long press actions the toggle instead of triggering a mashup - short press acts as normal mash press).

    Possible to move the pattern record buttons to the bottom row? for some reason they appear to be on top row buttons 7 and 8, which would block the stop buttons?

  • nice patch!!!!

  • this patch is beautiful.
    finally got around to playing with it today and am loving it. thanks so so much for all your hard work. can't wait to get into it even further soon.

  • One week I hadn't use LCC r25, and today I launch it and no more lights..
    Only the 9 and 16 button flashes on a row. However I never changed nothing and and LCC works, but without lights.

  • Ok, don't know why but now it functions!

  • Should the red ring be working? I've got LiveOSC installed but don't see any ring...

  • I may have broken LiveOSC in the latest commit. That or its outputting a lot of data. Can you confirm LiveOSC is working by sending /live/tempo 90 or something?

  • I'm sorry ST8, I don't know how to do that - although if it can be explained I can have a bash. But I have been running Pages successfully up until I switched to M4L, so I think LiveOSC must be OK?

  • If the pages clip launcher works, liveosc must be ok :)

    In that case your LiveOSC might be out of date, try grabbing the latest version from http://monome.q3f.org/wiki/LiveOSC The red ring was added reasonably recently :)

  • That's it! Great, ST8, thank you...

  • I may have misunderstood how this works; but the arrow keys that allow you to move the red box around seem to working as 'toggles' when I assign them to keys or to midi notes - so I've got to hit each one twice to get the box to move once. Is it a bug, or am I doing something wrong?

  • rros101, they are already assigned to the control row of the monome, so you can go left right up and down using the monome - just enable the control row when you want to use it.

  • @Auditory - yes; I was just trying to use the monome "full screen" and assign the controllers to something else...

    I'm really trying to love this app; the big plus of tempo independent tuning in the loops is such a draw compared to mlr...

  • Yeah, I understand, I'd ideally like the same, or alternatively, the control row to be a momentary toggle via holding down a monome button.

  • sorry if this is a stoopid question, but i don't have M4L so i can't try for myself...

    how does LCC handle groups? (or i guess it'd be "tracks" in live) does LCC let you assign clips from different tracks to separate rows on the monome or do all clips have to be on the same track?

    thanks!

  • clips are not on same track at all. there are two different modes but it works similar to looking at a scene in live. clips across the tracks are mapped to the rows vertically on the monome. lots of funnnnnn.

  • thanks watson. after reading the "uses" again that's kinda what i thought.

    aw sheeeeet i might just have to splurge and do a lil' M4L crossgrade!!

  • Oops - I mean horizonally on the monome.

  • @starklove

    you can assign any of the 8 (or 16 if you've got a 256) clips to look at whichever track you like using the set of 32 boxes in the LCC UI.

    i've provided some basic modes you might want to use:
    - all the clips looking down the same track
    - all the clips looking along the same scene
    - and a few in between, for instance looking at the first 4 clips along scene 1 then the 4 below on scene 2.

    but i'm working on an update so when you manually set whatever set-up you like in the boxes it'll save the details with your set and be loaded up on start.

    more updates to come now i've finally got through all my uni deadlines!

  • and +1 for sub looping! when you get around to it that is. thanks so much for your work on this patch. it's really what i wanted out of monome/ableton.

  • Any chance of having the option to make the control rows more customizable?
    I like the original mlr way of having clip stops top left, and patterns top right, means I'm less likely to hit them with my sloppy fat hands!

  • +1 for sub looping. This thing rocks.

  • Hi folks,

    I've been experimenting with sublooping in my personal version of this patch for a few weeks now. I wanted to wait until I was sure I'd figured out the most stable way of implementing it, but since there's so much demand for the feature I figured I'd share my current implementation.

    Note that the attached patch is my branch of the Clip Chopper project, which has a more stripped down approach that's better suited to my way of performing. There are also some optimizations I've been experimenting with that might improve timing response a little bit (or might not), but shouldn't hurt. Regardless, if the desire is there, it should be very straightforward to integrate my sublooping routine into Myralfur's version of the app.

    TECH DETAILS AND ISSUES: the approach I've used in this patch uses "automatic" button presses to implement sublooping. Once the usual subloop gesture is recognized (button press followed by another button press before the first button has been released), the patch generates automatic loop-start button presses at the correct time to keep the loop going. This works most of the time, HOWEVER, Max can occasionally slip a bit and delay the timing of the button press, which can cause the loop to shift by a single quantization period. This is really frustrating, but all signs point to this being an issue with Max not being able to guarantee perfect accuracy for Max events. Give it a try and see how it works for you.

    I also have an alternate version of the sublooper that manipulates the actual loop-start and loop-end points of the clip being chopped- this guarantees loop stability, but there are some weirdnesses with the way Live moves the playback head when the loop endpoints are changed that I'm still dealing with. I'll be happy to post that version soon once I've worked out a few more of the kinks.

    Hope this is helpful!

    Nonagon

    P.S. Note that this version doesn't currently support sublooping of the last button in a row (e.g. the one that causes the cool "zoom backward" effect in the original mlr). That'll be coming eventually.

  • @two_masks

    This looks great. I found it more responsive and it 'felt' more like mlr.

    Some pretty big things I couldn't get my head round:
    - I couldn't start clips with it; only directly in Abelton; then I could play around to my hearts content. The sub looping seemed OK
    - I wasn't really clear which clips it was picking up. Although the red OSC box appeared it didn't seem to bear any resemblance to the clips that were playing
    - The pattern recorders could only be acitvated from the computer, not the monome - is that right?
    - ...and I had no idea how to stop a clip from the monome...

  • @rross101

    Yep, those are a few of the things I've removed from my version to fit my "stripped down" approach =). I use an APC40 for clip selection / launching / stopping / etc, so in my setup I don't want that functionality mapped to the monome. I also don't use Myralfur's clever scripting for the red box since I have that with the APC, and consequently my patch doesn't interact with his code at all. And I haven't implemented any sort of control row.

    I think Myralfur's patch is definitely the way to go for the one-size-fits all approach, and as I mentioned, it should be really straightforward for him to integrate the sublooping routines from my patch into his (as well as the timing optimizations if those turn out to have improved things, which your experience indicates might be the case).

    @Myralfur- let me know if you want any details on my implementation, I'd be happy to point you to the relevant parts.

  • @two_masks

    thanks for posting this - i also have an apc40 so this might do the trick. looking forward to the "cool "zoom backward" effect" !!!

  • Will play with tonight and update on how much I love you on a scale between 1 - 10

  • @two_masks: thanks for sharing...and welcome back to the discussion :)

  • This is working great with the latest monome_emu for Launchpad. Loving it.

  • @two_masks

    noticing the inner looping isnt quite right as stated above. seems to jump a little. really like this version though!