More Ableton and MAX

I sat down to write this post awhile ago and life kind of happened so I am finishing it now.  A few months ago I sat down to finally write a MIDI mapper for my line6 FBV Shortboard Mk II so that I could control Ableton Live with a foot pedal and not have to worry about using my APC40 for live performance.  I wanted to do it because I’m not a DJ and rarely have my hands free when I am performing.  I’m usually playing bass or keys, and I need both hands.  Trying to work a device with my hands while I am using them to play a different instrument is a wicked pain in the ass. Ari also pointed out that my setup was kind of byzantine and simplifying it might be a good move.  I agree.  My solution was to take the FBV and write a tool in Max For Live that would take the CC messages that the FBV sends and turn them into midi note messages.  I initially wanted the bank buttons to set banks and then based on that number send different midi notes so that instead of being limited to 13 midi buttons I would have x banks of 9 buttons.

My initial implementation worked exactly as designed, but when I tried setting up all of my band’s songs in a single live set (so I could switch between songs seamlessly), I quickly realized that midi was not going to be the solution.  I had not way to track what state the tracks were in from the song before which meant that I had to put every song in the order that I intended to perform them beforehand.  That sucks because it doesn’t allow me to change the set list on a whim.  I also ran into a limitation of live where I can only assign one midi value to a parameter.  This meant that if button a was controlling parameter a of a plugin or whatever, button b could not control that parameter at all.  This meant that instead of being able to hit a button and have it do a few things, and then hit another button and have it do a few different things and undo one of the previous things was not going to work.  The whole thing felt very fragile.  I decided it was time to use Max For Live and it’s Ableton API to set parameters and just take as much midi out of it as I could.

My second implementation used a bunch of set commands to just force set parameters.  I used the param save function to save the settings for each button press into xml.  That worked really well but I later found out that the looper built into live basically requires midi to be used.  It doesn’t expose anything I need to the live API.  I also found out that if you use the set command to set a parameter, it does it as if you clicked the button yourself and there is a 10ms delay or so.  It also has the side effect of creating an undo event for every single thing the pedal does.  That probably isn’t a big deal but I found out that it isn’t really that hard to use the remote~ function to send messages to live and anything sent over a remote is realtime and and doesn’t create an undo event.  Basically the goal at the point was to use remote~ for everything I could and use regular set commands for everything else.  Below are some examples of some of the things I’ve written that are part of the entire tool that lets me basically DJ my own music with my feet while I play.

Here is an example of setting a return track volume with remote and with a set command.

 

 

 

 

 

 

 

<pre><code>———-begin_max5_patcher———-809.3ocwW97jZBCEG+L9WQFl83VKgeI1Y1CsS6sdpSusSGmH7TSKj3PhVa2Y6e6kj.JKhUTVrGTjGgju7488Ed9zHK647cfvF8NziHKqmFYYoCoBXUdtkcFYWbJQnGlMC9Ie92su2bIIrSpCKnK+SUvEblTP+Mnt.1crSYX1lLJKEj54AeHHeirYTZhdRKVn23EVeZYjL8zZ+9bJIs5JlYP9q0f4IQoFVwkQeqb.qIx3UT1xY4PrzLlPmBgglhCTG77Te6VDB8M0c77nQputueLIktEFmCYbIbQrwsU13zBalbd1b5Gce8iN1cxgm8x6QP1BIyJVghaYFQJyoy2HM1Dq8Hvxd1ZHWPERfEaddzw0r6RIXFHDjkvQHrP8qPJNNS.RjLmD+CA5NLJitCxmk.aow.R.rDAxo5lSoLHlugIqyxqm6s4IitBO4+zMhCz4jnI5CXiezyc.7iJh1+BUuighuy0.k6K+zA3TVqFDLD0pzEn6ntnGd.4fjq.VwYX6gv6fcd0MOl54IFJgclND7QhVfl2eeiaK9lqgGKR4Dox3LmvV1A3DgKgSz3fd.mFaS85ZLlLTap3a7GZeANZ.pavp5FrotwYbT.BREPwuFjFBvdCT8SjwhLL6uHQyQzAo94Z5ORW0TT8PUuj7rjIbpgLg8q3IlmkAEKXSz7U0a0QelyKZm.i9DiLOEd6GoB0w9SrVZaJH3pZaZh1XDZNfivG01jZ1VPp0KzEBnbRBkuLmuYckJ1Rx2KOcyOkT5KGMxKnVZcNTzwjjHobV8bcjw9WsKQ0dEGyOW+dUm45bhkntvdQwuDxpVipX6MC6IU5lp+HygYLw3hR1G+Uz1pREs1hPz0XOOQRIx6PRw276v1SJ3om1Ti9.OM4rN6xDiu+QKyQIlZXTOHcO2M9aj50QE+krUv2jGWYW12PT8bFHjT1905wC65WaPqnII.qN.ynIq4E6mUphSjp6pnTV7yqoFJenEUXGzTCgeKjD9bXZxKFzPKoFNk10j+sMyoWtNwoanlb5fl7ts4NutXw8tsbxqKaOog4sSSMrJmfS+G73mUSg8PSEm77n+huFKWB———–end_max5_patcher———–</code></pre>

