Exquisite Script: A collective scripting game for norns

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!


This sounds really nice, and switching between JF + IF with a param is a great idea (much better than having to edit the script).


i just want to say i wish my lua skills were this good because i love idea --i use a similar strategy for or a storytelling class and i love it and whatever you all come up with will be exciting by the sheer notion of the style of participation.


Great work @midouest! I’ve fallen behind a bit, but I’m looking forward to catching up on the installments + lessons this week.

p.s. @dan_derks – feel free to finish/release cheat codes 2.0 before diving into this :laughing:


You can still sign up and do something simple!




I have a finished (I think?) script based on this exercise but wasn’t sure if I should post it here out of turn. It’s kind of a branch of the original script Olivier posted, with Imaginary Friends and MIDI output thrown in.

1 Like

guh, i’m very sorry this pause was all my fault! deep in cheat codes 2, so if folks want to shuffle my name to the end of the list and keep it alive that would be :sparkling_heart::rainbow::sparkles:.

(stalling was my greatest fear and now at the precipice, it’s clear that community overcomes fear and the greatest gift to give is the admission of struggle!)


@unicity gah – my bad for not following up! I’ll admit to struggling as well in recent weeks, which coincided with a break from lines. Please – by all means – do add your script to the repo :slight_smile:

1 Like

Oh man - no acts of baddery have been committed as far as I’m concerned! :heart:

I’ll see if I can figure out how to add the script to the repo sometime this weekend.