Oooooo

oooooo

digital tape loops x 6.

i call this script “oooooo” because it is composed of six loops. they are like digital tape loops - you can level, pan, speed, slow, shorten, lengthen, dub, overdub any loop at any time.

i was inspired to make this after seeing tape loops circulating (pun sorta intended) all over the place. i like the idea of having multiple independent different loops, with different sizes, played on a different tape players with different eccentricities. i don’t have any cassette tapes but i have norns so i wrote this script to try to make digital tape loops.

future directions:

  • grid support (need help)
  • arc support (need help)
  • crow support (need help)
  • fix all the :bug::bug::bug:

Requirements

  • audio input
  • norns

Documentation

  • E1 selects loops
  • E2 changes mode/parameter

in tape mode:

  • K2 stops
  • K2 again resets
  • K3 plays
  • K1+K2 clears
  • K1+K2 again resets
  • K1+K3 primes recording
  • K1+K3 again records

in other modes:

  • K2 or K3 activates or lfos
  • E3 adjusts parameter

all parameters are available via the global menu.

playback/recording:

  • in tape mode, press K2 to stop/goto 0, and press K3 to start playing (once recorded).
  • in tape mode, press K1+K3 to prime recording. when primed, recording will automatically begin when incoming audio rises above a threshold. the recording threshold can be set by global parameter “recording -> rec thresh”.
  • in tape mode, you can force recording by hitting K1+K3 a second time.
  • recording stops after traversing the whole loop. you can stop it earlier with K2 or K3 (in tape mode) and that will shrink the loop to that point. you can set recording to continue to the next loop by setting the global parameter “recording -> rec thru loops” to yes.
  • by default, volume in “pinched” when starting/stopping recording to avoid pops from discontinuous signals. you can lower/raise the pinching by adjusting the global parameter “vol pinch”.
  • to record a loop over and over, infinitely, change recording -> stop rec after to its max value.

quick menu:

  • E2 changes mode/parameter on the quick menu
  • each parameter can be activated by K2 or K3 (activated lfo), and it can modified by E3
  • you can adjust the rate in continuous or discrete (±25%, ±50%, etc.) by changing the global parameter “continuous rate
  • the “warble” mode allows you to temporarily pitch up/down the current loop using E3

A loop:

  • “A” loop can control all loops. the tape mode works as before, but affects all loops.
  • the quick menu differs from loops but is also activated by K2 or K3, and modulated with E3

settings:

  • in startup menu you can load loops on startup, play loops on startup, start loops with random lfos and change the length of the starting loops (in beats). note: these settings persist next time you open oooooo!
  • in recording menu you can change pre/rec levels, recording threshold for primed recordings, the volume pinchoff, whether to record through loops, and how many times to loop over before stopping recording. note:_ these settings persist next time you open oooooo!
  • in all loops you can pause all lfos, set loop destruction (which slowly degrades loops), ramp volume up/down, randomize loops on reset, change the reset per loop
  • in loop X menu you can modify all lfos, and several other parameters of each loop.

oooooo ideas:

  • audibly ambient: record to each loop and then move them around the screen. video example
  • lucid looper: instead of overdubbing one loop, record six separate loops of the same size that have their own stereo field. change startup -> start length to 16 beats and startup -> start lfos random to yes. then change recording -> rec thru loops to yes and make sure recording -> stop rec after is 1. then reload oooooo, and record. video example
  • dangerous delay: tape delay with six tapes, that shapeshift. in recording menu set pre level and rec level to 0.5. set stop rec after to max. go to A loop. turn E2 to rand lfo and activate with K2. turn E2 to tape and press K1+K3 to record on all loops forever, making a stereo-field delay. (make it crazier by changing all loops -> randomize on reset to yes and all loops -> reset all every to X beats). video example

Download

v0.9.2 - https://github.com/schollz/oooooo/archive/v0.9.2.zip

83 Likes

From description this is so awesome!
Is it in maiden yet?
What is max length of the loop?

1 Like

i’ve sent a request to merge it into maiden. until then you probably need to get it using a terminal:

> ssh we@norns.local (or we@address norns says)
> cd dust/code
> git clone https://github.com/schollz/oooooo

the max length of the loop is ~80 seconds. however i haven’t programmed the ui to accomodate loops that big - they will go off screen but you can still use them :wink:

3 Likes

ooooooh wow. this is the coolest ui i’ve seen in a while.

3 Likes

gorgeous demo of the script!

1 Like

WOW !!! just wow :wink: thanks for sharing :heart_eyes:
“prime” mode dont start the record but audio incoming. is there a peak for that signal or something i can adjust?

1 Like

the threshold for recording is hard coded atm but I’ll update it soon to make it adjustable.

1 Like

Oh wowowowow thank you so much for sharing this!

1 Like

Oooooo!!!
cool name and a great design :raised_hands:
Beautiful work!

2 Likes

easy add! its in there now, just added into v0.2.

it is now!

if anyone else has ideas or finds :beetle::beetle::beetle: please don’t hesitate to hmu

2 Likes

nice thanks a lot! i ll try !

1 Like

suuuuuuuper! loving the UI and the idea behind the script. now to pry some free time from life to play around…

2 Likes

having a lot of fun with this! I was going to ask about adding a reverse function until I figured out that rate goes negative.

I could not figure out how to save audio/tapes between power cycles. is this possible within the script?

1 Like

zack!! you’re on a roll! this is fantastic, thank you for sharing your scripts and for bringing such a unique voice to the library :sparkles:

3 Likes

@Gexex here’s the konami code for saving:

turn E1 so that you see “A” in the top left.* then turn E2 and you should see “save”, “load” and “tempo 120”. turn E2 to “save”. then hold K1 and press K3 to save. loading is similar, just turn E2 to “load”.

there is currently only one “tape” that gets overwritten if you don’t back it up. will look into adding selectable tapes in the params menu.

*note: you can’t turn E1 to “A” if recording is primed/active.

@dan_derks i want to mirror gratitude to you for fostering this inspiring community! i’ve found so much art and inspiration from everyone. honestly, scripting on the norns is a joy. i feel like it is a near-frictionless path toward manifesting creative musical thoughts as i chase the inspiration.

7 Likes

Thanks! It was the “hold K1” part I was missing.

1 Like

great! gonna check this out soon. nice one!

2 Likes

This is fantastic! It’s the sort of thing I got a Norns for - so much fun and deeply involving.

2 Likes

updated to v0.3:

  • slightly better ui
  • there are multiple “tapes” for saving and loading.

also here’s another “oooooo” composition:

12 Likes

Just saw your post on Instagram. Can’t wait for the MIDI mapping!

2 Likes