‘inventions’ Archive

pushCCs app

Wednesday, July 17th, 2013

This app creates virtual MIDI ports for mapping in Ableton, and provides individual pressure values for each button.

I’ve added an optional latching mechanism. When that is active, you can press any of the corners to hold the other buttons in place. You can then safely remove your hand from those buttons without zeroing out their parameters.

Additionally, if you press three of the corners simultaneously, that will zero out all of the buttons and their associated values.

If you’ve got a foot pedal plugged in (slot 1), you can use that for latching instead of the corners.

Note: This one is Mac only. It relies on some services from the operating system, as well as the friendlier device sharing nature of things in general. At this time, there are no plans to create an equivalent PC workflow. The editable .maxpat file is included, should you like to attempt a port yourself.



  • …had all kinds of problems. you don’t want it.


    (note: the compiled version included here was not in fact standalone. I’ve since learned how to make those correctly)

Josh Spoon did a video writeup of v1.0 here:

as part of his excellent “30 Days of Ableton Push” exploration.

early prototype / previous max for live version

I’ll write up a proper explanation later, but here.

requires Ableton Live 9, Push, and Max For Live. if you don’t have those things, this probably won’t interest you.

partially based on this:


or rather, the old version:


(This is missing nearly every feature you’d possibly care about, but it doesn’t require the max runtime. I may add some of the functionality from the runtime version back into this later, when v2 is fleshed out a bit more, but there’s no point with this version. m4l will never support poly aftertouch, so it’s strictly a matter of whether the other features add enough without that. They don’t yet.)

Universal Flowchart: All Problems Solved

Tuesday, December 20th, 2011

Universal Flowchart: All Problems Solved

(click image to enlarge)

Suspension Pedal, Max for Live MIDI device

Monday, December 12th, 2011

You’re probably familiar with the piano’s sustain pedal, and how that works. When you press it, it disables the mechanical action that ends a note when you take your hand off a key. When you release the pedal, that action is re-enabled.

That’s the extremely simplified explanation that a MIDI keyboard’s sustain pedal reproduces, at any rate. While the pedal is pressed, notes ring indefinitely, allowing you extra time to reposition your hands, but also creating a muddy dissonant mess if you’re not careful.

There’s another variation, called the sostenuto pedal, which you’re probably less familiar with. Essentially, the notes that were held down when you depress the pedal continue to ring indefinitely, but notes pressed subsequent to that are still ended by lifting your fingers off the keys. So you can, for example, strike a dramatic chord and play short notes on top of it without having to leave one or both hands on that held chord.

Most MIDI software and devices don’t support the sostenuto pedal, but the magic of scripting allows us to create it, if desired.

What I’ve created isn’t quite that, either. It’s a third pedal behavior that I don’t think I’ve seen before. I’m calling it a suspension pedal.

The notes that were held when you depress the pedal ring out indefinitely. Then while the pedal is pressed, all input from your keyboard is ignored. Finally, at the moment you release the pedal, it changes to whichever keys you happen to be pressing.

If you’ve released a note, that note ends.
If you’ve added a note, that note sounds.
If you’ve left a note alone, it continues to sound.

This was specifically devised for situations where you’re controlling multiple instruments simultaneously. Add this device to one instrument’s device chain, and you can force that instrument to fall in and out of sync with the others harmonically.

And here’s the download link:
Suspension Pedal v1.0

Version 2 will have a configurable threshold, so if you’re using a more expressive control (which sends a full range of CCs rather than simple on/off messages), you can set different instances to trigger at different levels. Unless in testing, that proves to be a terrible idea, at which point there is no version 2.

It wasn’t a terrible idea, but I’m not sure the added complexity is of tremendous benefit to anyone. I’ll leave both versions available, but for the moment, I think I prefer v1 myself.
Suspension Pedal v2.01

2.01 added a nondescript grey button below the threshold slider. Pressing it sets the threshold slider to match whatever the pedal slider is currently set to. This should make it easier to set things “by feel”; map the pedal slider first, find your sweet spot, and press the button to lock that into place.

