Delay Servo Technique

Algorithm development and general DSP issues

Moderator: frank

Digital Larry
Posts: 338
Joined: Mon Nov 12, 2012 1:12 pm
Contact:

Post by Digital Larry »

OK I'm digging into this now and have another question.

Here's the knowledge base code:

Code: Select all

skp	run,1	;only establish the LFO on the first sample pass
wldr	rmp0,0,4096	;set rmp0 to its widest range
cho	rdal,rmp0	;load in the current RMP0 pointer
rdax	mpos,-1	;subtract the desired position
wrax	rmp0_rate,0	;write the position error to the ramp rate register
What I'm wondering about now is mpos. From the text, it is described as the "position within the buffer". So does that go from 0 to 4095? Or 0 to (4096 * 256) - 1?

If I wanted to use a Pot for mpos, do I have to scale it down by 4096/32768? Or does Pot 0.0 to 1.0 magically map somehow to 0 to 4095?

Thx!
frank
Posts: 1244
Joined: Wed Oct 19, 2005 12:26 pm
Contact:

Post by frank »

If memory serves, the ramp is positioned in the acc after a cho rdal as ranging from -1.0 to 0.999 but I really need to try to get time to look at the schematics and check that.
Frank Thomson
Experimental Noize
Digital Larry
Posts: 338
Joined: Mon Nov 12, 2012 1:12 pm
Contact:

Post by Digital Larry »

Here's what I found out.

If you take a pot input and scale it by (negative) 0.50 or higher (that is, between 0.50 and 1.0), the servo signal (for 4096 width Ramp LFO) will start to oscillate a few times a second near the top end of the range when the pot is turned all the way up.

If you back that off to 0.49 then all is well.

In my mucking around I believe that I have determined that the 4096 Ramp LFO goes to a maximum amplitude equivalent to 0.5 if you are talking about audio signals.

So the gain you use for the servo input signal depends both on the amplitude you choose for the Ramp LFO and how big you expect the servo input to be.

A triangle wave that you create from a Ramp LFO via ABSA and SOF will be half the amplitude of the Ramp that created it. So if you made a triangle from a 4096 Ramp it would go from 0 to 0.25. Using that to control a 4096 depth servo delay, you could multiply it by 2 to sweep through the entire buffer. Now that would be WAYYYYY too much for a flanger sweep. I think the gain in the ga_demo_flanger is 0.06.

The product of the servo gain and the maximum servo control input should not equal or exceed the Ramp LFO amplitude, as follows:

4096 => 0.5
2048 => 0.25
1024 => 0.125
512 => 0.06125

This is just a semi educated guess so please straighten me out if I am wrong.
Post Reply