– pixels –

a generative visual sequencer instrument for norns

six travelers inching over
luminous terrain
worlds to be explored in time
each step, a new chance
to emanate tones

11-26-2020: I’ll try to post some audio examples tomorrow. I need to figure out a way to limit the polyphony of the internal engine and iron out a few issues before I release it in the very near future.

11-27-2020: I’ve been gifted a solution for limiting the polyphony by @zebra. Thank you for the help. I’ve also smunched in a very kludgy, longform save method allowing for three save spots. Yay! Now I just need to complete a video and package the whole thing up. Soon!

11-28-2020: Posted some basic examples of what is possible with pixels. These are quick sketches only using the internal synth. I’d like to post some more examples with external gear … as I’m having a blast driving my OP-Z with pixels!

11-30-2020: Added @zebra new ‘Thebangs’ engine to control polyphony. Tweaked some landscape randomization. Should be connecting to the library soon.

12-07-2020: Pixels has been updated to version 1.1!

Version 1.1 Changes:

  • Replaced cardinal directions with the wayfinder and more precise control of pixels. Stopping is indicated by an animated circle at 3:00
  • K2 immediately identifies the current pixel/wayfinder
  • independent synth algorithms and modulation settings for each pixel
  • fixed: duplicate name issue with The Bangs

12-09-20: Pixels 1.1.2 has been released!

Version 1.1.1 Changes:

  • Removed debug statements from The Bangs engine
  • Moved all screen calls to the redraw loop
  • Added a tiny value (.001) to the mod2 value to keep the klang engines happy

Version 1.1.2 Changes:

  • Found and clamped additional screen.level calls into the range of 0-15

12-15-2020: Pixels 1.2 has been released!

A couple of bug fixes:

  • moved the pixel “pulse” animation math to be more in sync with the beat subdivision
  • fixed an issue with save slot “c”

12-23-2020: Pixels 1.3 has been released!

K2 + K3 = enter exit drawing mode
K1 = brightness/pitch
K2 = x position
K3 = y position

You cannot access the other menu pages while in drawing mode. You may want to change your “style” to “dark”, “gray” or “light” before entering drawing mode to give yourself a nice canvas.

The default color for drawing is black (lowest pitch).

A couple of bug fixes related to saving/loading.


I started out wanting to write something that would convert an imported PNG file into music and ended up somewhere else. Exploring ambient soundscapes within set constraints. Pixels currently has about twenty landscapes to explore. Each pixel (and its position over the landscape) is a monophonic sound source with a life of its own. Bring it to life with motion, beat division, root note, scale, octave span, trigger probability, MIDI channel, MIDI velocity, pulse width, amp, and pan.

I’m currently working on some landscape randomization. Maybe someday, I can figure out how to import and read PNG pixel luminosity data, but until then, I’m happy wandering mathematically generated landscapes.


  • reveal S E C R E T M O D E if not discovered naturally - CHECK
  • implement additional features such as “attack”, and “synth algo” in new ‘Thebangs’ engine provided by @zebra (thank you!) - CHECK
  • additional landscapes
  • replace cardinal directions with line graphics? - CHECK


  • norns
  • OPTIONAL: root note can be modified by an external MIDI keyboard


HOLD K1 to alternate between
the menu pages and the map.

TURN encoder 1 while in
a menu to change pages.

map screen

this is where the action is.
adjust the position, direction
and rate of each pixel.
press play and have fun!

encoder 1 = tempo
ALT (pixel travel rate)
encoder 2 = pixel x position
ALT (pixel direction)
encoder 3 = pixel y position
ALT (pixel select)

key 1 = HOLD : enter menu
key 2 = HOLD : ALT
key 3 = play/stop

when changing the direction
of a pixel (holding k2 and
turning e1) you can control
a pixel while it is moving!
when set to about 3:00,
the wayfinder will become
a circle, indicating that
pixel has stopped.

landscape screen

this is where you change the
world your pixels inhabit.
Select the style, scale,
starting note and number of
octaves. the 16 levels of
brightness displayed on
the norns screen represent
the notes of the selected
scale (albeit highly
compressed) from low (dark)
to high (light).

encoder 1 = select option
encoder 2 = adjust option
key 1 = HOLD : exit menu
key 3 = confirm selection

