I may be misunderstanding here - but you can load up a audio buffer into any loop via the parameters loop X > load audio.

hm one path towards this goal is to have an input source of noise and then randomly turn on and off the recording on different loops that you want to degrade to noise. you can also set the “pre” amount so that so that the audio on the loops slowly dissipates instead of getting replaced entirely. if you don’t have an input source of noise, you could also modify the engine to output noise and then edit the script to record that over the loops randomly.

thanks for joining in! sorry for the much belated welcome :slight_smile:

are you intersted in a tempoary warble or more of a permananet toggled warble? I just realized I implemented a permanent tape warble (oooooo/oooooo.lua at main · schollz/oooooo · GitHub) but its currently not available to activate anywhere…

the temporary warble from the button is easy - it could be put into its own function that is activated by a button on the grid.

this is possible! softcut supports lots of filters and I only exploded the one (low pass). its moderately easy to do - here’s how it could be done:

  1. the voice level of all the fliters (hp, lp, bp, br) should be initialized here: oooooo/oooooo.lua at main · schollz/oooooo · GitHub
  2. a parameter with different options for filters (hp, lp, bp, br) should be added here: oooooo/oooooo.lua at main · schollz/oooooo · GitHub that parameter should have an action that sets the voice levels of the respective filters depending on which is selected.

thanks @infinitedigits - yes, I’d picked up on being able to load existing files into specific loops, but I’ll look into your suggestion of including a noise source within the engine as way of gradually degrading.

FWIW, I explored a bit more with the exisiting destroy loops feature and it’s getting me pretty close to where I want to go, but if I find some good alternatives via tweaking the engine I’ll be sure to share.

Every time I feel tempted by some specialist guitar pedal effect or other euro FX module, I’m increasingly finding that there is already a script in Norns that either does something similar or takes me in a related but different direction - thanks so much for all your contributions to this ecosystem - your work is truly inspiring.


Tried to “activate the permanent tape warble changing the value for warblepercent but no luck… That’s one of my most wanted features, is there an easy way to activate it? Thanks!

1 Like

I think you can drop these lines
over right here and add a true or to the end of this line
so it always triggers the rate check.

permanent wobbling would be pretty cool. I can see about making a more systematic addition next time I tinker with oooooo.


thanks!! trying it today!! what a lovely scripts u make!

EDIT: no luck, I got all kind of errors. Will wait for your inmpementation! :pray: :star_struck:


oooooo fork :fork_and_knife:

been playing with a fork of oooooo lately and was asked to share so here it is -

what it is

this fork will make your monophonic synth into a polyphonic synth by layering notes onto the six loops of oooooo. the only input you need to give it is the chord progression (there is one line in the script where you can edit the chords), and then the rest is done for you. the way the notes are layered is described here, but basically this script will find the minimal inversions from the first chord and then rearrange the columns of each row so that there are minimal changes between chords. then it will go up/down in octaves each line to make sure the chord is padded out (and sometimes gives melodic things). this is a random process (there isn’t one best answer for each chord progression) so each time you run the script it is a little different. after the chords are layered, it plays random notes at random intervals and sounds melodic. its fun to add lots of texture in each layer (modulating filters, volume, etc).


oooooo + strega into reverb

oooooo + nts-1 + po-32 drums into reverb


old instructions used to be here: v1.10.0 now contains the chord sequencer!


  1. plug in a midi synth or crow (with crow out1 going to 1v/oct)
  2. put sound out from synth into norns input
  3. run oooooo
  4. play with filters on synth while it runs!

Oh! This might be a fun thing to pair my shiny new Wing Drum with…

Thank you!


That’s christmas sorted.



Trying to get up and running from the description above, but keep getting errors.

error: init


script clear

script load: /home/we/dust/code/oooooo/oooooo.lua

including /home/we/dust/code/oooooo/lib/grido.lua

including /home/we/dust/code/oooooo/lib/json.lua

including /home/we/dust/code/oooooo/lib/glyphs.lua

including /home/we/dust/code/oooooo/lib/json.lua

script run

loading engine: SimpleDelay

reading PMAP /home/we/dust/data/oooooo/oooooo.pmap /home/we/dust/data/oooooo/oooooo.pmap not read.

Engine.register_commands; count: 1

___ engine commands ___

threshold f

___ polls ___









script init

