Norns on Raspberry Pi

i cannot see how monome could outlaw a rPI that has encoders/lcd/buttons in an enclosure… these have been around long before Norns (e.g. Zynthian) .

only exception something that was a ‘counterfeit’ , where it presented itself as a ‘monome product’.

anyway, if you were to product a norns derivative, why stick to its form factor?
personally, if i was making one, id take the opportunity to tailor it more to my desires, which might only make ‘economic sense’ in smaller volumes - but could still be ‘compatible’.
e.g. bigger colour screen, more encoders, buttons.
for me this is the beauty of open source, not replicating something to make it cheaper (though for some this is they only way they get to own a norns), but to create something close to my ideals.

also, look to the advantages…
a large part of norns is its ecosystem, community - who’s to say someone thats running a clone, won’t produce a killer ‘app’ or release a video/track that promotes Norns, such that more musicians turn to it… and so monome gets lots new sales/a larger community indirectly.

users of clones do tend to get looked down upon, and treated as if they are trying to kill the golden goose - but i think this is often a misconception/misunderstanding of open source, possibly a backlash, by some users getting upset that others are ‘getting it cheap’.

anyway, even if there were clones, the vast majority (if they can afford it), tend to buy the original brand - esp. if there is a support aspect to it.


p.s. im not a great fan of clones, as i also think ‘developers’ need to be supported, they need revenue to live, eat, develop the products… so i don’t tend to buy, id prefer to get the original.
sure ive got my own ‘personal’ clone of norns (which i wouldn’t sell!) , this is no loss of sales for monome, as I would not have bought one, even if it was ‘closed source’.

5 Likes

You wouldn’t think they’d have much control over an array of buttons either. And yet, it came up. One could probably argue that the grid was less proprietary than its various protocols…

Anyway, the issue was never buying, or building, but selling. Mostly, I think, because that happens in larger numbers, without quality control, and it potentially creates a support nightmare which reflects poorly on the company (despite them having no involvement or responsibility for those cloned devices).

(So what they could “outlaw” is the commercial distribution of their firmware attached to your device. And by extension, you might need permission from the authors for any user created scripts you distribute commercially.)

Again, though, that doesn’t seem to be the approach here today, and one need only scroll up in this thread to see Brian’s encouragement.

…at least, at a hobbyist level.

(I’d still discourage folks from serious mass production of a cheaper norns compatible device, legality aside)

Edit:
here’s a bit more insight into those policies, from ten years ago.
(Again, not in any way saying that applies here. Just that this was, at one time, the understanding)

1 Like

i’d like to state that times have changed substantially since the release of the grid in 2006 which was prior to the open source hardware movement (not to mention the state of global manufacturing and politics etc etc). i have many different thoughts about the situation now. (ie, aleph is fully open source)

but at this exact minute i don’t have time to dive deeply into it— in short DIY is a fantastic part of this community, whereas cloning for profit is still problematic. PCBs for DIY is different than full-stack-with-enclosure. plug-play is not DIY, and it’s not good for the community.

23 Likes

I read the latest posts today so I’ve just edited my previous post to avoid any misunderstanding. This is a personal project. It was never meant to be sold, it’s just a cheap PCB, a very simple circuit connecting the components to the GPIO. I created this because I don’t want to have a breadboard with unsoldered components on my desk, I thought some other members reading this thread and not owning Push2 could use this cheap solution as well. I was planning to share the fabrication files but it’s probably not a good idea. Well, it doesn’t have a sturdy enclosure, just two panels hiding the contacts and keeping things attached together, it doesn’t have a battery, it doesn’t have ADC/DAC and IO. It can be used with a Raspberry Pi for any other purpose than testing Norns on RPi. It uses the same OLED display, the first result when one search Spi Oled on Mouser, and this display is nice, it has three encoders and three buttons because my first goal was indeed trying out the Norns environment on a RPi with the new grid I recently purchased and possibly in the best conditions. It is not Norns and it’s not meant to be a clone of Norns

3 Likes

thats great news,

as for a collective name, what about cauldron… ?

To confirm - the noise is coming out of the audio outputs (main outs or headphones), yes? (as opposed to the physical device making noise)

I’m curious if you’d try a couple things:

  • Does changing the Monitor or Input levels change the noise?
  • Does changing what’s displayed on the screen change anything?

My diy-norns prototype has some crazy noise related to the display being active and the input/monitor levels being up, which I am attributing to my own bad pcb layout for the moment.

Thus for your situation I wonder if the combination of the wifi nub + attached grid is causing some funky antenna situation on the pcb?

EDIT - Oh Wow - I didn’t even look at the date on that original post.

moved this post because comparing electrical issues for different PCBs is a can of worms, and my response is more general advice.

power on the stock Pi is going to be a digital mess, and the screen doesn’t help. you’ll want to figure out a way to get some clean power to drive the audio portion of your circuit. go read up on good grounding practice and methods for handling mixed signals (analog and digital). i spent a ton of time on the engineering for this in norns (not to mention the cost of prototypes) and i feel the audio quality is very good.

but just a general warning: this stuff is hard. this book is good: https://www.amazon.com/Small-Signal-Audio-Design-Douglas/dp/0415709733

6 Likes

Thanks for that. Yeah I’ve been reading some stuff on grounding and splitting up digital/analog sections of the board. (I do have a separate voltage reg for the audio circuit) But yeah - It does appear to be quite hard.

What’s curious is my frankenstein breadboard + TerminalTedium DAC pcb has no noise. So maybe I need to look more at that design as a reference.

Wow, the kindle version of that book is $70. Crazy.

Using a RPi and a USB soundcard, how can I map the output channels 1 and 2 to different channels ?
My soundcard has 16 outputs, I would like to map the output of the RPi to channels 3 and 4 for example. I’ve tried to modify asound.conf :

pcm.main {
    type plug
    slave.pcm "remap"
}

pcm.remap {
    type route
    ipc_key 1024
    slave {
    pcm "hw:0,0"
    channels 4
  }
        ttable.0.2 1;
        ttable.1.3 1;
        ttable.2.0 1;
        ttable.3.1 1;
}
    ctl.remap {
      type hw
      card 0
}

and in /etc/systemd/system/norns-jack.service I change the line so it calls the PCM “main”

ExecStart=/usr/bin/jackd -R -P 95 -d alsa -D main -r 48000 -n 3 -p 256 -S -s

But it doesn’t work, the sound is still mapped to channels 1 and 2.

Goal: I would like to use my ES-8 soundcard and send the output the sound of the RPi to the computer via ADAT (channels 8 to 16) and possibly to channels 1 and 2 simultaneously. I’m starting by trying to remap the output channels. Then the input channels, etc…

If somebody has an idea…
Thanks.

Having a hard time understanding your question, do you have the 16 channel USB card plugged into the Pi?

Are you trying to route external sound into the Pi and out again?

1 Like

Yes, sorry.
I have an ES-8 connected to the Raspberry Pi, it has 16 outputs, by default Norns on RPi uses the first two output channels of this soundcard and I want it to use another pair of output channels than 1&2. 8&9 for example. (On an Es-8 the 8 first channels are the analog outputs, the next 8 channels are digital and are sent via ADAT, in my case to studio monitors)

No I’m not trying to route external sound into the RPi (yet, but if I can do that at some point that would be great).

For now, it’s just the output of Norns that I want to route outside of the Pi on a specific pair of channels.

Ah so what I believe you want to do is use JACK to route the output of SuperCollider to those target outputs on your soundcard. You can use the cli utility programs jack_lsp to list your available ports and jack_connect,jack_disconnect to achieve this

2 Likes

Thanks, I will try that.

(I used to do that with ALSA (aconnect) for another install of SC on a Raspberry. I imagine that’s similar)

alternatively, at the moment you could connect SC to all the output channels and simply redirect the norns supercollider output (here: https://github.com/monome/norns/blob/master/sc/core/CroneAudioContext.sc#L62)

(this will change in norns 2.0 release, which doesn’t use supercollider for output mix. but murray’s suggestion will still be broadly applicable.)

1 Like

Thank you. I will take a closer look at that tomorrow and try both suggestions :slight_smile:

Edit:

The jackconnect and jack_disconnects work fine / I created a script, unfortunately I’m having issues with the clock source with this interface so I will not use it with the RPi, it’s too hard to debug and not very handy in my setup.

Remap channels
#Inputs

jack_disconnect supernova:input_1 system:capture_1
jack_disconnect supernova:input_2 system:capture_2
jack_connect supernova:input_1 system:capture_5
jack_connect supernova:input_2 system:capture_6

#Outputs

jack_disconnect supernova:output_1 system:playback_1
jack_disconnect supernova:output_2 system:playback_2
jack_connect supernova:output_1 system:playback_9
jack_connect supernova:output_2 system:playback_10

I know it’s an old post, sorry but I have exactly the same problem with Maiden (not connecting to Matron and SC), did you find a solution/the cause ?

I tried to disable my Firewall, I tried on Safari, Chrome, Ipad. There’s no obvious error message in the logs…

Dumb question - but what’s your maiden path? ~/maiden/ ?

and then check your paths in ~/norns-image/config/norns-maiden.service which gets copied to /etc/systemd/system/norns-maiden.service on norns-image setup

Mine looks like this

[Unit]

Requires=norns-maiden.socket

After=norns-matron.service

[Service]

Type=simple

User=we

Group=we

WorkingDirectory=/home/we/maiden

ExecStart=/home/we/maiden/maiden.arm -fd 3 -app ./app/build -data /home/we/dust$

[Install]

WantedBy=norns.target

also maybe check ps aux for what’s running

we@norns2:~/norns-image $ ps aux | grep maiden
we         377  0.0  0.9 804184  9024 ?        Ssl  Jan02   0:00 /home/we/maide/maiden.arm -fd 3 -app ./app/build -data /home/we/dust -doc /home/we/norns/doc
1 Like

If I’m understanding things correctly you can access maiden (the editor) but the matron and sc repl’s aren’t connecting.

Several things worth checking:

  • Ensure you are using the systemd units or the various start.sh and stop.sh scripts to start matron and supercollider, those script ensure that the processes are run under ws-wrapper which provides the web socket connections maiden uses to talk to matron.

  • If you pulled a very recent prebuilt copy of maiden off GitHub (like the 0.10) release there was a modification to the repl configuration made during recent development which shouldn’t have been committed. I just corrected that mistake. Verify that the repl-endpoints.json file in your copy of maiden looks like this: https://github.com/monome/maiden/blob/master/app/public/repl-endpoints.json

  • If the repl-endpoints.json file matches what is up on GitHub and the ws-wrapper processes are running then I would look for errors in the Javascript console of you web browser and verify there isn’t a firewall on either you computer or the rpi which is blocking connections on ports 5555 and 5556.

1 Like

Thanks for your replies @okyeron and @ngwese

Yes, the path is exactly the same for me.
/etc/systemd/system/norns-maiden.service

Yes, that’s correct. And yes, I pulled Maiden 0.1 a few days ago. My repl-endpoints.json looked like this:

{
"matron":"ws://norns2.local:5555",
"sc":"ws://norns2.local:5556"
}

But I’ve just made the modification…

{
    "matron": "ws://maiden_app_location:5555",
    "sc": "ws://maiden_app_location:5556"
}

…and the issue is now solved, Maiden connects to Matron and SC. Thanks a lot !

1 Like