Have extensions moved . . .? I can’t find /usr/share /.

I am trying to install Atari2600 and have got this far . . .

. . . but is this the correct place and, if so, the correct way to install such an extension ?

I am getting this message:

exception in GraphDef_Recv: UGen 'Atari2600' not installed.

So I assume the answers to the questions above are no, not correct . . .

So where should extensions, such as Atari2600.sc, be installed ?

Hmmm… is this from my Game-emu work from the f0plugins?

or is this something you’re doing on your own?

In my case the entire f0plugins folder should go in /home/we/.local/share/SuperCollider/Extensions as there’s C code that is required there. The Engine Engine_Atari2600.sc in my case would go in your script folder.

Also - you need to restart supercollider for any engine changes to be recognized (recompiled)

I dragged it from f0plugins, yes. From the /Application Support/ SuperCollider/Extensions/f0plugins folder on my Mac.

Thanks, I’ll drag the complete folder over - and thanks for the plugins too.

Oh wait - your trying this on MacOS?

The f0plugins from my GitHub are complied for linux, they won’t work on Mac. Or your Mac compiled binaries won’t work on Linux (norns)

If you didn’t already, be sure you have the correct compiled binaries for the f0plugins.

I’m trying to use the plugins on my norns but I dragged them from my Mac. You are right of course, I need to download the linux versions from your GitHub. I’ll do that, thanks.

1 Like

hi i hope i am finally at the proper thread to ask about getting supercollider code into Norns
i want to do something basic with gendy

Gendy1.ar(ampdist: 1, durdist: 1, adparam: 1.0, ddparam: 1.0, minfreq: 440, maxfreq: 660, ampscale: 0.5, durscale: 0.5, initCPs: 12, knum, mul: 1.0, add: 0.0)

Do you all think that the Poly_perc example could be modified so i can walk through the process?
i hope this is the right place to ask

you may want to look at this heavily commented passthrough engine

and hey, here’s a gendy thing on my gist too. i forget who this was for but it’s a start of how i like to use gendyN musically. (actually i like to make two of these and x-modulate)

4 Likes

This gist has some advice on getting a Norns engine working on your computer too, which is a useful step before you move it over to the Norns.

And in the Monome We repository, you can find a few example engines like Polysub, where the author went through and made a param for each of the engine parameters.

Unfortunately there isn’t an “end to end” tutorial where you:

  1. Make a SynthDef in SuperCollider
  2. Wrap it in an Engine class
  3. Parameterize it in Lua on the Norns
  4. Add any additional performance-level UI

Which I think would be pretty useful. I’ve gone through the process a couple times now so I’ll try and codify it somewhere.

12 Likes

is there a specific We repository link? or do i pull it off the device?

Thanks for the Gist Help

i followed the directions,
downloaded my “dust” directory form the Norns into my monome/we directory and placed Engine_PolyPercPannable.sc into /MyNornsMachines and made the symbolic links and now i get the nice wakeup drone from crone when SC starts
so that was a good sign
PolyPercPannable gives me the 300hz plonk when i run the code


i tidied up the example @zebra shared

I found that the TestSine example was much easier for my first rodeo and i did not really need to make a class but i do see what’s involved.

I got past the SUPERCOLLIDER FAIL problem but i think my lua script is ineffective to the Engine.

Hey everyone! I’m on day four of having a norns and loving it so far, and I’m already feeling the itch to build a script or few for it. Specifically, in addition to norns’s awesome synths, sequencers, samplers, and loopers, I was hoping for some more effects. Sway and pools and others are great, and softcut’s built-in compressor and reverb are nice too, but I was hoping for something with both a little more range (overdrive, chorus, flanger, bitcrusher, tremolo, EQ, etc.) and customizability (what if you could chain input->overdrive->EQ->tremolo->reverb->output? and change that chain via the encoders and keys?).

So a few questions:

  1. This does not yet exist, yes?
  2. Implementing this would require a new engine, yes? I think using a lot of SC3-provided UGens like JPverb and CompanderD and etc should be sufficient here, but I need a new engine to chain them together I think
  3. It looks like each script can declare an engine with a engine.name = "MyEngine", but it also seems like each script can run exactly one engine? If my goal is custom routing of many small, simple effects together, is the approach I should take: define each effect as its own engine/SC-class/.sc-file, and then make an Engine_MyEngine.sc file that loads these separate engines and routes them appropriately? How does one “import” one .sc file from another .sc file (Engine_MyEngine.sc would import Reverb.sc, Compressor.sc, etc.)? Or do I instead need to put every effect in the same Engine_MyEngine.sc file as… separate synthdefs? This is my first time using SuperCollider, so I’m trying to apply my other programming knowledge here but I’m not quite sure what’s possible / idiomatic SC.

