I’ll try to answer a few regarding the last few at least at it pertains to me…
1.) yes i got a batch 1 Norns
2.) I am talking about Spencer Russell’s Gendy that i used Flext C++ layr to update for linux 32 bit [organelle] this year. 64 bit is a given.
3.) I am VERY excited to see what can run properly on Norns, Martin Peach has already created a very simple Lua interface for Pure Data so i can enter that way if it’s proper.
4.) graham Wakefield wrote LuaAV but that seems like it’s pulled other than a white paper i found and stuff that is about 7 years old for linux 32 bit which could be cool --i know he’s doing a lot for VR with Oculus/Vive and Max now which i have been using since 1996/teaching since 2004
5.) i have a virtual shitton of experience with lemur and touchOSC

4 Likes

So, just to start tuning my mind into a more nornian state… if i have a SuperCollider project with loads of classes interacted with from a gui; could i just add those classes to the norns’ sc class library and replace the gui with Lua? Or do i have to adapt my classes in some way for this to work?

sc has a bunch of scaffolding code called crone to nicely interface with the lua engine.

here’s how to make the an incredibly simple sc engine:

// CroneEngine_TestSine
// dumbest possible test: a single, mono sinewave
Engine_TestSine : CroneEngine {
	var <synth;

	*new { arg context, doneCallback;
		^super.new(context, doneCallback);
	}

	alloc {
		synth = {
			arg out, hz=220, amp=0.5, amplag=0.02, hzlag=0.01;
			var amp_, hz_;
			amp_ = Lag.ar(K2A.ar(amp), amplag);
			hz_ = Lag.ar(K2A.ar(hz), hzlag);
			Out.ar(out, (SinOsc.ar(hz_) * amp_).dup);
		}.play(args: [\out, context.out_b], target: context.xg);

		this.addCommand("hz", "f", { arg msg;
			synth.set(\hz, msg[1]);
		});

		this.addCommand("amp", "f", { arg msg;
			synth.set(\amp, msg[1]);
		});
	}

	free {
		synth.free;
		super.free;
	}
}

crone automatically reports available commands when the engine is loaded. so lua will be able to call

engine.hz(400)
engine.amp(0.3)

for example. this isn’t a thorough explanation. it’s a starter— throwing something to the sc people until the docs and code is ready. but this give you an idea of what it means to wrap some sc code in a way that lua can see it and play easily.

13 Likes

the Norns (of lore) references don’t stop.

1 Like

Thanks for the example! Looks reasonable.

@tehn I think beside what it will eventually do a lot of ppl have very high expectation on MLR! everything else is a bonus, can’t wait to play norn and congrats on the success of your instrument. :smiley:

2 Likes

I’m sure that @TheTechnobear can port Norns software to Organelle and Organelle to Norns :slight_smile:

6 Likes

just to be clear, both lua and JS are “dynamically typed,” and in fact both do have runtime type errors (if you try to call a number, add a string, concatenate a function, take a property of nil/null, etc.) JS performs type juggling for comparison operators, lua doesn’t. (maybe it does more implicit type conversions elsewhere too, not sure offhand.)

you’re right to point out that they are very similar in surface structure (though not so much in implementation.) here are some more differences: https://stackoverflow.com/questions/1022560/subtle-differences-between-javascript-and-lua

another one worth mentioning is that in lua, only false and nil are falsy. (0 is truthy.) this gives you the common idiom x = x or v, which initializes x to v if x is unitialized

SC includes a GENDYN imeplementation (for N=1…5)
http://doc.sccode.org/Classes/Gendy1.html
i wonder how it differs

7 Likes

Wow, I have a lot to learn :wink:

1 Like

Can I share a clock between a modular system and norns’ MLR, take a stereo out of modular into and out of MLR and mix the original signal with the cut up signal within MLR (or somewhere else within norns)? ie norns is just part of my output signal chain?

2 Likes

My ignorance of Gendy led me to this absolute gem of an intro: https://www.youtube.com/watch?v=K-ml72uqEhM

9 Likes

almost certainly, although interestingly without dedicated MIDI or clock inputs, clocking both together seems nontrivial (probably not hard).

oh thank god for that.

1 Like

Given that all numbers are double in Lua, that is definitely for the best!

1 Like

This is what has me so geeked over this box. The imagination and ingenuity of the community will undoubtedly seed this fertile platform.

I regretfully sold my grids as I moved away from laptop / computer based setups and also assumed monome was focusing more on eurorack, which I do not indulge.

2 Likes

Some nerdy questions, more for curiosity than anything else1.

SuperCollider or SuperNova?

How is the device USB port connected to SoC? Is there any chance of GadgetFS use?

How do we flash the eMMC?

What’s the separation like between factory and user scripts? Will there be a directory I can git init for my own stuff?

I can’t find anything on crone in the Supercollider docs?

:+1: on the Raspberry Pi, the ‘made in UK’ ones are manufactured nearish to where I live.


1 Haven’t really got the time for something like this just now (baby…), but I have very fond memories of hacking on the Teletype which I mainly did when my eldest was younger during her nap times, etc. I’m hoping to do something similar to that later this year.

7 Likes

Apologies if this has been made clear already; would sending midi out of Norns (for something like Kria for instance) just require plugging in a driverless midi usb cable/interface? I have a usb midi cable which requires drivers unfortunately, but also have a Korg sq-1 which might do the job, though I’d then worry about current draw from this whilst also having a grid plugged in.

Edit; looks like sq-1 has drivers too.

AFAIK Linux has drivers for Korg MIDI interfaces. Can anyone confirm?

Try this in Javascript:

true + true + " " + true
1 Like

clocking is not something that has been implemented yet. it will be added first via MIDI, but a CV solution will emerge a bit later

supercollider

no gadgetFS. the USB port is hardwired to a USB switch which toggles between the USB hub and the mini-usb power port (with some other pins toggled which turns the CM3 into USB disk mode, which requires a small application to send some commands to activate this mode). once it’s in disk mode it mounts like any disk, so you can dd to update the image if needed.

we have a separate update process though which doesn’t require any of this.

yes you could add a sub-git. or you could just fork the main script repo and replace it.

crone is a set of classes specific to norns


ps, awesome that these sorts of questions are what you guys ask :slight_smile:

14 Likes