is this what you mean (from here)?

-- filter
      filter_fc = { type="control", controlspec=controlspec.new(10, 12000, 'exp', 1, 12000, "Hz") },
      filter_fc_mod = { type="control", controlspec=controlspec.new(0, 1, 'lin', 0, 1, "") },
      filter_rq = { type="control", controlspec=controlspec.new(0.0005, 8.0, 'exp', 0, 2.0, "") },
      -- @fixme use dB / taper?
      filter_lp = { type="control", controlspec=controlspec.new(0, 1, 'lin', 0, 1, "") },
      filter_hp = { type="control", controlspec=controlspec.new(0, 1, 'lin', 0, 0, "") },
      filter_bp = { type="control", controlspec=controlspec.new(0, 1, 'lin', 0, 0, "") },
      filter_br = { type="control", controlspec=controlspec.new(0, 1, 'lin', 0, 0, "") },
      filter_dry = { type="control", controlspec=controlspec.new(0, 1, 'lin', 0, 0, "") },
2 Likes

that’s the one! I also realized I could just add params and that’d show me the ranges, but I’m away from my norns at the moment and wanted to sketch out an idea.

thank you!

1 Like

I have made a pull request which connects the output of softcut to the input of supercollider. Discuss.

Update: I forgot to add the escape characters. I’ll fix that tomorrow.

3 Likes

I’m experimenting with using (the phenomenal) softcut as a modulated delay which will processes both external audio and supercollider generated audio, and I’m currently trying to work out how to implement a wet/dry parameter. 100% wet would send only the output of softcut to OUT-DAC, 100% dry would send external audio + supercollider to OUT-DAC.

My reading of @zebra’s crone-process-routing diagram tells me that supercollider (‘EXT’) can’t be sent to softcut input (‘CUT’) without also being sent to OUT-DAC. Am I looking at this the wrong way?

Any advice would be very appreciated :slight_smile:

that’s correct, but we could add an additional route / parameter in the mixer client.

@liquid_citizen
… actually now that i think about it (for >5s lol) all that would be required is to apply EXT_CUT_LEVEL before EXT_LEVEL. that’s a trivial change. but it would have the side effect of changing current behavior (EXT_CUT_LEVEL would be in parallel instead of in series with EXT_LEVEL.) undesirable but maybe not a big deal.

i would roll that change into adding a softcut->supercollider feedback path as requested by @lazzarello (and someone else i forgot)

2 Likes

I’m working on script right now and decided to wade into the softcut waters :grimacing: One thing I’ve noticed as “off” (in my code, no doubt) is the relationship between my script’s main metronome and softcut’s rate control.

My main metro is quantized to values divisible by 2 (0.125, 0.25, 0.5, 1), and my intended loop length in softcut is 1 second (start=1, end=2). When I change the rate — only ever multiplied or divided by 2 so that it remains in sync with the main clock — I notice that the softcut delay strays out of beat. If I reduce the loop end point to 1.96 (instead of 2) in softcut, things seem to sync up relatively well. Any idea why this 0.04 shift makes a difference here? Hopefully this makes sense…

I wonder if it’s the same quirk that produces the strange behavior that when I import a clip that’s length is tempo synced to MLR’s set tempo, it still plays at slightly different speed resulting in a slightly different pitch (very slightly, a semi tone or close I think) which means I then have to dial down the pitch to go back to the right tempo / tune (rendering the tempo sync of MLR kind of pointless)

we are work on this right this very minute! https://github.com/monome/norns/issues/868

5 Likes

Peeeeeerfect timing, then :slight_smile:

This kind of thing just makes this community feel like a warm, welcoming place.

4 Likes

Something weird happened between 2.0.1 and 2.1.0, loop points are off, reason is unclear, i willl hunt it down ASAP (tonight/tomorrow)

2 Likes
5 Likes

And I’m back with another newbie question. I’m assuming the answer is no (given the current softcut docs), but is there a way of applying a slew time to pan like you can with level and rate ?

hm, this is an oversight.

there are slew controls on softcut voice pan, as well as on all mixing route levels.

somehow i didn’t add commands to change any of those slew times from lua, but will do so.

4 Likes

Great! Thanks for clarifying @zebra

Me again :sweat_smile: I’m exploring adding a param to my softcut script for manipulating rate, and despite everything working just fine (to my ears, anyways), I’m getting the following error when I call a function specific to my script intended to change the rate:

/home/we/norns/lua/core/softcut.lua:49: bad argument #3 to 'cut_param' (number expected, got nil)
stack traceback:
	[C]: in field 'cut_param'
	/home/we/norns/lua/core/softcut.lua:49: in function 'core/softcut.rate'
	/home/we/dust/code/dunes/dunes-cut-2.lua:54: in field '?'
	/home/we/dust/code/dunes/dunes-cut-2.lua:145: in field 'event'
	/home/we/norns/lua/core/metro.lua:165: in function </home/we/norns/lua/core/metro.lua:162>

I followed that path to lua/core/softcut, line 49:

SC.rate = function(voice,value) _norns.cut_param("rate",voice,value) end

And for context, the error is triggered when I call this specific function in my script:

function rateN() for i=1,2 do softcut.rate(i,params:set("RATE",math.random(1,4)))

Is there something specific I need to do when creating my param in order to assign something to the value variable in cut_param?

Does params:set return a value here? If not, assign the rate to a variable and set it first, then use the variable in softcut.rate()?

Or maybe - do you have an action assigned for the "rate" param? (also confused by “rate” vs “RATE” - not sure if that needs to be consistent case or not)

1 Like

Thanks @okyeron ! I’ll fully admit that my params work this morning was sloppy. I’ll take another crack at this today with your ideas in mind.

I may not actually know what I’m talking about here since I’ve not worked with softcut much - so please take my advice/ideas with a grain of salt. :laughing:

Yeah, this one definitely has me stumped, especially because my code is having its intended effect. I have a variable in my script that I’m assigning the changing rate values to, which works just fine. I only started seeing this error when I implemented the param. I think I’ll swim back to shallow waters, at least for now!