Sounds like what you want to do is along the lines of having both a "width" and "center" control so that you can get from flange (short delay) to chorus (longer delay) with a knob.
You could try the servo delay approach, which doesn't use the SIN LFO in the CHO RDA instruction. Using the CHO RDA with RAMP limits you ( a bit) to a max of 4096 samples, which is actually plenty for this.
Then you'd need to make a control signal which is a fixed value (the center) combined with an adjustable width (you can use the SIN LFO with CHO RDAL).
You'll want to be careful that the sum of the center and +/- width stays inside the range of 0 - 4095 of the buffer.
I'm a little surprised that the example you gave didn't work out, although in my experience, a max swing of only 3 msec when the total delay time is 30 msec is not going to give a strong chorusing effect.
It's an interesting challenge.
See if this is more along the lines of what you want.
It uses a servo delay block.
Pot 0 controls the speed of SIN LFO 0.
The LFO is a SIN LFO scaled (by a following SOF) to go from 0 to (x) whatever the default WLDS width setting is. This is helpful in some cases because normally the SINx_WIDTH control adjusts +/- swings around the center point. In this case, the SIN goes up from 0 to the max level and then a following MULT with POT1 controls the excursion in just one direction. So you can use that directly for the delay time control to the servo without worrying about what happens if I go < 0.
Then I use Pot 2 mixed (added) with this scaled LFO to set, not the center point, but the lowest point of the LFO swing.
I didn't put too much effort into it and you may need to tweak the SOFs or whatever to give you more of what you are after.
The following code was generated by SpinCAD and is not the way you would necessarily go about it if you were writing the whole thing by hand. But I think the overall concepts still apply.
Code: Select all
; Patch Name: manual width control chorus-flanger.spcd
; SpinCAD Designer version: 956
; Pot 0: LFO speed
; Pot 1: LFO width
; Pot 2: delay minimum point
;
;
; ----------------------------
;------ Input
;------ Pot 2
;------ Pot 0
;------ Pot 1
;------ Scale/Offset
RDAX POT2,1.0000000000
SOF 0.4200000000,0.0000000000
WRAX REG0,0.0000000000
;------ Scale/Offset
RDAX POT0,1.0000000000
SOF 0.7500000000,0.2500000000
WRAX REG1,0.0000000000
;------ Scale/Offset
RDAX POT1,1.0000000000
SOF 0.9600000000,0.0400000000
WRAX REG2,0.0000000000
;------ LFO 0
SKP RUN ,1
WLDS 0,100,5173
RDAX REG1,0.1956947162
WRAX SIN0_RATE,0.0000000000
CHO RDAL,0
SOF 0.5000000000,0.5000000000
WRAX REG3,0.0000000000
;------ Multiply
RDAX REG3,1.0000000000
MULX REG2
WRAX REG4,0.0000000000
;------ Volume
RDAX ADCL,0.6309573445
WRAX REG5,0.0000000000
;------ Mixer 2:1
RDAX REG4,1.0000000000
WRAX REG6,0.0000000000
RDAX REG0,1.0000000000
RDAX REG6,1.0000000000
WRAX REG6,0.0000000000
;------ Feedback Output
;------ Servo Flanger
SKP RUN ,1
WLDR 0, 0, 4096
CLR
RDAX REG7,0.5000000000
RDAX REG5,1.0000000000
WRA 0,0.0
CHO RDAL,2
RDAX REG6,-0.2500000000
WRAX RMP0_RATE,0.0000000000
CHO RDA,2,REG | COMPC,0
CHO RDA,2,0,1
RDFX REG9,0.2500000000
WRLX REG9,-1.0000000000
WRAX REG8,0.0000000000
CLR
OR $007FFF00
SOF 0.0029687500,0.0001867676
WRAX ADDR_PTR,0.0000000000
RMPA 1.0
WRAX REG10,0.0000000000
;------ Mixer 2:1
RDAX REG8,1.0000000000
RDAX REG10,1.0000000000
WRAX REG11,0.0000000000
;------ Phase_Invert
RDAX REG8,-1.0000000000
WRAX REG12,0.0000000000
;------ Output
RDAX REG11,1.0000000000
RDAX REG11,1.0000000000
WRAX DACL,1.0000000000
WRAX DACR,0.0000000000
;------ FB In 1
RDAX REG12,1.0000000000
WRAX REG7,0.0000000000