Exquisite Script: A collective scripting game for norns

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.)


whew. Thanks to everyone for tuning in & bearing with. I’m going to work on the engine a bit more tomorrow (will probably stream that too, just for the hell of it) and then aim to make a less rambly walkthrough of it in the evening, so future participants don’t have to sit/sift through all of that. I had a lot of fun, though – especially playing around with engine commands and an extra clock coroutine in the REPL at the very end.


I lovvvve this idea, have thrown my hat in, ready to embarrass myself :woman_shrugging: :call_me_hand:

small point, and I know it’s not mine to request but re:

do you think we could limit dependencies on external hardware so as to cast a wider net?

edit: [ or not, both paths seem interesting, just thinking about loose vs tight coupling, i guess ]

1 Like

it’s sort of set up so that there’s no need for the next contributor to adhere to the dependencies.


Exactly - for instance, @synthetivv is currently converting my original JF-focused script to use a bespoke supercollider engine :fire:


That’s the goal. I’m working this morning on smoothing out some of the least interesting Technical Difficulties I ran into yesterday, and plan to continue the stream at 2 PM ET / 7 PM UTC. Also reading up more on just how JF synthesis mode works (and learning that some assumptions I’d made were pretty far off; whoops).

edit: dog walk’s going long, might be 10 minutes late.


alright, here it is: overview/explanation of the Imaginary Friends engine. I didn’t do much with the script that was “creative”, but hopefully others with unjust friends will find this useful while working on this project.

@midouest, have at it!

P.S. I’ve saved the Twitch streams from Saturday and Sunday; some topics I glossed over in the video above are mumbled about more there, including the fact that I’m using Visual Studio Code + vscode-neovim + the CLI-based maiden repl, the process of adding Lua-based control over SC using addCommand + mapping the resulting engine commands to params, the thought behind all the lincurve stuff in the engine code, and so on. Code is here.

This was a lot of fun and definitely an educational experience for me; I hope others get something out of the video(s), and I’m really looking forward to seeing where things go from here.


Currently getting caught up on what people have done so far and then I’ll dive in! I’m going to try to have something up by the end of the day (I’m taking vacation this week :beach_umbrella:). I love what people have done with the script so far!

1 Like

I was struggling to decide on what to add to the script. After staring at my IDE for a bit with the script plucking away in the background, I decided it could use a little bit more modulation.


  • Pattern periodically modulates around the circle of fourths
  • Imaginary Friends library can trigger Just Friends instead of the SuperCollider engine (in params menu)


Here’s a little demo of the script playing Just Friends through a pair of W/2 in delay mode:

Over to you, @dan_derks!