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…

25 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.

6 Likes