TheSlowGrowth contributions


#1

Forum profile : @TheSlowGrowth
Contributor prefix: TSG

TSG/dist/

  • diodeSat - a classic diode saturation, modelled after a circuit found in many guitar stompboxed and "tape saturation" effects

TSG/ctrl/

  • potDemux 3 - uses one potentiometer to control three values. Including noise cancellation and different modes of operation (overwrite, pickup, scale)

TSG/delay/

  • read m interp - delayline reader with modulation input and configurable interpolation quality.

TSG/fx/

  • reverb - a lush lexicon-style diffuse reverb (30% CPU)
  • reverb cheap - cheap version of the lexicon-style diffuse reverb (18% CPU)
  • tapedelay - syncable stereo tape-delay with many parameters (13% CPU)

TSG/logic/

TSG/filter/

  • allpass m - Schroeder allpass (diffusion delay) with modulation input and configurable memory position & interpolation

TSG/math/

  • limit - limits a value to a upper and lower bound
  • map - maps 0..64 to a..b
  • map b - bipolar cousin of map

TSG/patch/

  • modsource auto - a version of /patch/modsource that automatically updates its value when it changes.
  • numVoices - outputs the number of voices in a subpatch
  • polySpread - outputs a value between -64 and 64, depending on the current voice (pan spread, unison detuning, etc!)

#2

TSG/delay/read m interp

delayline reader with K-rate time and modulation input and 2pt and 3pt interpolation.


#3

TSG/fx/reverb

Lexicon-style reverb with figure-8 topology. Sounds pretty nice at 30% CPU. Capable of infinite decay and decay > 1.

Parameters:

  • Mix
  • Pre-Delay
  • Size
  • Diffusion
  • High Damping
  • Low Damping
  • Decay
  • Modulation Speed
  • Modulation Amount

There is some significant high-rolloff even with "High Damping" at 0. I suspect it comes from the 3pt interpolation in the feedback delay and the schroeder allpasses (my pure data patch with 4pt interpolation sounds totally different!) Nevertheless it is a pretty nice sounding reverb already.

There is now a "cheap" version of this reverb. It uses less diffusion filters (= a little more grainy) and only 2pt interpolation (= a little more noise and a little less top end in the reverb tail)


#4

TSG/filter/allpass m

Schroeder allpass (diffusion delay) with configuration options.
The time input is relative to the full delay line size - e.g. 64.0 equals to the full size. The full delay line time is determined by the following formula:

delaytime = buffersize * ((time/64.0) + (time/64.0)*(mod/64.0))

Beware that the modulation input adds on top of the time input. To avoid glitches in the audio, prevent that both together exceed the delay size. For typical modulation depths, it is a safe measure to simply stay below 60 with the time input.

Attributes:

  • buffer size in ms
  • position in memory (internal RAM, external RAM)
  • interpolation (none, 2pt, 3pt)

#5

TSG/math/map

maps a single input (0..64) to a single output (a..b). A and B are adjustable with dials. Useful for mapping a "macro" parameter to a custom range.

TSG/math/map b

maps a single input (0..64) to a single output (a..b). A and B are bipolar and adjustable with dials. Useful for mapping a "macro" parameter to a custom range.


#6

...so far the best sounding reverb in the 'axoverse' I have discovered...
'decay' all the way to the max gets real noisy,appreciated!

it's a bit cpu-hungry,could there be a way to scale down quality,as an option?


Processing order issue?
#7

You can open the reverb patch and switch all allpasses to 2pt interpolation to reduce the CPU from 29% to 25%. You could also take out one of the four allpasses in each side (reducing the number of allpasses from 8 to 6). If you are okay with the reverb getting a little more echo-y and less diffuse, you could also reduce the number of allpasses even more, but I wouldn't recommend it.


#8

TSG/logic/d flipflop

A simple D-flipflop that shifts the data on its input terminal into its memory on the rising edge of the clock input.


#9

Thanks for these, TSG, I look forward to playing with them cause I'm experimenting with reverb stuff. I'm especially grateful for TSG/math/map, that's going to come in useful for me a lot I think.

Speaking of mapping, just yesterday I noticed the factory filter dials are mapped from 8.176Hz to 13.29kHz, which seems odd to me cause I assumed they'd set the default range as 20Hz to 20kHz. I attempted a basic parametric EQ yesterday and that's when I noticed it. I'll have to start another thread and ask about that cause I'm not sure how I'd create pots that range from 20Hz to 20kHz.


#10

TSG/fx/tapedelay

A syncable stereo tape-style delay with all the bells and whistles. Need some antialiasing, though (turning the "time" knob creates artifacts)

parameters:

  • mix
  • tape age
  • low end
  • saturation
  • delay time
  • delay time symmetry (offsets the time on the left and right channel)
  • sync on/off
  • ping-pong amount
  • feedback

#11

9 posts were split to a new topic: Processing order issue?


#12

I worked around the execution order problems by shifting the objects around a bit. Now the reverb looks completely chaotic, but at least the bias towards the right channel is now gone (I don't hear it anymore, can someone confirm it?)


#13

I can confirm it's fixed here, I can also confirm awesomeness!
Really nice work you did here, thanks for making it :sunglasses:


#14

TSG/math/limit

limits an imcoming value to an upper/lower bound set by its attributes. As a companion to the /math/min and /math/max objects


#15

TSG/patch/modsource auto

A simple modsource that sends its value automatically, whenever it changes. Use this instead of the /logic/change and /patch/modsource combination.


#16

The tapedelay symmetry setting is now relative to the total delay time.
The reverbs now have parameter smoothing on their predelay and size parameters.


#18

Hey friend,we are sailing the same seas!
Check out rbrt/control/t2p and p2t....
I think I didn't document these yet...


#19

Hi @rbrt, thanks for pointing that out. I remember that I tried all different types of keywords to find this - I literally couldn't believe this wasn't available yet... I must have somehow missed your object.

Great, then I can remove mine!


#20

...nevermind,I believe there are a lot of functional duplicates...
and vice versa,probably also some objects with the same name but different functionality
I almost added a 'scale f' (which already exists but works quite differently)..
so it's 'scale' now..

you do max/msp as well ? because your object reminds me of some more I did that
pick up max's concept of 'bang'
interestingly,your object is using quite a different approach but also needs 8 CPU-cycles..


#21

Thanks @TheSlowGrowth, the allpass m and map objects are really great and useful :control_knobs:

By the way, did you tried to implement nested all pass filters. I used them in some of my JSFX plugins and they were quite efficient for "ensemble effects".