Exquisite Script: A collective scripting game for norns

Taking a cue from the classic surrealist game Exquisite Corpse, I propose a programming-based variation called…

Exquisite Script.

Focusing on norns, the idea is for members of the community to collectively iterate on a script, taking it in fun, strange new directions with every successive pass. Each installment of the game should be taken as an opportunity to both expand on (or dramatically transform) the script and to educate others on new concepts.

There are no explicit rules dictating what direction you can or should take with the script, and exploring both lua and supercollider concepts are fair game. Also !important – one contributor might design a script variation around specific modules or tools, but the next contributor should feel free to steer away from those completely (i.e. a polyphonic sequencer concept for Just Friends could transform into a multi-voice softcut exploration).

Each iteration doesn’t necessarily need to push the script into further complexity (although that’s also totally cool). You might be inspired to make a small tweak, and sharing that small tweak may help or inspire someone else. As the adage goes, the best way to solidify what you’ve learned is to teach it.

Lastly, the game should also provide us with opportunities to share feedback on each others’ iterations.

Participation & Submission

Wanna jump in? Just follow these guidelines to ensure that everything stays more or less organized in the thread:

  1. Add your name to this spreadsheet to claim a spot, and add a tentative submission date – this will help keep everyone in the loop. Feel free to grab the next available spot, or one in the future in you’re feeling adventurous :slight_smile:
  2. From there,
    • Clone the exquisite-script repo from the monome-community org on github + create your own branch.
    • Push your finished script iteration to the repo, and try to follow the naming convention (if you’ve created installment #4, name your file something like es-04.lua
    • Reply in this thread to create a dedicated post for your work. Your post should contain your tutorial (could be a video or something written), and a link to your file in the repo. I can take care of updating the top post when new installments become available.

If you’re live streaming your installment, feel free to create a post with a time/date + a link to your stream, then add the recording and the gist later.


  1. @olivier
  2. @tyleretters
  3. @synthetivv
  4. @midouest
  5. @dan_derks
  6. @infinitedigits
  7. @andrew
  8. @tyleretters
  9. @rbxbx
  10. @Justmat
  11. You?!?


To kick things off, I’ve created a simple script for norns, crow and just friends that generates independent sequences for all six of just friends’ voices (in synthesis mode). Each sequence is driven by a dedicated - and modifiable - co-routine based on norns’ global clock.

In the video tutorial, we’ll explore:

  • Some scripting basics (though a dedicated introduction to lua is probably best to really learn the fundamentals)
  • Utilizing norns’ global clock system
  • How to maximize the flexibility of functions using arguments (thanks @dan_derks :slight_smile: )
  • Basic screen drawing stuff + key/encoder interactions

Who’s next?!


guhhhhhhhhhhh this script RULES ALREADY. the sequences sound so so lovely, the demo is super clear – holy cow I cannot wait to see where folks take things!! thank you for starting this!!

1 Like

Totally in for this. I’m up next!!! Gonna do this today.


I’ve signed up too. @Olivier this is a very cool idea and the script sounds great so far. Looking forward to watching your whole video and to seeing what everyone else comes up with.


This is such a fun idea.

Hopefully by the time my slot comes along I’ll know more than zilch of Lua/supercollider and I’ll be able to contribute something.

1 Like

Awesome! So great to see it’s generating some excitement :slight_smile: Can’t wait to see everyone’s contributions.

p.s. I’ll add people’s names to the installment list in the top post (based on spreadsheet submissions), but it’s now an editable wiki if you want/need to edit.

1 Like

Also might we want to ask people to commit to a timebox for their turn? It doesn’t have to be the same for everyone but I think it would be healthy to force us to not procrastinate since this is a blocking / single threaded endeavor.

I can start: I commit to having this done by Sunday, though I hope to have it done tonight.


I think that makes sense. Perhaps each participant could be responsible for setting (even a tentative) due date, to keep everyone else in the loop too. I’ll add it as a field in the spreadsheet.


all signed up

this might be a recipe for some poorly organized code, but i think that’s a good thing :cowboy_hat_face:


this is an awesome idea! can’t wait to see where it goes :partying_face:

1 Like

Created a dedicated repo in the monome-community org on github to collect our work: exquisite-script. Thanks to @tyleretters for the great idea and to dan for the :key:


I’m gonna cover cloning and stuff in my video too! So pumped. Wiring up OBS now…



Continuing @Olivier’s beautiful work, we’ll:

  • Fork the repository.
  • Clone the repository to norns.
  • Add a lib directory.
  • Add an include.
  • Suffer as I struggle to decipher the differences between screen.line() and screen.line_rel().
  • Suffer more as I struggle through basic arithmetic.
  • Draw some interactive lines.

@synthetivv you’re up!!!


yes!! two in a day!!! this looks amazing @tyleretters :rocket:


Woah, okay! I’m thinking I’ll do a stream this weekend, and post the recording here. If anyone wants to tune in and has a preference for, let’s say, 7 PM tomorrow evening or 2 PM Sunday afternoon, US eastern time, let me know. Lots of options… being Just Friends-less, I’m sorta wondering about a SC engine with FM between the voices, or something like that… or microtonalization, much closer to my comfort zone. we’ll see…


I’m there!!! Shots whenever you crash the app.


alright, I’m gonna start putting together Imaginary Friends (JF-style 2-op FM engine with a Lua wrapper designed to make it as close to a drop-in replacement for JF as possible) at twitch.tv/synthetivv at 7PM eastern / midnight UTC, and then I’ll see where I want to go from there.

update: live!


@synthetivv That is a brilliant idea.

@Olivier I was so excited to get started I failed to compliment you on your video. Awesome work on that. I love how clearly you explained your thinking. I learned a lot.


Livestream happening now! (New post to bump it to the top.)