Developing Supercollider Plugins For Norns- Where to Start?

oh man, a clouds ugen would be awesome!

1 Like

so I just complied MiClouds but not entirely sure what to do next to test it

I forget where I need to install these (and do I include the cpp files, or just the .so and .sc files?)

@Justmat do you wanna try?

EDIT (a few hours later): I have a very basic MiRings engine working.


Volker – these are awesome TY!

Clouds engine WIP

Thanks geplanteobsoleszenz!!

Edit: FWIW - I couldn’t get Plaits to compile on my pi, so would love to chat with someone to help figure that out.

(and I totally stole this cloud from @Justmat’s Showers :laughing: Thx Matt! )


@shreeswifty thanks, Patrick

@okyeron great you got it working!
Can’t really help with the pi, but what’s the compile error you’re getting?

here’s where it barfed on make

[ 96%] Building CXX object CMakeFiles/MiPlaits.dir/MiPlaits.cpp.o
[100%] Linking CXX shared module
c++: error: Accelerate: No such file or directory
c++: error: unrecognized command line option ‘-framework’
make[2]: *** [CMakeFiles/MiPlaits.dir/build.make:549:] Error 1
make[1]: *** [CMakeFiles/Makefile2:73: CMakeFiles/MiPlaits.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

gcc (Raspbian 8.3.0-6+rpi1) 8.3.0
pulled supercollider source today but not sure what version that source is. (3.11.0?)

EDIT: Accelerate is MacOS only I’m reading??

EDIT 2: can I just delete target_link_libraries(${PROJECT_NAME} PUBLIC "-framework Accelerate") from CMakeLists.txt?

EDIT 3: removing that seems to have done the trick and it finished compiling without errors

EDIT 4: MiVerb hits this error:

[ 50%] Building CXX object CMakeFiles/MiVerb.dir/MiVerb.cpp.o
/home/we/mi-UGens/MiVerb/MiVerb.cpp:31:10: fatal error: SC_PlugIn.h: No such file or directory
 #include "SC_PlugIn.h"
compilation terminated.

which is odd since the others have that and compiled ok?

1 Like

ah, yes, I used apple’s vDSP_sve for trigger detection to speed up the vector summing. You can comment it out in the cmakeLists file. In the source you should probably delete the accelerate include at the beginning and replace the vDSP_sve call with a simple for loop which sums all values from the trigger input.

1 Like

EDIT 4: MiVerb hits this error:

sorry, that’s a leftover - comment out the “set(SC_PATH /Users/vb…” in cmakeLists.txt and provide your own path to sc sources.


Nice. Got the other compiled now. Thanks a bunch.

I’ll package these up somehow tomorrow to share with the class :slight_smile:


Have you managed to compile the whole set for Pi, then?

Yep. Will put everything together and post tomorrow (way past my bedtime already)

Have basic Norns engines + demo scripts working with rings and clouds so far.


20 characters of That’s great!!

UGH been moving and unpacking for the past two weeks. that on top of work has left me zero time to work on a anything.

@okyeron super amazing work on the MI stuff – I haven’t had a chance to check any of it out yet, but I’m really excited to take a look. I’m hoping that I will have some time to gather some thoughts about how to write/debug/use some custom ugens once I’m a little more settled.

Also hoping to have some actual… non-trivial examples beyond like “here’s a saw + sine” since uhhh… I think understanding how to deal with phase and having frequency change are like the two big things to understand when dealing with creating ugens (beyond the standard "this is how C++ works sort of stuff).


To be clear - @geplanteobsoleszenz did the ugen work and I’ve just been recompiling his work on linux and “Norns-ifying” them. :).

1 Like

FYI, The Supercollider Book has a chapter on writing unit generator plug-ins, might be worth a look. There’s also another, more beginner-friendly chapter that explains what they are. =)


I’ve been meaning to get a copy from the library, but with the times it’s kinda impossible. As it turns out though, the UGen chapter was hosted on the book’s website back in the day. If anyone else is interested, it’s still available on the wayback machine: