suspension pedal - simple m4l MIDI util

  • This is one of those very simple "lego block" style plugins. It's not all that interesting on its own, but it should add a lot of power to a more complete setup. =)

    Meaning, it's not specifically monome or arc-centric, but it will modify the input or output of many monome/arc apps.

    (And while the code is certainly reusable in Max, the interface and i/o flow are very much optimized for Ableton. I don't think it makes sense to release a "max version". But I'd be happy to export the source code if anyone wants to play with that)

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

    Background:

    I like to have one MIDI track that is sort of a master controller, with a bunch of other tracks taking their input from that.

    So, maybe there's an electric piano on one track and a synth pad on another, and they'll play in unison. But maybe I throw an arpeggiator on the electric piano to break up that unison -- now I can hold notes on the synth while the electric piano dances around the chord. And maybe I throw a "MIDI Tax" m4l plugin after the arpeggiator to break up the arpeggiator's rhythm. etc.

    In this example, even though electric piano might not be completely predictable, I know that it isn't going to play anything that clashes with the synth. They're playing the same chords, driven by the same input. That's sort of the point.

    With me so far?


    I realized this morning that there are times where I want one instrument to hang onto a chord just a little longer than the other instruments, for the momentary tension that this dissonance and resolution brings. So I built something to facilitate that.

    It's a variation on the sustain pedal, really. But a little more restrictive, and more practical for this purpose.

    * Press to freeze the input for that track -- whatever notes are active remain active. No other notes will trigger on this track.

    * Release to switch back to the live input, ending any notes which would have ended and triggering any notes which would have been playing, had the input not been frozen.

    But of course, it doesn't have to be a pedal. This is just a mappable live.toggle button that you can assign to any button or CC.


    I also built a second version, which is more powerful but less intuitive. In version 2, rather than one button, you've got two sliders. The first one, you map your controller to. The second one offsets what number it toggles at. You might think of that as pedal sensitivity, but the idea really is that this can be applied to multiple tracks, all mapped to the same CC, and slowly changing its value will cascade their triggers.

    Both of these can be found here:

    http://sadfactory.com/inventions/896

    (I think I like this description here better than the one on that page; may have to edit that later...)

  • thanks mate, this is useful!

  • No huge changes, but I updated the configurable 2.0 version to 2.01.

    (added a convenience feature - there's an extra button now that sets the threshold slider to match the mappable one. might save you a little twiddly mouse work, but it's probably just an extra button)

    same link:
    http://sadfactory.com/inventions/896

  • thx a lot gtz, very useful! Came in just in time as I bought a pedal last week. also had no idea about midi tax, thx for that hint too.. :)

  • omg you are a genius! thx so much! (didn't even come to mind to map that pedal ^^)

    now I only need to solve that mod wheel interfering shit for total jam madness :)
    (no sleep today)

  • Mod wheel interfering...

    Not 100% sure what you're referring to, but I do have a pretty good idea. (in other words, "oops.")


    Open the patch, get out of Presentation View 'cause you're not going to want this in the interface, and add two objects:

    [ctlin]
    |||
    [ctlout]

    meaning, you want ctlout's three outputs to go straight down into ctlin's three inputs.

    That will forward along any CC messages so they don't die when they get here.

    There's another pair for pitch bend. [bendin] and [bendout], I think?


    (I can post a revised version tonight to include that, but if you want it now, it's a simple change)



    Conversely, I -think- you can add:
    [midiin]
    |
    [midiparse]
    ...(connect everything but the first wire)...
    [midiformat]
    |
    [midiout]

    That'd be pretty thorough, if it works.


    Really, the problem comes down to laziness. I was using notes only, so I didn't think to pass CCs through.

  • and, yeah. MIDI Tax is immensely useful. you can see it abused to good effect here:
    http://vimeo.com/12192331
    (watch the top row -- on each monome, the timeline is moved forward by a constant stream of 8th notes, but MIDI tax is blocking some of those at random, so the timeline hesitates at random intervals)

    People without Max For Live can achieve something similar using several "velocity" controls (one to limit the range of accepted velocities, and one to randomize velocities such that some fall outside of that range). It's not perfect (you do lose the actual velocity, so if that was important, you're out of luck), but it works pretty good for a no-script solution.

  • many thx for your support!!

    just returned and tried what you said... no luck... It has nothing to do with your patch, as I have weird cpu usages of 160% sometimes when turning any cc..

  • Yikes. Are you outputting CCs back to that same device? (it sort of sounds like a recursive loop)

  • Yeah its weird... I thought it might be my M4L patch but since the modwheel doesn't touch that channel at all I can't imagine that (and everything worked fine yesterday) checked buffersize too... damn that's one of those days when technology destroys inspiration... no problems with notes so I just leave cc's for today...

    sorry for thread hijack... and thx again!! ;-)

    EDIT: ableton support confirmed the issue as a (ableton)bug on Lion, unmapped cc's causing cpu loads, hope they fix this soon

  • Huh. That is indeed crazy. I wonder if this bug affects Logic and GarageBand. =)

  • Nope, sorry, it's an ableton on Lion bug. Logic works fine... What amuses me is the fact I thought I waited long enough for the jump to Lion.. meh.. Luckily it's not a really big issue for me since I made a little modwheel/pitchbend m4l utility and just (ableton-) mapped them, solves the problem. (+not using the mopho encoders which I hate anyway, i'm ok with 8 macro knobs on my nocturn) ;-)

  • Jumping subjects a bit, but I didn't want to start a new thread...

    Attached is a modification of nonagon's "MIDI Quantize" plugin. I've been making tiny hacks to it off and on for a while, but added something last night that I think brings it to the "I should publish this" level:

    If the transport is stopped, it bypasses itself. So you aren't suddenly missing that instrument; it just isn't quantized just then.

    Very excited about that. I've got a ton of effects, and several full-blown apps, that die when the transport is stopped. Maybe I can fix 'em.


    Also, there's a triplet button, and a "shuffle" (swing amount) slider which kind of almost works.

  • @gtz

    I just watched your velcro video - fantastic idea and sheer hilarity at the same time! haha.

  • Thanks! I don't get a lot of compliments on that one. Mostly variations on "I don't know how to react to this."