modulated APF structure | FX Book Questions | Forum


Please consider registering

sp_LogInOut Log In sp_Registration Register

Register | Lost password?
Advanced Search

— Forum Scope —

— Match —

— Forum Options —

Minimum search word length is 3 characters - maximum search word length is 84 characters

sp_Feed Topic RSS sp_TopicIcon
modulated APF structure
May 3, 2017 - 2:16 pm
Member Since: November 29, 2016
Forum Posts: 5
sp_UserOfflineSmall Offline

Hey there,


Working on implementing the modulated APF from the book (11.27 figure) and just wanted to check about the structure of it --


I was thinking I would just run an LFO within the current APF structure and check the current value every time I run processAudio, then instead access the modulated delay index directly of the APF while processing the frame. The new value would be the original value in samples +/- the current scaled LFO value.

Is this a good way of thinking about it?

I know it's only supposed to modulate "at the end of the delay line" but that part confuses me a bit.

May 3, 2017 - 6:02 pm
Member Since: January 29, 2017
Forum Posts: 698
sp_UserOfflineSmall Offline

That modulation is kind of like a special very low depth chorus modulation. I would implement this as a bipolar modulation about the center of the modulation range. This equation is setup for a floating point modulator so you will get a integer + fractional component, as shown in the circular buffer chapter. It will be up to you whether or not to do interpolation on this. The generalized equation I use for chorusing is:

float range = (MAX_DELAY - MIN_DELAY) / 2.f;

float midpoint = range + MIN_DELAY;

float delaySample = LFOValue*(range) + midpoint;

MAX_DELAY: length of delay line

MIN_DELAY: the minimum delay time (MAX_DELAY - delayDepth in samples)

LFOValue: the output of a bipolar LFO [-1.0, +1.0]

I think the book lists very low depths of around +/-8 samples or so, therefore the delayDepth above would be 16 for the +/-8 version. So, the range would be 8 in the above equations. 

- Will

May 4, 2017 - 4:14 pm
Member Since: November 29, 2016
Forum Posts: 5
sp_UserOfflineSmall Offline

Excellent, thanks for the help!

May 6, 2017 - 6:45 pm
Member Since: November 29, 2016
Forum Posts: 5
sp_UserOfflineSmall Offline

Not to double post but I figured this was acceptable given the time passed -- I'm looking at modulating a filter by a pretty substantial amount of time (min 3.0mS, max 15.0mS) to get a spacey modulated reverb sound, any suggestions on how to remove artifacts?

I was looking at storing the last read index from frame to frame then interpolating from that instead of simply interpolating the value one index earlier.

EDIT: did that with linear interpolation, exploring other options because the jumps still cause some artifacts.

Forum Timezone: America/New_York

Most Users Ever Online: 152

Currently Online:
8 Guest(s)

Currently Browsing this Page:
1 Guest(s)

Top Posters:

Chaes: 56

Skyler: 48

StevieD: 46

Derek: 46

Frodson: 45

Peter: 43

TheSmile: 43

Nickolai: 43

clau_ste: 39

jeanlecode: 37

Member Stats:

Guest Posters: 2

Members: 786

Moderators: 1

Admins: 6

Forum Stats:

Groups: 13

Forums: 42

Topics: 853

Posts: 3385

Moderators: W Pirkle: 698