Tunnels

tunnels

a collection of uncertain delays using norns softcut

tunnels is a collection of randomized, experimental stereo delays built using softcut. the base script does not include an engine that makes sound, so you will need to provide via the inputs. I am hooking tunnels into a few existing scripts and will share those soon here. users are encouraged to create new modes and share the results (code/audio) here. I also plan on continuing to add new modes as I experiment more with softcut (huge thanks to @zebra). all of the mode names - along with much of the inspiration - are taken from An Interface for a Fractal Landscape by Ed Steck (Ugly Duckling Presse, 2019). thanks, Ed.

Requirements

norns 2.0+
audio input

Documentation

page 2: tunnel modes

  • local tunnelmodes = {“off”, “fractal landscape”, “disemboguement”, “post-horizon”, “coded air”, “failing lantern”, “blue cat”, “crawler”, “hanging mosses”}

page 3: control modes

  • manual: K2 & K3 randomize params
  • input frequency: left input freq determines param randomization
  • input amplitude: left amplitude determines param randomization

page 4: input modes (left or left/right)

  • one lane: one buffer, left input
  • two lanes: two buffers, both inputs

K1 (hold): clear buffer(s)
K2 & K3: randomize voices/panning (manual mode)

Download

v1.1 - https://github.com/speakerdamage/tunnels/archive/master.zip

Update Notes

v1.1

  • added Passersby script w/ tunnels page. mode selection only. K2 + K3 on tunnels page (only) to randomize params.
  • replace entire folder if you already have v1.0 installed, as the base script and lib file have been updated.
  • optimizations will make it a lot easier to add tunnels to existing scripts.
30 Likes

this is really great for experimental soundtrack type stuff. The presets turned my music into a sci fi horror movie :slight_smile: I think assigning a controller to the delays / feedback in the parameters section is an absolute must to get the full benefits of this for bending through time.
I really enjoy stepping through the presets for even weirder stuff. Would be interesting to have access to midi cc of those presets in the parameters section also.
If you like Haven synth, then this is up there for strange sounds.
Seriously great app for sound design.

5 Likes

glad you like it! it still needs a fair bit of work: cleanup lib file, do something more interesting with freq/amp (those were just tacked on), a few more assignable params, etc. I really just wanted to get out what I had because everytime I sit down with it I get lost in tweaking ‘presets’.

I’ll also say that it has much less of a horror vibe (which I love, don’t get me wrong) when using with passersby :wink:

3 Likes

I am loving this. Even with no audio input it’s magical. And very musical. Nice work thanks for this!

1 Like

Very excited to check this out!

Love it with the sine, eerie and dreamy, really love it. Will we be able to try the Passersby version too? :innocent:

1 Like

I was debating letting my Norns go, but Tunnels, after a single session, has complicated the matter :slight_smile: Seriously amazing work. Had a great session pairing it with Cocoquantus and everything was gold.

3 Likes

v1.1 is here w/ passersby + tunnels added (thanks to @markeats for base script awesomeness) - see top post for notes.

replace entire tunnels folder if you already have 1.0 as there are breaking changes to lib/base files

5 Likes

Hi guys, this is Tunnels with Three Sisters and Just Friends.
Thank’s @speakerdamage , this script is awesome!

6 Likes

thanks so much for sharing @mlogger and @elia! I love hearing it in these two wildly different contexts.

I finally put aside the screen and just played it last night. this is guitar (live, no overdubs) into a few modules then into tunnels (new mode):

4 Likes

That’s great and scary. It sounded nothing like a guitar and more like a steam train and orchestra :slight_smile: What I like about Tunnels is how it always transforms the source material into something unique and interesting. It’s definitely great for soundtrack type stuff. I like music where you can’t quite make out how it was made.

3 Likes

if i’m using tunnel within another script, how do I get it to be in stereo as default? Currently only have left output and i feel like i’m being a bit slow here…!