Note: All three of these controls can be mapped to automation clips, or the output of other apps. I can’t think of a single reason why you’d want to do that, but I left the option open.

in progress

Friday, November 11th, 2011

I’m in the middle of building a new toy, or something.

(Verbs and nouns are a little tricky with such matters. “Instrument” and “Controller” both feel wrong, as do “Inventing” and “Creating”.)

Anyway, here’s a quick mockup of what will soon exist, that has never existed in this configuration before:

(click to expand)

The two colorful grids there are each chronomes.

The keyboard is a Korg Microkey, with a handful of small modifications planned.

  • I’m replacing the pitch wheel with the jack for a sustain pedal, and replacing the mod wheel with a touch strip. These modifications more or less follow the instructions outlined in this video.
  • Additionally, I’d like to add arcade buttons on either side of the keyboard (like a pinball machine) to double up on the octave buttons.

Leveraging that keyboard’s existing functionality like this is cheating in a lot of ways, but seemed a lot more attainable than, say, trying to figure out how to integrate the keybed as a raw data source (version 2 will probably rely on this chip for that). Meanwhile, this is a class-compliant MIDI controller, and a USB hub for the two Chronomes to plug into.

The space for an iPad is probably self-explanatory. That will be driving a custom template in Control.


Current build progress:

  • both chronome button boards are mostly constructed. LEDs and diodes are all in place.
  • the two chrome controller boards are not yet started, but the components are in hand.
  • Button pads are in hand.
  • Korg MicroKey is in hand, but not yet modified.
  • Touch strip is in hand. Though, I’m thinking I might make that a second foot pedal instead, and use a vMeter in that space. Or if the case is big enough, this could be a good place to integrate the Arc 4.
  • iPad is in hand. Custom template is half-written.
  • I’ve got a dozen packets of sugru ready to help integrate the keyboard when that time comes.

Still to do:

  • Finalize the design and construct an enclosure.
  • Name the thing.

Regarding the enclosure, this is going to be a little bigger and more substantial than we usually go for. I’d sort of like to model this on old wurlitzers, where the instrument was built into a suitcase, which legs attach to to form a free-standing entity.

I’d also like to integrate an overhead bar of some sort, to mount cameras and additional sensors on.

Regarding the name, I’m juggling three ideas:

  • GreaterThanZboard” or “GTZboard”
    That’s a good name for my proprietary keyboard. But, is this that? Seems like this name gives one element of the setup too much weight.
  • Double Rainbow”
    (What does it mean?)
  • Chro-Magnome”
    This calls out its lineage (born of Chronome, son of Arduinome, cousin of Monome), while acknowledging that this is actually sort of a primitive early model / still evolving.

If we’re to be completely nerdy about this, one of the things that separates Chronome from Arduinome is the Arduino version required for its controller. Arduinome uses a standard issue Arduino, where Chronome uses the Arduino Mega. So, really, “Chro-MegNome” would actually describe its lineage more completely. It just doesn’t flow as nicely.

Anyway, there’s that. Progress towards something. Yay.

arc painter

Saturday, January 15th, 2011

As we start brainstorming new app interfaces based around monome.org’s new arc controller, I wanted a tool for sketching out illustrations. Came up with this:

You’re going to have to view in a Flash enabled browser to see this.

Again, this is not an arc emulator. It won’t send or receive OSC commands, let you preview animations, or interact with a virtual controller in any meaningful way. But it may still prove handy for visualizing and explaining some things.


  • Clicking a color at bottom selects that color. If the “all” ring at bottom-right is enabled, all LEDs will change to that color.
  • Clicking the “all” ring will enable or disable it.
  • Clicking an LED up top will change it to the selected color (and disable the “all” ring)
  • Clicking an LED up top, if it color already matched your selection, will revert that LED to the color it was set to last before this.
  • When you’ve arranged things adequately to illustrate what you had in mind, take a screenshot. Do what you need to in Photoshop and attach the results to a forum post.

As this was a quick sketch itself, the source code isn’t all that exciting, but if you’ve got Flash CS4 handy and some time to kill, have at it.