Norns: Running on a MacOS

I have various bits and bobs of a norns shield coming to me via mail eventually for assembly, but I thought I’d get a headstart on myself and practice with running norns on my MBP — in my ignorance thinking this might be trivially easy lol.

I found an old thread on this that got merged into norns development thread and I could not follow, I don’t have any programming experience. I followed instructions on the github under crone and did the following:

  • Installed jack
  • installed homebrew
  • installed boost & liblo
  • installed libsandfile
  • (which wanted me to install libopusenc, libogg, flac, and opus so I did those too just for good measure)

I guess i have to install crone (do I need sc?), but I’m not sure how to do this or what the next step is…

I can imagine this might be an annoying question, if the answer is “I can’t explain it to you” or “it’s not trivially easy” I would totally understand — but if I’m close, then some guidance would be appreciated <3

3 Likes

it’s not trivially easy, and there is one issue that prevents metros from working at all on macOS. (POSIX clocks).

crone works, but it’s a JACK application and setting up Jack is a minor pain.

For supercollider, just install the standard macos package. The norns specific classes work fine.

1 Like

Sorry for dumb questions but running a remote development setup for norns sounds great! Has anyone done a vagrant (virtualbox) config for this? Is there screen emulation for virtual norns ?
Thanks…

1 Like

I’ve been messing with this on and off for a few days. I saw that macOS is missing clock_nanosleep so
I switched focus to emulating the screen and controls (which I find more fun anyway :P).

Then I think I would need to reimplement the stuff that uses udev, evdev and alsa with the macOS equivalents.

Is there anything I can read (besides the code) to get a better understanding of the big picture and architecture of norns?

Also, is there any chance that you would merge any of this? I think it could help with development, and it shouldn’t be too hard to get it working on macOS/Windows and Linux desktops.

1 Like

yes, all the things you mention are obstacles to getting the stack working on macos.

on linux, things are much easier: everything already works except the screen (and GPIO of course.) to get the screen working would “just” be a matter of attaching a different cairo surface - i would probably use SDL to create and manage a window, and attach it to cairo as shown here
https://www.cairographics.org/SDL/

emulating encoders and keys is the other step. this could actually just be done at the lua level with OSC. another option would be to use window UI functions from SDL (or whatever) and post key/enc events at the C level.

certainly we are open to PRs. different people have already started down these roads before, there are branches and discussions on GH. there is even a “desktop” flag in the waf configuration.

@forestcaver your question is not clear to me. remote development is one thing (we do it all the time with things like tramp-mode and remote filsystems), emulating the screen is another, and i’m unclear on how vagrant would fit in. (i guess you mean, if we had a norns emulator on linux, then you could use vbox to run it on mac. i guess that’s true, though in my experience it can be quite a headache to get audio stuff working correctly.)

@zebra - sorry, I wasnt being very clear - I often have a laptop with me but nothing else. For me it would be really great to be able to develop, test and run norns code on my laptop without needing hardware. Running it in a virtual machine (ie linux) using virtualbox would be fantastic so as to avoid polluting my macbook with lots of different code and daemons (it’s used for lots of other development so I try to keep it as clean as possible). Vagrant is just such a neat way of managing a precise, repeatable environment on multiple machines and multiple developers - assuring each machine and person has the same tools and environment.

@zebra thanks for all the pointers :slight_smile: I tried and failed to find the previous branches/discussions in GH, maybe they are in other forks? The --desktop flag doesn’t do anything at the moment, right?

@forestcaver things might be better now, but the last time I tried to do audio in a VM it didn’t work very well. I think there’s a docker container with the dev environment but it has little benefit performance-wise on a mac compared to a vm.

I wouldn’t be too worried about polluting the system anyway. You just need a few packages from brew and Jack/Supercollider, and you only have daemons running while you are working on the thing.

1 Like

yeah i don’t think anyone has got very far. consider it fair game! no, the --desktop flag doesn’t do anything yet. (i never got past the first step of refactoring matron/src/screen.c, and never pushed anything useful.)

re: VMs, sure, give it a try; i think audio quality could be an issue is all. re: containers, sure, i don’t see how it could hurt to have development and runtime requirements bundled up in vagrant or docker.

2 Likes

haha, sure! I’m already seeing how things start to get more and more complicated :smiley:
I’m currently trying to get the event loops to coexist, I might need to move the main loop to a separate thread…

I’ll slowly hack something together and when it works I’ll open a PR to discuss how to do it right.

getting somewhere…

27 Likes

Did you land anywhere close to developing for norns natively in the mac? It’s a stale thread I’m guessing for a reason, but that gif is tantalizing.

7 Likes

Hey! sorry I totally missed your message. I haven’t had time to continue working on this (crazy year uh?) but my conclusions were that it’s doable but it would take some time… and I’m not sure it’s worth it (for me) when you can just get a shield that already works as is.

Also, my ultimate goal was to have it running on an iPhone/iPad but got a bit discouraged because of the licensing.

1 Like

I’m trying to evaluate wether I want to buy norns shield as my entry into the world of norns. That depends on wether there are useful scripts (gridstep and passersby both appeal) but I’m not getting all the info I need from the available videos and docs.

If I could get norns running on my macbook just so I could explore the UI and parameters of a given script, that would help. Audio would be a bonus, but the existing videos tend to cover that already.

Is there something I could do get that working ? I’m a developer (mainly node.js and ruby, so lua script doesn’t frighten me) and docker and virtual box are both options for me. If it meant delving into deep C/C++ changes I probably wouldn’t attempt it.

I’ve seen a couple of threads on this but don’t know where to start. So many layers ! Any pointers ?

I was never able to figure it out even with pointers, altho i lack the technical knowledge you have. If Lua doesnt scare you, and with shield’s in stock (and if its financially viable) I would recommend getting a norns shield. You can play with the things that appeal, and then you will find a million other scripts that will surprise and delight… and more every day. If it ends up not being right for you, you could likely resell it for 80-90% of cost so thats a $30-$50 loss. I can almost guarantee you’ll find something handy… even when I’m not using it for anything musical, it’s one hell of a handy tape recorder!

And if youve got coding chops you can futz with scripts and customize them - probably more fun to put your energy towards that then to hack a way to test drive it on the computer (after having used the shield for a while I think a computer version would feel weird, maybe too-minimal or something? interface is everything - the minimalism and limits of norns are inspiring but its not what we expect from something on the bigger computer boxes).

1 Like

I’m in the same boat and have been trying to revive a docker environment someone started in 2018. It actually works, and I was able to run a lua program and get audio on my computer. But it’s running software from 2018 and a lot has changed since then.

At the moment I’ve almost gotten all the components updated and the entire stack starts, but there are still some problems I’m continuing to work through. Over the weekend I made 4 small pull requests to the norns repo fixing a couple of things related to this. They were all approved and merged upstream earlier today.

I have some ideas for getting a virtual display working, but can’t really start on that until I get it running.

If you’d like to follow along and/or help, I think this thread is the most relevant for what I’m doing: https://llllllll.co/t/getting-norns-running-inside-docker-working/

3 Likes