Here is an example of setting tempo that takes 3 seconds (if you’re using a 44100 sample rate ) to get from where it is to where you want it (for smoother tempo transitions if you want to link songs together and have a drummer playing to the click track… which I do).

 

 

 

 

<pre><code>———-begin_max5_patcher———-548.3ocuUF0bhBCDG+Y7SQl7rmCATuZeq2Wia5vDgUM2QRXHKddWm1O6WR.rTEKZq0GHPV1jc++a2.OMJftTuCLTx8jeRBBdZTPf2jyPPy7.pjuKMma7tQUvezK+Ecb8qPXG5MijUjksVWoUnQ7Ov8FVzjvFypJoPkCneiXuZTWgsViZrJx76pMRei0cWUboeWoOTJ34suodCv+V.0JgtJWyQ5XBcIWslRdrwuBNltQnVmTBoXsqSmYSOx28ir42MY1XRT3jPxitU77nQtgweNzjK1BSJAoFgW5kPg8SnndIT3wDZ5rSiHxOz4YzgzO6NWNPlundhS+MKwv2BYI1nXWQBGwRwxJrtiIXOFBnIEPoQXPPkVqIucO+tlTzJfMD2SIF.IRtMfkIXIO82DoXm84LXqHEHFsUjHHKzs6StPAo5JE1krmSUn+9z3dpBwmYU3ntUWip+58ZTYKpqTwMsp9BVzhqaqZIWVXjZMt4EajhhCCatcI8sw8RL1wDKd9GkXFwZk83+vGraw0zNc1WObYSiK5DM6rIyrudxD5uEy9TfwqMZeZM7b0Zz7om9jwv5ndLZ+39UjpkRn97Nk1QZdG7eO3f+64Cgy9a0qQWUl1lPM+Ph7ZXx.CJTbTnUc7wU.63zFQVFn5hEoHqPKTXSNbB3eIoDafTx88oaXJ4KqCxI1MMm7HXPNM6MN8UmSGzobh1o42TNcP3dGN8QyI6jmG8ebm4y0N———–end_max5_patcher———–</code></pre>

Here’s a little event timing manager that lets me make my pedal presses take effect on the 1 via quantization:

