Page 1 of 1

Using multiple servo delays?

Posted: Fri Jan 09, 2015 7:59 am
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.

Re: Using multiple servo delays?

Posted: Fri Jan 09, 2015 10:28 am
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.

Re: Using multiple servo delays?

Posted: Fri Jan 09, 2015 4:30 pm
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.