Orac, Sidekick, Pure Data and SC for Norns

Ive started work on adding OSC support to sidekick, and more graphics too…
the idea is sclang, python, shell scripts will all be able to then access the hardware … so get encoder and button events, draw to the screen.

all that said, there is still the ‘other part’ of your request…
from what I gathered you want to be able to have a ‘terminal like’ console on the norns screen - correct?

I have to say I’m not sure about that…
I think fundamentally the screen is too small on the norns/fats to really be ‘comfortable’ for that…

I guess typing in a few sclang commands (eg Ndef, Pdf) for live coding you might get away with it,
but if you type something wrong, then you need to see error messages… and this are VERY verbose on supercollider - even on a computer screen! … hard to know how you’d deal with that.
similarly you quickly start needing to be able to recall other lines, edit them…
and before you know it that simple terminal application could get quite complex.

1 Like

Yes, that’s what I mean’t but if the limitations of that screen make it not possible / suitable then I understand. I thought you would be able to scroll left / right. The thought behind it was to have something portable and not having to have a laptop to live code, just a keyboard. If that’s not possible then the alternative is not to livecode, and make your patch on a computer and drag and drop that onto Norns which seems the most viable, which would be great also. It would still be a minimal setup with no computer keyboard / or laptop screen.
What I’m interesting in specifically are making self generating patches were you can steer them in certain directions with minimal control, a few knobs, no piano keyboard, a small controller with sliders.

1 Like

yeah… its an interesting area, is it worth ‘replacing a laptop’…

I admit, Im more cautious recently, as a few times Ive spent significant effort getting things to run on a rPI partly to be ‘dawless’, and partly ‘because I can’…
and Ive looked back, and thought… why not just run this on my laptop? so these days I try to challenge myself (before investing too much effort into a project)

not sure I get it right, and I keep experimenting e.g. the other day, I got a tracker running on my organelle, with a 7" screen and mini keyboard… sure, its cute, its fun… but is it actually any more practical than using my laptop with Renoise (which is a much more ‘powerful’ setup)

at the moment, the two ways I found I get value out of these devices is:

a) standalone - running patches (be it supercollider, or pure data)
Organelle, I love for this, as its got a (albeit primitive) keyboard, so its complete, can be used anywhere.
Eurorack modules (Bela Salt, Nebulae) , acting as standalone modules

b) live coding (& patch development) (supercollider)
Eurorack modules… (Bela, Nebulae) so here I connect a laptop, which runs supercollider IDE.
the reason, Im using the modules in this case is because they are ‘interfacing modules’
this way I get a decent screen/keyboard, but I’m ‘integrated’ into the eurorack world, with both audio and cv patching.
I really love this setup… its comfortable but still has the hands on control.

(of course, I could use the laptop + ES8, but this lacks the hands on control at the eurorack end)

unfortunately for me (perhaps because I don’t have a grid?) , my Norns (Fates) tends to fall between the gaps, so it’s not getting used much… if I want portable I grab the Organelle, otherwise Im a bit Eurorack obsessed at the moment :wink:

that said, the reason Im going to add OSC support to sidekick, and so get sclang working, is perhaps then Id write standalone SC patches for norns. (as you mentioned)
what I can do then, is like Im doing on the Nebulae now, is use a nice combo of laptop + norns for development.

what I do on the Nebulae for development/live coding is… (and so would do on norns)
have Nebulae running the server, and proxying the osc messages to sc-ide running on my laptop.
so I can do all the dev on a decent screen/keyboard, but in a way that I can literally just copy the develop SC patch over to the Nebulae and then it runs standalone (without laptop) on Nebulae.
its a really fun way to develop…

Im hoping if I do this for Norns, because it’ll be similar to what im doing on the Nebulae (and Organelle), I’ll get some synergy and be able to transfer patches across to norns without specifically having to develop for it… so hopefully my norns will get a little less dusty :wink:


Is there an installation method that will work for a norns shield?

sorry, I dont have a norns shield, so cannot say… is it the same as the normal norns?
if so just follow the install instructions and will work.

@okyeron - are there any differences in shield that will stop this working?
(my guess is it should work…unless there are some packages missing?!)

In other news 0.2.0 is released…
if you have sidekick already installed, ‘Check for Updates’ will install it,
if you don’t (why not?) then just follow install as per top post.

Next post will contain details of whats new … and its quite a bit :wink:

1 Like

Sidekick 0.2.0 Release

upgrade with ‘Check for Updates’ in sidekick menu
or install as per top post

note: this will overwrite your existing sidekick folder,
if you have patches already installed, I recommend you back them up beforehand!
p.s please do just copy, old versions of system files back once installed (e.g. sidekick.json) , as there are new settings in this file.