including /home/we/dust/code/

including /home/we/dust/code/

ls: cannot access ‘/home/we/dust/data/oooooo/names/’

: No such file or directory

DATA_DIR /home/we/dust/data/oooooo/

name_folder: /home/we/dust/data/oooooo/names/

ls: cannot access ‘/home/we/dust/data/oooooo/names/’

: No such file or directory

initializing 1

initializing 2

initializing 3

initializing 4

initializing 5

initializing 6

initializing 7

grid columns: 0

grid width: 16

pset >> write: /home/we/dust/data/oooooo/oooooo.pset

including /home/we/dust/code/oooooo/lib/monosong.lua

including /home/we/dust/code/oooooo/lib/table_addons.lua

including /home/we/dust/code/oooooo/lib/lattice.lua

in oooooo

connected to virtual

chord changes before:


/home/we/dust/code/oooooo/lib/monosong.lua:44: attempt to call a nil value (field ‘generate_chord_roman’)

stack traceback:

/home/we/norns/lua/core/norns.lua:145: in field ‘generate_chord_roman’

/home/we/dust/code/oooooo/lib/monosong.lua:44: in method ‘play’

/home/we/dust/code/oooooo/oooooo.lua:492: in global ‘init’

/home/we/norns/lua/core/script.lua:126: in function ‘core/script.init’

[C]: in function ‘xpcall’

/home/we/norns/lua/core/norns.lua:146: in field ‘try’

/home/we/norns/lua/core/engine.lua:91: in function </home/we/norns/lua/core/engine.lua:89>

Any thoughts? Can’t wait to give it a bash!



1 Like

awww my bad! I am using a (as of yet) unreleased version of the norns software! it contains @Dewb 's amazing new contribution to the MusicUtil library for adding chords via roman numerals. you don’t need to update your entire norns software, this one line in maiden should get you fixed up:

os.execute("curl > /home/we/norns/lua/lib/musicutil.lua")

I’m still in complete awh over the Strega demo.


It’s alive! Just made a poly Braids bed and threw a few (just)friends onto it. You’ll hear the results on IG.

You’re a clever, clever man Zack.

Thank You!


Cant wait to try this! It looks unbelievably fun.

Is there a way to install it without erasing Oooooo Data?
Am I able to just copy the lua file and rename it to another script name like moonsong?

1 Like

thanks for the kind words @mattallison and @tteejj!

yeah I think you don’t have to erase the oooooo data - but you will change to change the loop startup to 16 beats manually.

but I’m going to go ahead and merge these changes into the oooooo proper in a way that is selectable via the menu and not hacky! will report back tomorrow :slight_smile:



For the roadmap, would it be possible to send a trigger/gate out on Crow output 2 when the notes trigger, this would allow for further sonic sculpting with envelopes or function generators.


yeah you bet!

this might only apply to me but I also have one of the crow outputs (output 3) doing a TE pocket operator clock sync signal which can be triggered at the start of any loop to easily get drum patterns into the recording as well (recording just kick, just snare, just hihat into each loop can be pretty fun).

I pretty much got everything working now with lots of options broken out into the parameters. just need to write up some explanation for the things :writing_hand:

also I’m going to add the long overdue tape warble too to finish it off.


Sorry to be lazy but is there a quick reference somewhere on setting crow out1 to 1v/oct?

Thank you!

1 Like

v1.10.0 - chord layering sequencer

  • add grid combo buttons to clear tape by @MentalSandal (Long press on the last 2 buttons of row 8 to clear the tape.)
  • added tape warble (PARAMS > all loops > tape warble)
  • added “chord layering” mode (chord sequencer with automatic recording)
  • toggle all reverse (goto loop “A” and turn E2 CW until you see toggle reverse)

the big change here is the “chord layering” mode. I can’t update the very top post anymore but I updated the docs which you can read here: oooooo | norns community

“chord layering” mode is basically a chord sequencer atop of oooooo that records notes one at a time onto each loop to eventually form chords. there are some demos here.

here you go!


Hohoho!! Nice Xmas present! :heart_eyes::pray:

1 Like


Thanks so much, not just for the update, but constantly being open to suggestions/feedback (clock out), eagerness to build these features so seamlessly into your exisiting scripts/projects and for your clear documentation and patch suggestions.

Oh and Merry Christmas from Down Under!