Rereading it, the description says you can use ssh, so that tells me that Vim should be an option to edit. :slight_smile:

1 Like

Here are my trivial questions (i am not a programmer, BUT, i learnt MaxMSP because of you, and later bought a Teletype because of you again) :

What language does the web app use ? Is it specific to norns ? Or is it SuperCollider ? If not, how is SC involved ?
I assume lua is involved for something else ? More into connecting hardware ?

Thanks !

2 Likes

Looks to me like it’s just a code editor, so I’d assume you could use it to edit Lua code (control layer), SuperCollider code (audio layer), property files (data layer), preset files, or letters to your mom.

4 Likes

Not sure if this has been addressed yet (starting to get a bit lost keeping up with this thread), but can norns host an additional audio interface over usb for multichannel work or for even for cv?

2 Likes

@zebra / @tehn
I know its linux, but which, you mentioned its real time ? which kernel? xenomai?
Can we run our own processes alongside?

Im asking, as Ive got a project which supports various controllers (Eigenlabs Eigenharps / Madrona Labs Soundplane , and Ableton Push 2) , these could all be really cool on norns, but would require a separate process with usb access (via say libusb), they would also need a certain priority.

seems to be taking a very different approach…

its seems similar in that it will be useable ‘out of the box’, and you can load community content (or presumably more monone content)
community contents always interesting, as it obviously it depends who/how many you attract to develop content… but like the organelle, it can take devices in many directions.

practically, it looks like your going to need to add a controller , be it a keyboard, grid or something - though, im guessing the LUA side, looks like it will be high enough level to do something like teletype scripting.

its quite a general box description so far (nothing wrong with that) , except we know about MLR… im guessing though later we will hear more about CV i/o via USB , for perhaps some interesting link up with eurorack!?

6 Likes

sorry. (for the record) REPL is old acronym for Read-Evaluate-Print Loop, is that thing you get in interpreted languages (forth/lisp/ruby/python/lua/sclang) where you can type a statement or a bunch of statements (a “chunk”) and the interpreter Evaluates them and tells you what happened.

the maiden editor includes a REPL for the lua layer and one for the sclang layer.

its assumed that you may indeed want to try things out with the lua REPL while composing scripts. (the lua scripting layer is basically where high-level musical decisions are made - which parameters are to change when, in response to what.)

as noted, simply editing the contents of a script file will not actually do anything until you execute the script again (with one button) but you can evaluate individual lua/sclang chunks in real time, and they will execute in the same VM /interpreter environment as the scripts.

by design, it’s assumed that you won’t actually be changing the supercollider code on the fly - the sound engines are Classes, which require sclang to restart. this decision has Reasons (efficiency of execution, catching errors earlier, more structured code) but it is basically arbitary, and someone more into dynamic programming with supercollider could easily build their own layer conforming to the same OSC protocol.

[aside] again. i don’t know about yall, but i don’t actually like programming and making music at the same time; for me, norns will live in a pedalboard. i am very much in favor of Not Programming and making things that are fun for Not Programmers.

custom kernel thanks to the efforts and expertise of various lines members (not me!). base system is debian-ish. more details later.

Can we run our own processes alongside?

of course. though the norns controller process can already talk to any device accessible by libudev/libevdev. permissions managed by udev rules as is “right and proper.” soundplane will be a bit of a project, but it’s on the drawing board for sure.

26 Likes

Thanks.
So Norns IS running SuperCollider.
I’d better start learning SC now then.

3 Likes

I’m curious as to how lua scripts and the SC sound engines interact - I thought from the earlier description that it seemed like they could be mixed and matched on the device but in the code sample above it seems like the script has a sound engine defined in it?

1 Like

yeah so, sound engines and scripts run in totally separate processes and communicate via OSC. each sound engine presents a bidirectional OSC interface that lua can inspect. there are also OSC commands for swapping engines, restarting the sclang interpreter, and other meta-stuff.

the conception of “standard use” is that scripts (which are lua programs) will be relatively focused, and each will specify one sound engine it expects to use. there are convenient boilerplate methods for this use case.

but, if you wanted to write a really large application in lua that can swap engines on the fly, and like, dynamically adapt to each one’s interface, you could do that too. (after all, the norns menu system and script launcher is itself written in lua.)

in general, keep in mind that a major consideration is to make scripting accessible to a variety of programming experience levels - including the absolute beginning, which might just mean editing configuration files.

so there are multiple layers of simplification, any of which can be bypassed or peeled back. of course a lot of people here are experienced software developers, and the hope is that this platform will make it easy to apply those skills in ways that benefit everyone else, by extending both the vocabulary of things that can be scripted, and the structure of the scripting environment.

27 Likes

i assume this: engine.name = 'TestSine' is where the engine is selected

so if i understand correctly, one could create a meta engine that would wrap other engines and expose common properties, or alternatively a lua script could switch engines at any time, taking into account what properties they expose. say, i could just do engine.name = 'TestSquare' and the script will continue to work as TestSquare engine would also expose hz property.

2 Likes

that is exactly correct. (well, the syntax would be engine.load('TestSquare') in that case, but yea.)

making an engine that aggregates other engines would be pretty straightforward. whether its a great idea is up for debate - remember that processing power is limited… this is maybe something to discuss further at a later time


okay i’m gonna get back to work now!

:coffee:

8 Likes

This is precisely why I’m so intrigued by Norns. I’ve gotten into Python over the past couple years, and also have gotten back into making music in the past few years (after a diversion into eurorack world where I made a lot of noise, but not a lot of music). This device looks to be the first thing that can combine those two interests (passions?) in a way that might work for me. Plus, that industrial design - it’s gorgeous. The more I read about norns, the more interested I get. There are just a few bits of info that I’m waiting to hear.

2 Likes

All of this “do this over wifi—it just works!” talk makes me wonder how easily someone at your gig could open TouchOSC on their phone and break your performance.

I probably follow way too many infosec people on Twitter for not being one myself :sweat_smile:

6 Likes

yeah, it’s really more about getting a better understanding of how sc and lua layers interact rather than thinking of building a multi engine app (we haven’t even tried simple engine apps yet!)

although, of course, it’s tempting to consider an engine sequencer script…

2 Likes

Cool, yeah that seems really valuable. If I create a fun/smart script for a particular controller it seems useful to be able to easily switch to using it to play all the different synths I have loaded on there. I’m sure it’ll make more sense once we see more of the scripting spec :slight_smile:

5 Likes

sure. other thing is that scripts don’t have to be single files, you can add your own lua modules. so if you make a cool sequencer logic you should wrap it in a module.

ahahha. yes. fortunately you can turn off the wifi (in fact it is currently off by default on boot/wake, which helps with battery life and… unshielded power amps?)

6 Likes

teacher / student? :smiley:

2 Likes

lead / rhythm would be funny, but probably too confusing

1 Like

how do lua scripts interact with osc? is there a callback similar to key/enc? can scripts send osc via wifi? what i’m getting at - could multiple norns communicate with each other?


i was thinking leader/follower but still feels a bit clunky

1 Like

ooh, one could also create a performance designed to let people do this!

33 Likes