Jala - random sequencer for ambient soundscapes


A random sequencer for ambient soundscapes

Video Overview:

History and inspiration

Long before I even called a norns device my own, I stumbled upon Datu Arellanos work (https://www.datuarellano.com/tahigami-music), specifically a MIDI controller, that played in-scale notes at the push of a single button. I really liked the idea and pondered building a custom MIDI controller with an ESP32. It turned out to be more complicated than I had thought, and combined with a lack of time, I put the idea aside to stew awhile.

After norns got my attention and the device finally arrived, it rekindled the initial spark and I started working on it again. It turned out, norns was the perfect framework for what I had in mind, since all the building blocks were neatly in place. During development I strongly leaned on, and took a lot of code from awake and midi-monitor, so thank you very much @tehn and @okyeron !! Without those two projects, Jala would not be anywhere near where it has gotten already. I am still just scratching the surface of what norns can do, but the community contributions already blow my mind and I look forward extending this project.

The name is an amalgamation of my two little children’s names :slight_smile:

Roadmap ideas

  • Support for mx.samples as an output
  • More randomization algorithms for the changing probabilities
  • Weights for single notes on scale
  • Make remaining relevant parameters configurable
  • Add MIDI Capabilites for CC messages

And hopefully a lot of input from this awesome community!


A MIDI-capable device for output is highly recommended, ideally a device with more than one voice (e.g. Arturia Microfreak works fine). Normal audio output is available too, but more for demonstration purposes.


The script starts out in C major scale. On the center grid, you see the notes on the scale, the brightness indicates if they are playing at the moment. The bar below the note name indicates the probabilities for the next note played. After a note is played, its probability gets cut in half and distributed randomly on the other remaining notes. The length of the note is chosen at random between min and max length. If you press K3, playing stops until you release the button, then a note is played immediatelly.

E1 changes the root note, E2 changes the option shortcut you can change, E3 changes its value. All the options are accessible in the parameters page, I put the most important in the shortcut list at the bottom.

Pressing K2 starts the learning-mode. The script now listens to the notes you play on the connected midi in device and displays the fitting scales. E2 lets you select the scale you want, pressing K2 again takes the new scale and starts playing. Until you press K2 a second time, the old scale is played, this can be used for precisely timing the change in scale.

The following options are available at the moment:

  • Output: select audio, midi or audio + midi (audio uses the basic PolyPerc engine)
  • Step division: How often will the routine be called, 4 means for every quarter note and so on
  • Probability: Trig probability for every step. Use this to add more randomness
  • Note length min: If a note is played, for how long at least (in steps)
  • Note length max: If a note is played, for how long at most (in steps)
  • Octaves: How many octaves will be played, the lowest one is always weighed a little more heavily than the higher ones
  • Midi in: Use this device to play notes in learning mode
  • Midi out: The notes get sent to this device, if the output is set accordingly

Standard norns clock is used. I have not tested if you set it to MIDI.

Intended use (YMMV)

I built this to get some in-tune but still random sounds to lay a foundation for anything ambient, so I generally keep everything very slow. Combining the parameters in different ways can give you very different result. For example, step division of 1 with probability 100% will result in the same number of notes played as step division 4 with 25% probability, but will give you a very different feel. Setting a broad range of note length values will also give you something a little more unpredictable.

As for the sound source, if you use something single-voice it will not be very interesting, polyphonic devices or plugins are preferrable here. Try to experiment with longer attack times and higher glide values, this gives you a nice drony experience. See the video above for a simple example using the Microfreak.


v0.0.1 - https://github.com/ulf/jala/archive/0.0.1.zip


so many inspiring scripts lately!

thanks for sharing and making a video walkthrough

1 Like

This script looks really awesome and the walkthrough video is great! Thank you for creating and sharing!

looks really fun and useful. Thanks for sharing with the community!

Niceeee. Noob question: how do you connect your synth to receive midi? Does it go through audio interface or you can just connect it like that usb from the synth in to usb in norns? :slight_smile:

I used a USB to Midi converter cable[1], have not tried to Connect the synth directly via USB, but i will try that out later and get back to you

[1] https://www.amazon.de/dp/B000XRI3CC/ref=cm_sw_r_cp_apa_i_22CS5BBNBG48D51YGM6T?_encoding=UTF8&psc=1

1 Like

So, good news, I can just connect the Microfreak with the standard USB Cable to the norns shield, and can use it as input and output :+1:

1 Like

This IS good news cause I was tearing apart the studio trying to find my 3.5mm MIDI cables!!! Can’t wait to try it with the MF!


This is script is amazing! I’m trying to control some patches on the Organelle M (via USB) but seems doesn’t work. Do you have any suggestions?
Thanks in advance!

1 Like

If you scroll through the options, do you see the organelle in the midi devices? If so, select it as midiout and set the output option to midi. Hope this helps! If not,get in touch on insta

Thank you so much! I’m writing on IG!

So it seems the Organelle and the Norns do not talk MIDI to each other without a cable.

Just pushed Version 0.0.4

New Features:

  • Edit single notes in your scale

Thank you for this! Looking forward to it. I ran into a bug last night where the sequence would freeze after entering my own custom scale. Seemed like a hung MIDI note but when I press K3 it would advance one step.

1 Like

Thank you. Enjoying this. Could you add the ability to change midi channels. Tried to change the default in your code myself, but failed. :grinning:

1 Like

Will try to reproduce this

Of course, this will be in the next Version :+1:

1 Like

Yep! I orderd this MIDI USB-USB

1 Like

very cool script!

could you add the ability to choose scales under parameters?

i was trying to use it last night without a controller attached. :slight_smile:


This should Work in the current version already :smiley: use E1 to change the root, and K1+E1 to change the scale :+1: