need assistance building first monome patch (light show)

  • i need some help building my first monome patch with max. it should be a relatively simple endeavor but i still need a lot of help. here's the idea ( i'm calling light show):

    -turn the monome into an 8x8 grid of midi notes or cc's (similar to how buttons work in 64insanity)
    -the patch has midi input/output
    -on the input side of things, i want the patch to be able to receive a clock from another source (such as a DAW)
    -pressing & holding // pressing & releasing a button on the monome triggers the corresponding midi note or cc and ALSO triggers an LED pattern that moves according to tempo/clock settings

    the idea is that your presses become visually pleasing (in addition to musically interesting) as you interact with the monome. the patterns of shapes that will light up on the monome will vary according to clock settings (they could be synched to a clock, independent of tempo, etc) and other visual settings.

    i will create many patterns / shapes / movements (think conways game of life) that fire from button presses.

    others can contribute their own patterns and shapes and movements.

    we will have a very fun audiovisual application.

    i want to start simple and then eventually expand both functionality and grid device options (64, 128, 256). let me know if you can guide me through a build. all help is appreciated.

  • So, you want it to look like polygome, but only trigger one note or CC per button?

    This is probably more ambitious than a "first patch" ought to be. I don't see it as "a build" at all, but rather, many. Let's break it into bite-sized chunks, with built-in bailout points so you can cut your losses if things aren't going right.

    v0.01: Start with a very simple pattern. Say, a light that blinks on and off in time with the beat. On for a quarter note, off for a quarter note, repeat. Don't even use the monome yet; just an onscreen toggle so you can see what it's doing.

    v0.02: Add an onscreen tempo control, and make sure the simple blinking light behaves appropriately as you vary the tempo. Don't worry about external sync yet.

    v0.03: Kill the onscreen toggle, and move that blinking light to the top-left button on your monome.

    v0.04: Make the pattern only active while you're holding that button. And test this thoroughly to ensure that it's behaving in line with expectations. ie, are lights quantized to the beat, or merely in tempo, offset by when you pressed them? and then, whichever it is, is that fun and responsive / still what you want?

    v0.05: Let the pattern play on any button or buttons that you happen to be holding. Test thoroughly again, revisiting the questions of v0.04

    v0.06: Alter the pattern. Maybe it's a more complex rhythm now. Maybe the light bounces back and forth between the button pressed and the button to its left. Maybe you test with both, separately. The point is, as before, you need to make sure the interactions feel right. v0.6 here is the core of your design. Also in testing this step, be sure to change tempo a few times.

    v0.065: Make the pattern sufficiently complex that pressing the wrong two buttons will cause their lights to overlap. Then press those buttons in every arrangement imaginable, and make damn sure you're happy with the results.

    v0.07: Figure out how to store and select patterns.

    v0.08 - optional: Build an interface to edit patterns with your monome (again, like polygome) so the user isn't forced to edit your patch or a text file in order to create patterns.

    v0.85 - optional: Build an interface to let the user export patterns to a text file, or at least their clip board, so they can share on the forums.

    v0.9: Attach outgoing MIDI events to your button presses.

    v0.95 - optional: Allow incoming MIDI to serve as button presses.

    v1.0 - optional: link your tempo control to Live's transport, or to an external MIDI sync.

    v1.1 - account for different grid sizes.

  • GreaterThanZero's path was pretty good.

    Might I add though, before you even start I would spend a bit thinking about how you want to make "visually pleasing" visuals, i.e. what rules govern the patterns.

    You could base it off of "collisions" wherein if it tries to light an already lit pad then it moves in a random direction at the speed determined by the MIDI clock.

    Also of interest, it might be cool where the speed of movement is determined by a sinusoidal (sine wave) equation. So that it's smooth ups and down. Or better yet a user selectable equation pattern. I.E. Exponential, sine, cos, linear....

    ALSO, BIG NOTE: I would consider using an "invisible grid" to actually do any movement calculations. It might be more interesting to move everything on a grid that something like 200 X 200 for calculations but display on the 8X8 physical monome grid. because then there's lots of amazing things going on in the background.

    I'm going to stop now. Computer science has made me think too fast haha.

  • thank you both for the suggestions. this is more of an undertaking then i thought. do either of you have an email i can contact you at to ask you lots of questions regarding design and functionality?

  • Yeah, my first draft was much more discouraging. But I think if you take it one step at a time, it should still be doable.

    You should probably know that there a few steps in what I laid out that are beyond vague, largely because I haven't thought them through or don't know how to do them. I say this so you know what to expect when you email me. =)

    "figure out how to store and select patterns", for example, is a deceptively simple description -- it'll probably encompass a whole thread on the forum or a day in the Live Chat, brainstorming and experimenting.

    Anyway, email is GreaterThanZero at gmail.
    ...which also works for Google Plus now, if you're into such things.

    I've been procrastinating on some other responsibilities, so I'll probably be slow to respond for a while, but I'm not ignoring you.

  • Yes. You can contact me at:

    or just here. I'd be more than happy to help, but be wary, I'm leaving the country for two years in 2 weeks or so. After that, I make no promises as I won't have access to the internet.

  • @away message

    how is this going? it sounds really wonderful. i would love to see more of your discussions and how the project is progressing. thanks

  • the project has been put on indefinite hold due to time constraints.

    much of the initial theory and mechanics need to be reworked. learning jitter would benefit this projects greatly as well.

    i can suggest that serialosc's /map command provides for a wonderful method of graphical interfacing. an entire 8x8 grid can be set with 8 numbers.

    as it stands, there is no estimated time as to when i will pick this back up and restart development.