going below C0 on the root
setting will allow you to
manually control the root
note with an external MIDI

pixels screen

take control of your
travelers! Set their initial
state, trigger probability,
midi velocity and midi channel.
only need one pixel? ok …
fine, but it could be lonely
out there

encoder 1 = select option
encoder 2 = adjust option
key 1 = HOLD : exit menu
key 3 = confirm selection

going below 0 on midi velocity
will get you random numbers!

synth I screen

make music without a
midi instrument? ok.
here are the settings for the
built-in synth engine.
attack, release, amp, and pan.
values below 0 on atk, rel & amp
will generate random
numbers. values of pan
below -50 and above 50
will generate random numbers.

encoder 1 = select option
encoder 2 = adjust option
key 1 = HOLD : exit menu

synth II screen

need even more control of
the built in synth params?
here you go! change the
synth algorithm, and other
parameters here.

sq = square wave
sq1 = square wave modulated one way
sq2 = square wave modulated another way
flp = fm lowpass
ffb = fm feedback
rez = resonant noise
kexp = klang exponential
kln - klang linear

encoder 1 = select option
encoder 2 = adjust option
key 1 = HOLD : exit menu

the engine supplied with
pixels (The Bangs) has 8
different synth types with
varying parameters based on
their type. twiddle knobs
and explore sounds.

S E C R E T M O D E - I S D R A W I N G M OD E.



just read through the documentation and already can’t wait to mess about with it once I’m home!! thanks!

1 Like

It’s not released just yet! Sorry!



ah! my bad, missed that part right at the very very bottom. still excited to play with it!

1 Like

20 characters of what a teaser!

1 Like

So I’m sitting there watching TV on Thanksgiving and decide to start writing the draft of this post for my Norns app and as I’m fumbling my way through the formatting short code I accidentally publish the draft. After a moment of panic, I just decided to go with it.

I should have something for you shortly. I need to figure out a few things:

  • Limiting the the polyphony of the SC engine (using PolyPerc)

  • Establishing a functional/recallable save state with para sets

  • Hooking the file into the library


I think I have a good start at getting a functional save state. I should have implemented params from the start, but I wanted to avoid ever having to go out to the system menu.

I am using non-system exposed params for saving now though …


lol - usually I just draft this in the GitHub readme for fear of this same thing. looks cool though, everyone loves a good teaser : )


totally in love and totally want to do something is this genre now

and all this before https://github.com/monome/norns/pull/1247#issuecomment-734432975 is merged


Polyphony and save issues resolved … just need to make a demo video.


Polyphony issues NOT resolved. I may just release this with a warning that excessively rapid sequences with long note durations may cause your norns to have a brain freeze.


looks glorious! can’t wait to try it out :slight_smile:

1 Like

Posted a video with some basic examples above.


This looks incredible.

1 Like

this looks absolutely visionary


it for sure is — i was lucky to be able to beta an early version, the transition between “what am i doing?” and “i will listen to this for hours” gave me whiplash. can’t wait for the public release!!


I just updated the community.json to add “pixels” to the library. I’m hoping I did this correctly and didn’t break anything in the process.

Hopefully this starts to show up for people.


Don’t forget to sleep your norns after installation in order to register the new SC engine.

—>Mental Note<—

Exploring the different lardscapes in pixels requires some BUTTON HOLDING. Long press K1 to enter and exit the menu system (encoder 1 to change menu pages). Hold K2 on the main map screen and twiddle encoders 1-3 to get your pixels traveling.


hell yeah this is super rad!


Beautiful script! Have it playing music in the background for me while I do a few chores, its coming up with some beautiful phrases. Wishing I had a midi piano to plug it in to…


Thanks! I’m working on an update that significantly expands on the synth engine.

Are you finding the controls easy to navigate?

1 Like

Yes, the controls are easy for the most part. Navigating in the map to a little getting used to, the alphanumeric animations as you change parameters are really lovely, my only request would be that they hang for an extra couple of frames before drifting position to make them easier to read. Had to keep remembering that alt is k2, but that became familiar quickly.

I appreciate the detailed readme in the script description in the selector. Made flipping back to it easy while I was getting to know what pixels does.

Looking forward to the expanded synth params. The ability to change parameters for all six pixels at once is great!

1 Like