<pre><code>———-begin_max5_patcher———-1951.3oc4b0zbaaCD8r7uBLZxsl3AeQBxNMGZu068VmLZnjfrYsDIKIThcxj+6EePJKKKIBIxEId53wlFTjhKd3sucAVH8salLcd4ixloneE82nIS91MSlXOk4DSZaOY5lrGWrNqwdYSKjeob9+L88tWRIeTYOc9Jz6xonO9QDFotWVnaQPx0MRT4VE0zp6VVUVnZx+pzbaD5s31SWrcSdwZox9TnOeR8se3YyWZejZy3Ch8eWKx1XeWm9604Yq6dE2af5oJoqaNc560+h9T6KWkoVbedwcypkKTtqfGosJDI1cHgXNPw2hQexbKe+laL+48dhW1N0zi0IwGsSRdcmL5jck7B0Y6ITrv1GX1tBc2e2cOKJ2rQV3FBmdE8tdYCjPxFHD.oCoNzCGOH5vFYSS1cxWgXU0kUxZ0Sn7lYUqydRaBCGhNBWJ9ZPnyRwXFSpCjHDmOyUhNmfNsN+yxaKm2Hq+rrFDlCGBhSKzHbPiH8YhS68zj8Y4xY5mu9VlkoT04y2pbxwS1gPSlNSyLZxaTxhE1mM1ddKzNl.rtGbOx7eyZdVwxGTlbTTl8ZTldsnbeHMKZORXZ5f7POADoPyQyGNpbLUqq.UlmYzGZO5AGjXQFFePHSWvhCgl+597Fj8YKqQprGjMFQejN3j7N8YZz2CRUhxUnrhknkRs7Vio01BU9Z6kpeDJzFYVy1Zo8hnbcZD4KdnAMWtpTeR8kqeeVZtuaQn+Tgz5n52WMFs9Iz+tMS+ueU+byJdBo8gTkEnpZykzXt5U1GhpNawCZ8UTiprpRtz7dZFVruXqtroezXNSc416tW2EZT5250OcaWmdcdgbQ4VWHyjASGvulNv5mNbjwYijql56TewNsXwX6AjeBO.7.8.Xryn+h9ix0KOaFP93G3jFXNsXF61nwOJUUdk7RfGuiYyXjqEd7.SRr1GPXhQ0LGFNC8pAkNwy9xdtMsYA0BPQ3AAPmNwOYkVXSOso2Qfg8PDfvdZmejHB6.I2blFYzAqm.AUOLvSXLr.H7IFT7woFmxGD9Dd2KbJztWwVfIlMFdWmAeVAD9jLT7Y05xryiPbrkBEicJzz2XJzXAzTHpK1E3.DTbnX34Pznn8byhigAhVAFDc0Q4cPieXjiFEwaUjda4mQSRf1OqUHp6PJD.jcMCIneqaAjw1e5eQCGL7It5Hc8ttDsg3RcSHKlNnEG6T4HAb9QTQBH4G0IL0hQBHxOR9XUM5cqHneAwSvCm9bT3gCJ73BsIDPrtpFWtU64xYZrmC2Jnb3nf4v0hZQhVOtTHfMGqRqU8ADADNEgx.gSEue1R5vbPnFQ.RDR.Ih3NDQfPCx5jQ2yIyqRggGXAMnhXfipE.eLNFq8wFEcni4kQfYY05xlzcPvATBhZfmbfV2HLjhPsnSp.DQHNPHBEl0gsMsZ2xMFgAYkz1Uf4l76JxTaqkyVJKJ03PlprFFQ6zDHwK1K2mFwgtlyCVhNEtIdzAQt5cPo6Eq+MZsmwCr1yLLdPnceHdTx9jxTP1GDaKpLkvzNy3aAAknozAVIt1C8unKt3.71xGv.YeiTlszsDGCsNsGScies0s+rUMvgGTQap5fsUFb+LbRTzqQlzAurlm8nGvGyMEmHZJHoWrKV5hs00xB0rlRsUnx2.S8eoIvj2QGX4VZXBm+FMNZBCr3ncPTmiXz+6iiRS3fFGs00skTBSbzunmGNPKEez0BNq0jiKRhKskYByp3fHWXJFWP814.NuRtayZPvoCRLaD101L10uusamYCXaa6Qo6Ee8Y43TSckaCftmyflNrsgGSLs2sNk3R6A1KvtIBO3Ccg8YXN+K6VMkaqWzAq6RPGQ28fVJaTlovmWVr2UYWZKzyly84K0S1e+d5l7kUkZZXqYbBmDespCedG2prEyMfVkd.TKi0iMYFluDahRbkPOsUtw8YCXuFIt8hbD2bY1FiP2.26.dPQVq1VuFkHn1juVDIbnDwmgN69OKjicl00sWqxV+f.ZUNcsd8VOv1g1p3955ENRkYx08hS1jzCHNkF6CkxLM1PRo7YzKMN7.EqWVNN7FUeoTXWL+.ZT9vnBKI2mTbBrnoGRA7fpNQ7QbJvg6ndkZJ6xvINwleGO1s.EbwtVC1dw9fglZGEvwUW.k9C6vBqUcflz4vp.x3Hburp.GMLIxqjQ4AlW4UxnGX6vaUTurpvlL5gojehzQog1p7BqD7.OchTuFASBLuJwqXQze.VEwKqJfSdF6UtDhPmMAw6IOGRrJwKrJ4BywgZ+PEGGYKLHiX+30XaMJ1K1K6Eew4jE61Gmz3maMJZb86gDX0DA2K0jPu7RwPL1NJV0n6gLJQz6mWIBLV4UrSwOBqh3kUEv46RYd4CF3YffEPLBRIo6ouFmNVxqNyczGZoLlK7kaOFiIN6ULBgCR7dc8CXR.TeRX5vZRDFq5msZfbH0+TLtz.aU9HwcHhB+xY3S.c62QIAMzY5OgVk8KxFO7A4AtZsbuwpPZUdoLvD+7UznKDnHQ1PkT22AHb2dG4ksHs6HFaLJBdvgn7a+XvBbATHfrgLbfV6mwA2dv3EMF8MjgcqO0eziKDbcbj3D2WWaO25EFqtw2u4+.JDKslB———–end_max5_patcher———–</code></pre>