Whats new?

  • Sub directories for patches
    this not only allows more organisation,
    but also more ‘isolation’ the parent directory can contain contain pre/post scripts, and things like pd-opts.txt, so groups of patches that need similar setup can use these without ‘polluting’ other patches.

  • Extended graphics api in NuiApi
    rectangles, circles, setpixel, filled areas… lots to explore :slight_smile:
    available using nuilite api, pure data or osc (see below)

  • OSC support
    Sidekick now sends and receives OSC messages…
    this enables you to write applications in any language with OSC support to do things like:
    – ‘paint’ to the norns display
    – receive encoder/button events
    – send/receive other sidekick events

  • Supercollider support
    – use ‘vanilla’ supercollider
    – launch supercollider patches (scd) directly from Sidekick
    – support for drawing to display, receiving encoder/button events etc. (via osc)
    – live-coding support using the SC IDE on your desktop/laptop
    – does not affect Norns use at all (see below)

  • Demo patches
    The demo patches are now installed by default, there are demos for pure data and supercollider.

New OSC/PD Messages

Ive listed the new messages in the default supercollider patch

Supercollider & demo patches

tech note:
supercollider home is : ~/sidekick,
if you want to update the startup.scd its in ~/sidekick/.config/Supercollider/startup.scd
doing so will NOT affect Norns

  • default
    a template to get you started, showing messages

  • simple
    launches a simple synth, shows how to use display and control it via encoders

  • live coding
    this is a template showing how to enable ‘live coding’ on norns

  • grainbuf
    simple granuar demo, again showing how to interface with norns hardware and load sound files

you are free to delete the demo patches, or move them around
(though, id keep them handy … in case you want them later esp default/live coding)

Supercollider live coding patch

This patch can actually be used for 3 purposes,

a) live coding

use the supercollider IDE on your desktop/laptop, using the Norns as a remote sound engine.
you have the ability from your desktop to paint to the norns display, and get all the events from the encoders/buttons into sclang … so great for using with Pdef etc.

b) development

this is really just a variation of (a),

since the messages that are sent by the live coding patch, are the same as the sidekick (it just adds as a proxy) - you can develop patches on your desktop that are run on your norns, and then just copy them to your norns to run standalone!
(really efficient and easy to use workflow!)

c) as a template for adding to your own instruments for remote control

so the live-coding aspect, is a SC patch - demonstrating how to proxy messages onto to remote client,
you can this as example of how to allow your own patches to be controlled remotely.

reminder about sclang / scsynth

its worth remembering what is sclang code and server side
when running a patch from sidekick, we are launching both sclang and scsynth.
so you can have all the fun of client language support (PDef :love_letter:) and server side.

when using things like midi remember this is client side,
so when you run a scd patch on Norns, it’ll get midi from devices connected to Norns.
if you move to live-coding, then the sclang midi code you run on your desktop, is going to talk to midi devices connected to your desktop.
this is fun, you can construct patches where you use midi controllers connect to both norns and your laptop !

If you want Supercollider, why not just use Norns ?

its an obvious question… the answer is simple - if thats what you want, then go-ahead,

Im providing choice , no more , no less!

personally, I wanted a more ‘vanilla’ experience, since I’m developing on other platforms,
so I want to use sclang rather than lua, and for my purposes I don’t need things like softcut/crone.

this is no slight on norns, its a personal choice… which I offer to others if they are interested

you are free to use what you want!
you can use Norns, you can use Sidekick supercolider or both (they do not interfere with each other)


This is fantastic thanks once again.
am getting this error when trying to vnc to my pc:-

starting sidekick
using framebuffer /dev/fb0
terminate called after throwing an instance of ‘std::runtime_error’
what(): unable to bind udp socket


most likely you are running 2 instances of sidekick.
are you trying to start sidekick from the command line?
if so, did you stop the sidekick service?
(sudo systemctl stop sidekick)

other than that, its like something is using port 3000/3001?

advanced tip

one I forgot to mention, but very useful
Ive introduced a lot more ‘hook points’, which are optional scripts that can be used to change how things behave… these are like the old post-patch.sh script but a bit more powerful.

they cover things like, PD options, supercolider options, what to do when patches start and stop.

here is a ‘real world example’ I use :slight_smile:

using supercollider with an alternative audio interface (ES-8)

I use norns connected to my modular via an ES-8 audio interface.

so by default, sidekick when start a supercollider patch, also starts the ‘norns jackd’ service, to get jack running. it does this with a script called ‘start_sc.sh’ (and a stop corresponding stop one)

now I don’t want to edit the norns jack service, as I dont want to affect norns behaviour.

so instead I can edit start_sc.sh to launch jackd itself, with new parameters to utilise the ES-8

ok, but that means every SC patch on Sidekick would now use the ES-8,
I want it more selective :slight_smile:

so I put start_sc.sh, into a patch directory - low and behold, it will be used only with that patch. so I can default to normal output, and only that patch will use the ES-8.

nice, but inconvenient if you have a few patches…
so, there is another level, sub directories.

I can create a subdirectory for patches called (e.g.) Eurorack, then put my patches in there.
then put the start_sc.sh in the Eurorack folder, now anytime a (sc) patch in that folder is invoked it will be connected to the ES8, but other SC patches will be unaffectd.

(and yes for ‘linux’ heads, you can use symbolic links, so you dont need to even duplicate patches :))

basically hook files, like this work on the principle of…

use file in patch directory , or its parent directory, or the main sidekick folder (aka global)

btw: to do a similar thing with Pure Data , you just need to add a pd-opts.txt file, again hierarchy is respected.
of course, this means that your ‘Eurorack’ folder can now be a mix of Supercollider and Pure data patches :slight_smile:


Use the details tag on discourse - we really don’t want code to disrupt this thread :slight_smile:

No idea about compilation issue, often it’s compiler version - it’s whilst compiling oscpack which is an open source lib I use on lots of my projects, on lots of platforms so bit surprised it’s not compiling for you.

Are you sure it’s not just a warning?
Why are you recompiling? that’s a complexity we should try to avoid :wink:

sorry yes its as i have a 320x240 screen on my diy rpi norns, all i changed was 128 to 320, 64 to 240 at the beginning of the script and added a scaling factor like this:
cairo_scale(cr_, 2.5, 2.5);

on line 640 in NuiDevice.cpp


this thread is becoming a bit unmanageable, so Ive decide to move important information about how to use Orac, Sidekick , PD, Supercollider to its own wiki

Orac, Sidekick, Pure Data and SC for Norns

I’ll still post updates here, but will try to make sure most of the details end up in the wiki,

if anyone would like to contribute just DM me, and I’ll explain how.
(easy you just need a GitHub account)


Doing a test install on shield now. No issues with install, but no sound yet. Did an update and went back to Norns, then back to Orac and demo patch making sound :ok_hand:

All good on shield as best I can tell

After all… I am getting some funky issues with audio not working everytime on shield. If any other users on OG norns or Shield are not getting audio, could you DM me, I’d like some help debugging. Thx

1 Like

update to norns shield…we believe we know what the issue is.

on norns.shield (only, not full fat norn, nor fates) norns-jack, is getting started by multi-user.target.wants - this is odd, since on other version of norns, it doesn’t it gets started by ‘norns.target’ - we don’t know if this is an intentional change or not.

the ‘fix’ (workaround?) is simple

sudo rm  /etc/systemd/system/multi-user.target.wants/norns-jack.service 

this seems to have no adverse side effects

  • it works for when sidekick used, (so norns.target is disable)
  • it works if sidekick is uninstalled …
    as norns-jack is started thru the norns.target, as is the cases with other norns platforms

so if you have a monome diy norns shield, sidekick/orac will work with this one small change.

let me know if you try this and it works, or if you have any issues. (I’ll add this to the wiki )

if we get enough positive feedback (i.e. that it works), then I will add this to the sidekick install, so that future shield users do not need to do this manually.

Any thoughts on latest update, supercollider?

Ive got a couple of minor changes scheduled, so if you have any other observations… now is a good time to mention it… so that they can be put into the ‘next’ bug fix release.

1 Like

hi there again checked which ports are in use when i get my error message when trying to restart sidekick in vnc client. i checked the ports with this command:

netstat -lptn

and no sign of 3000 or 3001

thanks again. :wink:

Would this mean we cant switch between norns and sidekick without uninstalling sidekick?

Nope, the fix has no side effects.

I also have the issue okyeron mentions above on DIY norns shield. Will give the fix a go and report back.

1 Like

do you get it , if you start sidekick without vpn?

also is sidekick working when booted? or not at all?

not recommend for general use… but you can give it a go to ‘debug’
edit sidekick.json, you will see sendPort and listenPort,
you can change these ports to other ports to see if you have a clash with other applications you have running, or set them to zero to turn off osc.

Monome Norns Shield ONLY

to reduce any ‘anxiety’ about making this change…

if you want to ‘undo’ this fix, just type:

sudo ln -s /etc/systemd/system/norns-jack.service /etc/systemd/system/multi-user.target.wants/