Thanks!

Shortly I’ll be using guides like the one mimetaur posted and zebra’s Engine walkthru gist to develop the Engine(s) on my Mac, then I’ll try my hand at using them in the script I’ve started on the norns itself. The script’s already in a good spot as far as UI is concerned (the provided UI library made this super easy!), so hopefully hooking up its params to the Engine won’t be too rough either :+1:

you could look at @jah’s R engine. this implements a modular environment.

as is good practice, the “kernel” functionality is implemented separately:
{ https://github.com/antonhornquist/r/blob/master/lib/R.sc }

and wrapped in an Engine_ class to provide a norns interface:
{ https://github.com/antonhornquist/r/blob/master/lib/Engine_R.sc }

the “kernel / interface” structure makes for easier development away from the norns environment.

R is pretty complex. i can mock up a simpler example of just dynamically chaining a couple of effect synths in one engine.

it’s not necessary to put every synthdef / bit of functionality in its own class. if you do like to split things into many classes, it’s ok (and common) to put multiple related classes in one .sc file.

you don’t. supercollider compiles all classes in its include paths to bytecode when the interpreter is started. dependency cycles are not a problem, e.g. this is fine:

Foo.sc

Foo { 
  var bar;
  init { bar = Bar.new; }
}

Bar.sc:

Bar { 
  var foo;
  init { foo = Foo.new; }
}
1 Like

My Manifold engine and script implements a multieffects type of system. I’ve had plans on implementing the ability to route the effects into each other in different ways but I haven’t gotten around to it. You might consider checking it out to see if it’s worth modifying. As of right now all the effects run in parallel.

1 Like

Thanks, this was super helpful! I was initially scared off by R’s complexity, but after playing around with SC for a while and becoming more comfortable with the syntax and patterns, it was a little more approachable. As you said, it’s doing way more than I think I need in my case, but there were definitely some helpful patterns in there.

I’ve put up what I’ve got so far here: https://github.com/21echoes/norns-pedalboard. There aren’t actually many effects yet (a test one that just lets you control volume, and a super basic reverb (JPVerb) that you can’t even change its parameters yet other than wet/dry and volume), but it’s now at a point where most all of the extensible structure is there, and from here on out I can just focus on adding new effects.

If you don’t mind, that would be nice to see! I feel alright about where I ended up, but as this is my first time writing SC I’m sure I did some stupid stuff :woman_shrugging: You could also just take a peek at the Engine and a sample effect and let me know what you think if you’d like.

1 Like

Awesome, I’ll take a look! I may end up lifting some of the effects themselves, if you don’t mind :smile:

1 Like

The GitHub code looks great! I love the approach you are taking! I’ll learn a lot from this.

1 Like

it looks very good!

one thing i noticed:

  • when fx are created, i only see them added to the head of the context.xg group. you probably want to manage order of execution more explicitly, which is a very idiomatic SC thing. there is a really good order of execution overview in the help that explains better than i can.
  • in that vein, you could do processing in-place on a single bus using ReplaceOut, instead of maintaining separate busses, if you want. (it would be a little more efficient but not a big deal, and maybe it’s helpful to be able to tap any point in the chain as you can now.)
1 Like

Thanks!

The part of code that does this is much messier than I was hoping for, so I think you may have just missed it, but here’s where I believe I’m adding synths to places other than context.xg \addToHead: https://github.com/21echoes/norns-pedalboard/blob/master/lib/Engine_Pedalboard.sc#L94-L106 unless I’m misunderstanding something.

I’ll read up more on ReplaceOut – that messy function I linked right above is something I’m not particularly happy with, and it’s mainly messy because of the bus management, so finding a way around doing all that so manually would be nice.

yep, totally missed it, sorry

i’m getting the “error: SUPERCOLLIDER FAIL” message and no audio on bootup, and i was wondering if someone could help me interpret this output from sclang.

here's what sclang spit out
*** Welcome to SuperCollider 3.10.0. *** For help type ctrl-c ctrl-h (Emacs) or :SChelp (vim) or ctrl-U (sced/gedit).

Booting server 'localhost' on address 127.0.0.1:57110.

sc3> Found 0 LADSPA plugins

Cannot connect to server socket err = No such file or directory

Cannot connect to server request channel

jack server is not running or cannot be started

JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock

JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock

terminate called without an active exception

could not initialize audio.

if you need more info about how i ended up here in the first place, i outlined it in this post. i found out about the sclang command after doing some searching around on here, but have no idea how to interpret it in order to troubleshoot lol. as always, if this is the wrong place for this post, feel free to point me in the right direction or just move my post :slight_smile: