Swarmatron for norns, using Pd.


This is basically a Swarmatron from (wunderbar) Sound Simulator’s DIY Swarmatron (Pure Data & Arduino Tutorial) video, for norns.

This is an experimental norns script. So what’s the experiment? Using Pure Data (Pd) rather than SuperCollider as engine; a proof-of-concept using OSC to communicate from Lua to OSC to a headless Pd which is started on demand (haha not quite see below).

The Pd patch swarmatron.pd works the same if you open it in normal desktop Pd. You can control this too with OSC.


  • norns
  • Pd


Pd is a required install for this to work. It does not come with norns, but can be installed with sudo apt install puredata. Swarmatron also sometimes leaves norns in a confused state, hanging on script load. This has to do with state management of running Pd processes, and maybe it freaks out Jack it if’s killed – I’m not sure. Rebooting norns always helps. I hope you enjoy it… and norns hacking in general :slight_smile:


How does it work?

  1. The norns script starts a headless Pd with the main patch swarmatron.pd, but does not do the default jack connection
  2. The norns script connects Pd audio output to norns jack
  3. The Pd patch starts sending sweet, lovely audio goodness to its normal [dac~]
  4. The Pd patch starts listening to OSC messages and route them to various synth parameters
  5. The norns script defines a bunch of parameters

From there on the norns script builds OSC messages from parameter changes, and sends them to Pd. Pd receives, parses, and routes the ones it recognizes to various Pd objects to change to running synthesizer.

Use the source, Luke!



  1. Access your norns over SSH and install Pd with sudo apt install puredata
  2. Do sudo apt get update @mlogger said. :warning: do not be tempted to do apt upgrade
  3. In Maiden ;install https://github.com/xmacex/swarmatron

Thanks for this. I instantly wanted to adapt this for the organelle but then I saw that there is already the Swarmamelle.

I am adamant that is musically/sonically more interesting than this one – this is kind of a “technical” proof-of-concept of using an alternative sound engine… although if you like to feel like your home has been infested by droning wasps during the holiday season, this also works for that :honeybee: :honeybee: :honeybee:

Edit: I added a demo to the above post so you can get a full and comprehensive idea of the sonic and creative potential of this script! :wink:

Since I have been getting a little bit into field recording augmented listening recently, so the demoₗₐₜᵢₒₙ was recorded in a small reverberant room with a Zoom H2n from two Swarmatrons running on norns and Pd on computer, first using shitty NTS-1 speaker and the latter using laptop speakers not any less shitty.


Very cool script as a proof of concept for running Puredata - I got it working fine. I did have to do a sudo apt-get update first as i got a few missing files when i installed Puredata.

It did get me thinking though - as it’s Puredata and it’s working on the Norns side. Would it technically be possible to run Automatonism patches made on a computer? I can run Automatonism patches using the alt Organelle boot up firmware but would love to see something on the Norns side.

What would be the process - files to change / rename for running other pd scripts?

Thank you very much, @xmacex. I am technically confused here. So it’s possible to run Pure Data on Norns? It’s possible to run Pure Data patches on Norns (if Pd is installed) just selecting them in the script menu?

Thanks for your interest @mlogger and @aeoner. Yes Pd runs fine on norns. The norns script needs to be built for it, and interface with the norns system. This script is one way to do so by connecting the onscreen UI, encoders and norns params to Pd via OSC messages.

I am not familiar how to “deploy” Pd scripts and it’s “package management” so I cannot (yet) comment exactly which files would need to be in which directories, but I definitely think Automationism or any other Pd contraption would run. Pd works well on GNU/Linux, which is what norns is =}

[Todo for myself: I should edit the top post to include explanation of the basic elements of this setup, and re-express it in alternative way than in code.]