With all of this working I am able to control Ableton with my feet while playing piano or bass or whatever.  I never have to touch the computer which kicks ass.  So far I’ve not found anything I can’t do with this software.  It really is a pretty brilliant piece of kit.  The sad thing is that I think I like writing software more than I like writing music.  I’m certainly better at it.  Anyway…

 

DDRUM4 Hi-Hat Controller “Fix”

Disclaimer: I’m not sure why anyone other than me and a handful of other dorks would care about this; however, it seems like a shame to not share it if there is someone out there that could use it.

I built a MAX/MSP patch for MAX for Live that will allow you to use the ddrum4 hi-hat controller with basically any drum sample library you can find.  This may not sound like a big deal, but this controller came out in ’94 and has been discontinued for years despite it kicking the shit out of every controller before or since it was created.  The patch does what it does by taking the CC:4 messages that the ddrum4 uses to determine hi-hat position to control which note actually gets sent to the drum sample library you are using.

You tell it the closed note for the hi-hat, the open-hat note, set the threshold you want to use, and it does the rest.  You can see your pedal position on the Hi-Hat Current Value slider and you can see what note it is sending to your drum sampler in the Output After Processing keyboard.

What this means is that you can use the ddrum4 hi-hat (which is my favorite hi-hat controller ever made, suck it Roland) to control whatever sample library you use without having to do all kind of insane configuration of your drum library.  I got sick of using BFD2 and jumping through hoops to get it to work and then having it all be for nothing if I wanted to use kontakt or some other library that had standard keyboard mappings.  You use this, set up your ddrum4 brain to send regular keyboard mappings, and rock out with your cock out (as much as you can playing midi drums in your bedroom).

At some point I plan to had another feature so you can get the tones of playing the hat with just the pedal with no stick.  It kind of works right now, but it could be better.  I was going to program it to do a splash as well so that if you stomp it and release it real quick it will make a sound.  I’ve found though that it already does that like a real hi-hat with the existing code because it’s using a real hi-hat stand and the abrupt stop of the pedal is what causes the splash… yet another perk of the ddrum hardware.  It just works.

Here is a screenshot of the actual “code” and here is the actual code if you are one of the 10 people on the planet who still use this hardware and want to use it with Max for Live.  Good luck and let me know if you have any suggestions or questions.

Wild Geese

Wild Geese

You do not have to be good.
You do not have to walk on your knees
For a hundred miles through the desert, repenting.
You only have to let the soft animal of your body
love what it loves.
Tell me about your despair, yours, and I will tell you mine.
Meanwhile the world goes on.
Meanwhile the sun and the clear pebbles of the rain
are moving across the landscapes,
over the prairies and the deep trees,
the mountains and the rivers.
Meanwhile the wild geese, high in the clean blue air,
are heading home again.
Whoever you are, no matter how lonely,
the world offers itself to your imagination,
calls to you like the wild geese, harsh and exciting —
over and over announcing your place
in the family of things.

-Mary Oliver

I am the night

I am the night

This is perfection to me.  You can see all of this guy’s artwork here.  He gets it.  I don’t know how else to say it.  I first saw one of these years ago titled “No One Wants To Play Sega with Harrison Ford.”  It cracked me up then and it was still awesome when I saw him featured in Newsweek recently.  I hope this guy makes a mint.  Pop art is a tricky game, but he’s a master.

Here is what he says about it:

“Remember these weird plastic Halloween costumes? When I was a kid, I had a Transformers one, and it just had a picture from the show on the chest. It’s like, ‘Hi, I’m Transformer Metroplex, and you can see that because I’m wearing a picture of him,’ ” Bird says, laughing. “With Philip Seymour Hoffman, it’s kind of hard, because a lot of his characters should just never, ever come close to kids. Like, a Love Liza costume? Magnolia is weird, but not that bad.”