corners is a grid controlled physics instrument.


using the grid the musician can add gravity wells to the space to manipulate the “puck”. velocities, positions, and border crossings are mapped to sound parameters and events.

this script is ported from @tehn 's original m4l script GitHub - monome-community/corners

molly the polly is used as an internal synth source and it can also send midi out to use with external gear.

internal synth params and external cc’s can be mapped to the puck’s position and velocity.

big thanks to @tehn and @mlogger for suggestion the idea in the norns: ideas thread!


  • norns
  • any sized grid
  • molly the polly


  • external synths


  • key 2 random lead

  • key 3 random perc

  • enc 2 friction

  • enc 3 gravity

  • grid press and hold a key to create a gravity well to manipulate the puck. notes are triggered while holding keys

  • double click grid edge toggle a boundary’s reflection between bounce or warp

  • params menu here you can change which notes are played per boundary and map physics properties to control midi cc’s or internal synth parameters


on maiden:


on norns:
system > reset then launch corners

version notes


  • Added the ability to generate random notes within a scale and octave range. Key shortcuts added to quickly generate new notes. Can also generate random notes every boundary crossing.
  • Fixed bug with the key forces being uneven.


  • added separate physics update that is synced to the clock. you can change the sync rate in the params menu.
  • walls now light up when the puck reflects


  • updated params to make it easier to change sound sources for boundary events and key events.
  • added fix to prevent stuck notes if changing sound settings.


  • initial release



i love projects like this that zoom in on one really core idea. what was the inspiration for this one? i love all the “game” mechanics you bring to norns.


Thanks @tyleretters ! Inspiration was that I was reading through the norns: ideas thread, saw this had been requested, I checked out tehns video and thought it looked very expressive and fun to play. I especially liked the warping. I have a good understanding of physics math so I couldn’t resist porting it. The core of the original code is in javascript, and was very quick to port the core functionality.

Now that I can map the positions and velocities to parameters I’m finding it amazingly fun to play, easy to get some crazy Blade Runner / Vangelis vibes! Molly The Polly was my synth choice since it’s easy to work, sounds great, and has built in features to randomize the sound.

I had thought about adding more features like being able to lock gravity wells or having repulsion spots that push rather than pull, but I’ve decided to keep it simple and playable.

Now I’m thinking about ways I can change the notes up without having to manually pick each one. I’m thinking I’ll map note velocity to puck velocity at border crossings and add a feature to randomly pick the notes based on a scale mapped to a norns button.


Quick jam before I sleep, molly the polly + digitone


man thank you so fu#kn much for this port! spent all evening and having a blast!

I can’t tell if I really want this or not but it certainly is itching in the back of my brain. (My Mark Fell brain)

Could gravity and/or friction have the option to work off a master clock? internal or external. Playing with one hand and getting “mathy” divisions while tweaking the encoders with the other seems like a solid experience.

Either way. as it is… the bee’s knees! gracias @Quixotic7


@MatthewAshmore you’re welcome. I could sync the physics to the clock and make it so 120 bpm has roughly the same update rate as it has now or faster. Changing the bpm would increase/decrease the simulation. I’d probably want to keep grid rendering at 20 fps which is also the current simulation rate to avoid freezing the grid. I can probably do the param cc updates in a faster clock rate. I’ll have to play with it and see if it works.


Instant classic :nerd_face: really curious how this will evolve


I assumed things like grid updates/physics division/ cc data might be a bit much. Cheers for looking into it!

1 Like

This is mad. I played on Corners last night and couldn’t work out how to get a vibe, but you’ve nailed it. Feeling inspired now!

1 Like

I’ve pushed a new update that does a separate physics update that is synced to the clock. Default rate is 1/16 of a beat so 32 times a second. I lowered the default gravity and friction levels to compensate. You can change the rate in the params menu.

Thanks! The key is to map the “b / boundary” events and key events to different sound sources. Key is good if it’s more of a pad-like sound and b more percussive. I’ve updated the params menu to make it easier to change the sound destination for each event and ccs. Experiment with mapping the params to different synth parameters, filter cutoff being an obvious choice. Then while holding keys, you can dynamically change the sound which is a lot of fun!


You sir are a madman! Many thanks. Will try out after work today for sure!

1 Like

THIS is crazy awesome!
i really dove into the script for last night’s noiz session but i need to dig into more!

just thinking out loud…:stuck_out_tongue:
feature request…
using a long press on the grid would add a square or barrier into the playfield for more bounces.

here’s last night’s noiz…
corners generating noiz as well as controlling an Access Virus B.
also scripts in play are @NightMachines nmQuadroDubber and @Olivier Compass.
other noiz from two Double Knots v2


Nice noiz session! Gets real good around the 10 minute mark.

Adding additional barriers would be fairly intensive dev wise, I’d have to figure out how to configure notes for each barrier and holding the grid to add barriers would conflict with the current interaction since you often hold down keys to manipulate multiple gravity wells. Better would be to place by holding a key on norns then pressing to add/remove. Though I was thinking that maybe adding additional vertical barriers could be cool, as you could strum them with the puck. I’ll have to think about it. I do like how simple the script is currently.

1 Like

Instantly loving this. Thank you!

1 Like


thanks for considering it!

Hmm how about the barrier changes to other note automatically after being hit? :thinking:

1 Like

I added a feature that will randomly play a note in a scale and and octave range when hitting a barrier. You can enable it in the notes section of the params menu. Cycling through a sequence of notes like an appegio could be better though.


Thank you sir! :v: :v: :v: U DA BEST

oh man another cool addition! great suggestion @Ukasz !

I was getting ready today and randomly thinking that if you keep adding features the basic corners app it is going to turn into some type of archologies variant
Im not NOT requesting a corners module @tyleretters :crazy_face:

I didnt get a chance to test the new sync out yesterday. But im free all day so here we go!! :partying_face:


Exactly, also thought about Arcologies :slight_smile: I wonder what could be done with this if it used samples. One of my favorite things to do is to take 20-30 new samples and run them through oooooo, barcode, twine and so on to see what will happen to them.