do you have monitor on/up in audio settings/mix page? i don’t see anything in otis that affects this one way or the other.

1 Like

on mix page, in has signal. mon is zero (no vu meters moving).

There are items in the params menu for input level and engine level which don’t seem to do anything for me. Same for 1 dry signal and 2 dry signal

looking at the code (in tlps.lua)…

  params:add_control("input_level", "input level", controlspec.new(0, 1, "lin", 0, 0))
  params:set_action("input_level", function(x) audio.level_adc_cut(x) end)
  -- engine level
  params:add_control("engine_level", "engine level", controlspec.new(0, 1, "lin", 0, 1))
  params:set_action("engine_level", function(x) audio.level_eng_cut(x) end)

these are set to softcut level rather than global levels - so maybe those menu tags could be more descriptive?

and then…

 -- dry signal
    params:add_control(i .. "dry_signal", i .. " dry signal", controlspec.new(0, 1, 'lin', 0, 1, ""))
    params:set_action(i .. "dry_signal", function(x) softcut.filter_dry(i, x) end)

perhaps this needs to be updated to softcut.pre_filter_dry?

(caveat - I really have not touched softcut and don’t know what is normal or not there)

Things are working correctly.

input level is the level of the adc into softcut.
engine level is the level of an engine into softcut.

Even with both input level and engine level at 0, you will still hear the input through the adc to supercollider to dac routing.

re: menu id’s I agree, it could be better. I’ll change it in the next update. perhaps sc_input_level and sc_engine_level.

I’ll look at the softcut filter stuff as well.

just pushed a small update that renames the input and engine level params to sc input level and sc engine level. also fixed the softcut filter code.


update v1.3

  • adds sample and hold lfo shape! (Many thanks to @crim for coding it!)

Hi @Justmat, I hadn’t a clue what exactly norns/fates can do when buying it. But this patch is exactly what I what.

For my understanding, if there is nothing in the buffer and I hit rec (which was off) play something and hit rec again this will not set the loop length (loop end), right? Or is the loop end just not updating?

Thanks for all the work on this and other patches.


right, loop end and rec are separate in otis. The way rec works is that, any time rec is on new sound is being added to the buffer/loop and older sounds are fading away according to the feedback settings.

turning rec off holds the buffer, stopping both new material from being recorded, and old things from fading away.


Okay, now I understand, thanks.

This forces me to work differently with that, which is great. I’m used to a normal looper. But I like speed control very much. I will play with it more in the next days for sure.

1 Like

Yeah, in use It works much more like two tape loops than like a traditional looper. If you like the traditional style, be sure to check out reels! it’s a really cool looper script :slight_smile:


A quick little sketch built upon a looping bed done with Otis.


I just downloaded the newest Norns update and Otis isn’t working. I keep getting the error: int message back on the main menu page. I’m very new to Norns and have never had Otis working, so it’s not like it just broke for me. I’ve installed a bunch of new apps using Maiden and they all work, save for Otis.

Anyone else having this problem? As per tehn’s instructions I, I’ve forced a new update despite Norn’s saying it’s already up to date. I’ve also uninstalled and reinstalled a few times.

Hey there! Yep, can reproduce here. Looks like it’s throwing an error with some core norns stuff.

Maiden Readout

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


script clear

including /home/we/dust/code/otis/lib/tlps.lua

including /home/we/dust/code/otis/lib/hnds.lua

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

script run

loading engine: Decimator

Engine.register_commands; count: 2

___ engine commands ___

sdepth f

srate i

___ polls ___









script init


/home/we/dust/code/otis/lib/tlps.lua:97: attempt to call a nil value (field ‘post_filter_fc_mod’)

stack traceback:

/home/we/norns/lua/core/norns.lua:126: in field ‘post_filter_fc_mod’

/home/we/dust/code/otis/lib/tlps.lua:97: in field ‘init’

/home/we/dust/code/otis/otis.lua:239: in global ‘init’

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

[C]: in function ‘xpcall’

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

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

reading PMAP /home/we/dust/data/otis/otis.pmap

I will check into this today! Sorry for the troubles. Does this occur with other Softcut scripts, or is it just otis?

this is in fact working (i think?)

what you need to do is re-run the 200129 update by holding K1 while executing SYSTEM > UPDATE

Still broken for me. I made a more detailed response in the help thread

totally trivial fix but i did open a PR. if anyone needs the change immediately!

1 Like

PR merged. Update Otis for the fix! Thanks @zebra :partying_face:


Hi! Just starting along with Norns and so far Otis is the most immediately useable and lovely script I have found. Thank you x1000 to the developers!

I have a few questions:
1 - Am I correct in assuming that SC Input and SC Engine don’t do anything?
2 - Is it possible to have Otis running at the same time as other scripts?
3 - what does write buffers to tape do? Saves the buffer to the internal storage?
4 - what do speed and pan slew do?
5 - on the main menu to the far left (??) what does “enq” do? And is “cut” just the master filter? And “tp”. does this stand for tape? And if so, what does this do?

That’s more than a few questions. I’ve tried to look for answers in the thread, so please forgive me if I my questions seem obvious.

Thanks in advance for your help!


Question 1: not sure which page you’re seeing this so I can’t really help.
2: Combos
Otis can be combined with some other scripts! @Justmat has done so already here, take a look at the script in maiden to see how.
3: yes!
4: these will slew/smooth the rate at which these parameters change.
5: these are the norns mixer page, “eng” is engine level, “cut” is softcut (a multi head delay that can be implemented in many ways depending on the script), “tp” is tape. Tape playback allows you to record audio files and play them back simultaneously to using scripts.

1 Like

Thanks for your reply!
Q1 was referring the main menu page farthest to the right. It has all the available parameters of Otis in a list~
Q2 Wonderful! Gotta get a Grid at some point then - and learn how to read scripts~~~
Q3,4,5 Excellent! That’s all very clear.

I appreciate you taking the time to reply!