Makes alot more sense. Will do some testing tomorrow night to see if the 64-mod matches this behavior.

I would very much like to add realtime input to the Glut engine. It seems that it’s a matter of adding a new function similar to readBuf replacing the call to File.exists with a call to Then expose a parameter to write to the buffer with this function. I’m simplifying but this seems like the pattern.

The problem is everyone is using softcut 2.0 for “input stuff”. The JACK graph in Norns 2.0 does not connect the output of softcut to the input of supercollider.

@artfwo does this seem like a reasonable direction to add realtime input to fill buffers?


i don’t understand the problem. supercollider still gets ADC input. you can use RecordBuf or WriteBuf with or whatever, to capture to the Glut buffer.

if you actually want to feed back softcut output to supercollider, it seems better to add a second pair of input ports to scsynth. remember that scsynth can currently feed softcut input. it would break stuff (e.g. my performances) to make a constant loopback in the other direction.

hope that makes sense

1 Like

Thanks for the confirmation. I graphed that out by looking at the jack connections. I didn’t know if this would be the best way forward. I also used mlr as an example for “doing sample stuff” which doesn’t have any engine loaded.

I’ll just use the inputs exposed to supercollider.


woof sorry i was rude, v tired last night i guess

Psyched about this! Was hoping to do something similair myself.

supercollider can granulate realtime input, if that’s what you want, see GrainIn documentation. recording buffers for granulating them later, on other hand, is a nice thing to have, but don’t yet have a clear idea of a (reusable) interface for it in both the engine and the script, i.e. saving buffers to disk, etc. do you have any suggestions about that?

it’s okay, I speak hacker.

That’s partly what led me to the idea to tap softcut. @its_your_bedtime made reels a library so all UI stuff for filling buffers and writing to disk would “just work”.

1 Like

ah, i’m rather thinking about the engine command/poll interface than a particular implementation, speaking of which - reels is a lua library that uses softcut, can it record also supercollider buffers?

Hey @artfwo, not sure if you’re still working on glut at all…

I had a stab at adding a simple delay in place of the reverb (based on a quick google that led me here : … but I failed badly, this being my first exposure to sc.

Any tips?

Hey, I’m currently failing to find the time to improve glut, maybe I’ll get back to it later this autumn. But of course you can easily modify the effect, as it’s in the separate SynthDef:

The input (stereo) signal is going by the sig variable, which you can process as follows:

SynthDef(\effect, {
	arg in, out, mix=0.5, room=0.5, damp=0.5, delay=0.1;
	var sig =, 2);
	sig =, 1, delay);, sig);

Compare that to original SynthDef linked above. Note the additional delay argument to the effect SynthDef, you might as well want to add engine command for that if you ever want to automate the parameter.

I also suggest getting comfortable with some basic SuperCollider concepts (SynthDefs, buses, etc.) on a desktop machine, you’ll find it easier to play with the engines later.

Thanks - that’s pretty much what I attempted. I’ll have another crack today.

1 Like

5 more minutes sc googling and I know what my problem is : I want CombN not DelayN. “Delay” in the guitar world is not “Delay” in the sc world :slight_smile: Much to learn…

Success though! I swapped out the sc reverb for a simple delay, and hooked the delay time param up to the grid via Lua.

Time for a celebratory cocktail :cocktail:


Oh hey, sorry to bump this up and I think this is appropriate to ask here. I am trying to adjust the density so that it is not pulsing consistently at slow speeds – similar to the Clouds’ density settings past the Noon position – and I am wondering where I should be looking for that? When I look at all the density zones in the code nothing is really jumping out at me.
I think, looking at the code and the app, that density is an LFO? I’m just not sure where the shape for the LFO is. Is it part of glut, or part of Norns? I am also thinking that I can just add a controlled random something-or-other to the slower rates to get the inconsistent seeding I am looking for?
I guess, if it’s not terribly difficult, being able to do a similar thing to the Size parameter would be sick so it could feel more like a caterpillar’s movement.

1 Like

I am not sure I understand the question, But basically, yeah, there’s an impulse LFO controlled by the density param. If you’d like to make it more random, you can simply replace Impulse with Dust in the engine code.

1 Like

I did a similar thing in my fork of Glut. I added a parameter to control the randomness amount called density_mod_amt. At 0 you get straight trigs, and at 1 fully random. The density bit is on line # 59


Amazing! Going to try it this evening, thank you thank you!
Also good to know about the Impulse vs Dust thing

Edit: Got this working perfectly, it is exactly what I was looking for!

1 Like

Sharing my patch for glut, adding 64 grid support :slight_smile:

Due to grid size limitations, I had to bump down the voice count to 6 from 7.

Controls are based on the 128 version, but modified to fit the smaller size:

m m m m m m r a
p p p p p p . .
1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3
4 4 4 4 4 4 4 4
5 5 5 5 5 5 5 5
6 6 6 6 6 6 6 6

where m mutes the given voice, p is pattern recording for the given voice, <number> shows and updates position for the given voice, a enables alt mode, and a flashing r indicates pattern recording is occurring. . is unused.

The same gestures are supported as the 128 version (tap p to record, tap again to loop, and hold a and tap a p to clear). Note that there is only one recording indicator now, which indicates that at least one pattern is being recorded to.

Code is here, let me know if any issues come up! Please install Glut from Maiden, then drop this in the directory.


Thank you for this! Got a Lauchpad mini mk1 to serve as a grid for this script patch.