Using multiple servo delays?

Algorithm development and general DSP issues

Moderator: frank

Post Reply
pharaohamps
Posts: 34
Joined: Thu Nov 09, 2006 6:58 am
Contact:

Using multiple servo delays?

Post by pharaohamps »

According to the knowledge base, one of the preferred methods for reading a "sweeping" delay such as a flanger is to use a servo method:

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

cho rda,rmp0,reg|compc,del  ; read from first delay location
cho rda,rmp0,0,del+1  ; read from second delay position and interpolate
If we have multiple delay blocks of equal length in an algorithm (stereo delay, for example) is there any reason why we can't use the same RMP LFO to control both?

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

ldax leftsig ; read in left delay input
wra ldel,0  ; write to first delay
ldax rightsig ; ditto the right delay input
wra rdel,0 ; write to second delay

cho	rdal,rmp0	;load in the current RMP0 pointer
rdax	[b]mpos[/b],-1	;subtract the desired position
wrax	rmp0_rate,0	;write the position error to the ramp rate register

cho rda,rmp0,reg|compc,ldel
cho rda,rmp0,0,ldel+1
wrax leftout,0

cho rda,rmp0,reg|compc,rdel
cho rda,rmp0,0,rdel+1
wrax rightout,0
Both delays would be controlled by the mpos register, so as long as it stays in a valid delay range is there any reason this wouldn't work?

If this method is valid, is there any reason you couldn't use the same ramp to control two completely different delays, either by updating mpos between delay reads or by using a different register to hold the second delay position value? It seems like that wouldn't work, since you have to read in the current position value and then change the ramp rate, but I thought I'd ask.
frank
Posts: 1244
Joined: Wed Oct 19, 2005 12:26 pm
Contact:

Re: Using multiple servo delays?

Post by frank »

pharaohamps wrote:
If we have multiple delay blocks of equal length in an algorithm (stereo delay, for example) is there any reason why we can't use the same RMP LFO to control both?

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

ldax leftsig ; read in left delay input
wra ldel,0  ; write to first delay
ldax rightsig ; ditto the right delay input
wra rdel,0 ; write to second delay

cho	rdal,rmp0	;load in the current RMP0 pointer
rdax	[b]mpos[/b],-1	;subtract the desired position
wrax	rmp0_rate,0	;write the position error to the ramp rate register

cho rda,rmp0,reg|compc,ldel
cho rda,rmp0,0,ldel+1
wrax leftout,0

cho rda,rmp0,reg|compc,rdel
cho rda,rmp0,0,rdel+1
wrax rightout,0
Both delays would be controlled by the mpos register, so as long as it stays in a valid delay range is there any reason this wouldn't work?
I believe that will work but remove the "reg" in the second "cho" set, the ramp could update between them and we don't want that, we want them to all see the same value.
pharaohamps wrote: If this method is valid, is there any reason you couldn't use the same ramp to control two completely different delays, either by updating mpos between delay reads or by using a different register to hold the second delay position value? It seems like that wouldn't work, since you have to read in the current position value and then change the ramp rate, but I thought I'd ask.
This won't work, the new update value will over write the old one in rmp0_rate. You can really only update any rate or range register once in a program/sample period.
Frank Thomson
Experimental Noize
pharaohamps
Posts: 34
Joined: Thu Nov 09, 2006 6:58 am
Contact:

Re: Using multiple servo delays?

Post by pharaohamps »

frank wrote: I believe that will work but remove the "reg" in the second "cho" set, the ramp could update between them and we don't want that, we want them to all see the same value.
Makes sense. I always forget about reg.
frank wrote: This won't work, the new update value will over write the old one in rmp0_rate. You can really only update any rate or range register once in a program/sample period.
Didn't think so, but I wanted to ask the expert.
Post Reply