edit - took a look at the passersby tunnels script and that taught me everything i needed!

Because it’s a multidelay, It works great on very short plucky sounds, and you start to really hear what the script does. I love the fractal preset with the jumping stereo panning.

Heres Tunnels with an Easel

6 Likes

Sounds great. Just to clarify it a bit, the modes/presets all randomize different params and bounds within those params. So if you have it on the Fractal one, it will probably never be the same twice, but it will have a general ‘sound’. Tip: if something in the far left voice sounds good, press key 3 to randomize the far right voice- you can get some interesting subtle (or not, ha) changes that way due to the feedback routings. Also the panning jumps around slightly on every change. voices 1 & 2 are far left & right, 3 & 4 are closer to center.

Edit: that wasn’t all meant to be directed at you @mlogger - just realized from your post that maybe I didn’t explain some basic things that might not be obvious to others (esp if you don’t look at the code)

5 Likes

no worries, i was using v1.0 in the video, not the v1.1 with the additional randomise and Passersby stuff. is it possible to control the passersby with a grid instead of midi keyboard?

1 Like

Only just seen this! Looking forward to checking it out. I’m guessing it should be fairly straight forward to shoehorn into another script that doesn’t use softcut… (Like Less Concepts etc?)

1 Like

yep, the only real challenge is figuring out how to handle the UI. with passersby it was easy due to existing UI library (see below)

Summary

add/edit a few things at the top:

local tn = include('tunnels/lib/tunnel')
local tab_titles = {{"Wave", "FM"}, {"Env", "Reverb"}, {"LFO", "Targets"}, {"Fate"}, {"Tunnels"}}
local tunnelmode = 1
local tgroup
local tunnelmodes_list
local tunnelmodes = {"off", "fractal landscape", "disemboguement", "post-horizon", "coded air", "failing lantern", "blue cat", "crawler"}

add this function:

local function update_tunnels()
  local tm = tunnelmode
  local tg = tgroup
  tn.randomize(tm, tg)
end

add this to encoder function:

-- tunnels
  elseif pages.index == 5 then
    if n == 2 then
      tunnelmodes_list:set_index_delta(util.clamp(delta, -1, 1))
      tunnelmode = tunnelmodes_list.index
      tgroup = 1
      update_tunnels(tunnelmode)
      tgroup = 2
      update_tunnels(tunnelmode)
      screen_dirty = true
    end
  end

update key function:

-- Key input
function key(n, z)
  if pages.index == 5 then
    if z == 1 then
      if n == 1 then
        softcut.buffer_clear()
      elseif n == 2 then
        tgroup = 1
        update_tunnels(tunnelmode)
        redraw()
      elseif n == 3 then
        tgroup = 2
        update_tunnels(tunnelmode)
        redraw()
      end
    end
  else
    if z == 1 then
      if n == 1 then
        softcut.buffer_clear()
      elseif n == 2 then
        pages:set_index_delta(1, true)
        update_pages()
        
      elseif n == 3 then
        tabs:set_index_delta(1, true)
        update_tabs()
        
      end
    end
  end
end

add to init:

-- tunnels
  tn.init()
  -- need to set to 0 here for some reason
  for i=1, 4 do
    softcut.level(i, 0)
  end
tunnelmodes_list = UI.ScrollingList.new(8, 8, 1, tunnelmodes)

add to redraw function:

elseif pages.index == 5 then
    tunnelmodes_list:redraw()
  end

I would love to add this (or other softcut things… cranes?! @Dan_Derks ) to Less Concepts. haven’t thought about the best way to handle it in that case. it’s only one page on norns so I suppose the UI lib could be added…

2 Likes

I have a WIP version of Less Concepts brewing that might help – I’ll share by the weekend :slight_smile:

btw, I’m so stoked by Tunnels! super inspiring use of softcut

5 Likes

Just wanted to bump this to say it’s an excellent little script!
It’ll makes anything sound cinematic.

1 Like