Help with stripping down a FV-1 reverb patch to the bare bones

Started by KarenColumbo, May 03, 2021, 07:10:38 AM

Previous topic - Next topic

KarenColumbo

Dear Digitals, I'd like to strip this *** http://www.spinsemi.com/get_spn.php?spn=dance_ir_h_l.spn&prodnum=SPN1001 *** FV-1 reverb patch down to the bare minimum, i.e. get rid of ALL the filtering so that the reverb just reverberates what's put in.
Could you help me with this?

(What I REALLY would like is splice in a chorus in place of the High and Low Pass (thus using pot1 and pot2 as LFO speed and LFO width.) BUT the first step would be to completely take the filter section plus pot1 and pot2 completely out of the equation so that the FUNCTIONING reverb part remains)

Here's the original Spin ASM code in full.
;dance patchfor disco mixers:
;pot1 = Reverb to infinite RT, scales in and out levels
;pot2 = High pass filter (2 pole peaking, 8 ocatves)
;pot3 = Low pass filter (2 pole peaking, 8 ocatves)

;filters are great for actively modifying program material;
;reveb can capture tonality for filter manipulation.
;beware, infinite reverb turns off input!

equ krt reg0
equ kin reg1
equ kmix reg2
equ hpal reg3
equ hpbl reg4
equ lpal reg5
equ lpbl reg6
equ hpar reg7
equ hpbr reg8
equ lpar reg9
equ lpbr reg10
equ kfh reg11
equ kfl reg12
equ temp reg13
equ rmixl reg14
equ rmixr reg15
equ hpoutl reg16
equ hpoutr reg17
equ hbyp reg18
equ lbyp reg19

mem ap1 202
mem ap2 541
mem ap3 1157
mem ap4 1903

mem dap1a 2204
mem dap1b 3301
mem del1 4456
mem dap2a 3532
mem dap2b 3201
mem del2 6325

equ kap 0.6
equ kql -0.2
equ kqh -0.2

;prepare pots to affect control variables:
;pot0 controls reverb time, but also affects input drive level;
;reveb time is moderate up to about mid position, then increases
;to infinity (or nearly) at full position.
;input drive is constant, but decreases at the full pot0 position.
;output mix is varied over the first half of pot0, then remains
;high to the end of pot0's range.

rdax pot0,1.999 ;get pot0, clip the upper half of pot0's range.
wrax kmix,0 ;write the output mix value

rdax pot0,-1 ;get pot0 again, 0 to -1
sof 1,0.999 ;now +1 to 0
sof 1.999,0 ;now +1 until midpint, then decreases to 0
wrax kin,0 ;write the input attenuator value

rdax pot0,1 ;get pot0 again
wrax krt,1 ;save in krt, keep in ACC
sof 1,-0.5 ;subtract 1/2
skp gez,2 ;skp if pot is in upper half of range
sof 0,0.5 ;load accumulator with +0.5
wrax krt,0 ;overwrite if pot is in lower half of range

;now prepare pot1 for HP sweeping.
;both frequency controls are exponential, and frequency increases
;with clockwise pot rotation. Target Kf ranges are from .001 to 1.0

clr
rdax pot1,1 ;get pot1
sof 0.5,-0.5 ;ranges -0.5 to 0
exp 1,0
wrax kfh,0 ;write to HP filter control

rdax pot2,1 ;get pot2
sof 0.5,-0.5 ;ranges -0.5 to 0
exp 1,0
wrax kfl,0 ;write to LP filter control

;now derive filter bypass functions (at open conditions)

rdax pot1,-1
sof 1,0.999 ;ranges +1 to 0
wrax temp,1
mulx temp
mulx temp
wrax hbyp,0


rdax pot2,1 ;read pot2 (LP) again
mulx pot2
mulx pot2
mulx pot2
wrax lbyp,0

;now do reverb, simple, twin loop, mono drive:

rdax adcl,0.25
rdax adcr,0.25 ;get inputs, leave headroom
mulx kin ;scale by input attenuator
rda ap1#,kap ;4 all passes:
wrap ap1,-kap
rda ap2#,kap
wrap ap2,-kap
rda ap3#,kap
wrap ap3,-kap
rda ap4#,kap
wrap ap4,-kap
wrax temp,0 ;write ap output to temp reg

rda del2#,1
mulx krt
rdax temp,1
rda dap1a#,kap
wrap dap1a,-kap
rda dap1b#,kap
wrap dap1b,-kap
wra del1,0
rda del1#,1
mulx krt
rdax temp,1
rda dap2a#,kap
wrap dap2a,-kap
rda dap2b#,kap
wrap dap2b,-kap
wra del2,0

;now mix the inputs with the reverb:

rdax adcl,-1
rda del1,1.5
mulx pot0
rdax adcl,1
wrax rmixl,0

rdax adcr,-1
rda del2,1.5
mulx pot0
rdax adcr,1
wrax rmixr,0

;Reverb outputs are at rmixl and rmixr.

;now do two filters, start with the high pass, stereo.
;use the reveb mix for inputs, cascade the filter banks.

rdax hpal,1
mulx kfh
rdax hpbl,1
wrax hpbl,-1
rdax hpal,kqh
rdax rmixl,1
wrax hpoutl,1 ;HP output
mulx kfh
rdax hpal,1
wrax hpal,0

rdax hpar,1
mulx kfh
rdax hpbr,1
wrax hpbr,-1
rdax hpar,kqh
rdax rmixr,1
wrax hpoutr,1 ;HP output
mulx kfh
rdax hpar,1
wrax hpar,0

;bypass if pot1 is fully counterclockwise:

rdax hpoutl,-1
rdax rmixl,1
mulx hbyp
rdax hpoutl,1
wrax hpoutl,0

rdax hpoutr,-1
rdax rmixr,1
mulx hbyp
rdax hpoutr,1
wrax hpoutr,0

;now do cascaded low pass:

rdax lpal,1
mulx kfl
rdax lpbl,1
wrax lpbl,-1
rdax lpal,kql
rdax hpoutl,1
mulx kfl
rdax lpal,1
wrax lpal,0

rdax lpar,1
mulx kfl
rdax lpbr,1
wrax lpbr,-1
rdax lpar,kql
rdax hpoutr,1
mulx kfl
rdax lpar,1
wrax lpar,0

rdax lpbl,-1
rdax hpoutl,1
mulx lbyp
rdax lpbl,1
wrax dacl,0

rdax lpbr,-1
rdax hpoutr,1
mulx lbyp
rdax lpbr,1
wrax dacr,0






Here's the chorus I'd love to splice in:
; ----------------------------
;------ Input
;------ Pot 2
;------ Pot 1
;------ 4-voice Chorus
SKP RUN ,1
WLDS 0,50,64
RDAX POT2,0.0039062500
WRAX SIN0_RANGE,0.0000000000
RDAX POT1,0.0391389432
WRAX SIN0_RATE,0.0000000000
RDAX ADCL,1.0000000000
WRA 0,0.0
CHO RDA,0,REG | COMPC,190
CHO RDA,0,0,191
WRAX REG0,0.0000000000
CHO RDA,0,REG | COMPA,914
CHO RDA,0,COMPC | COMPA,915
WRAX REG1,0.0000000000
CHO RDA,0,COS  | REG | COMPC,678
CHO RDA,0,COS ,679
WRAX REG2,0.0000000000
CHO RDA,0,COS  | REG | COMPA,413
CHO RDA,0,COS  | COMPC | COMPA,414
WRAX REG3,0.0000000000
;------ Mixer 4:1
RDAX REG0,1.0000000000
WRAX REG4,0.0000000000
RDAX REG1,1.0000000000
RDAX REG4,1.0000000000
WRAX REG4,0.0000000000
RDAX REG2,1.0000000000
RDAX REG4,1.0000000000
WRAX REG4,0.0000000000
RDAX REG3,1.0000000000
RDAX REG4,1.0000000000
WRAX REG4,0.0000000000
;------ Output
RDAX REG4,1.0000000000
WRAX DACL,0.0000000000
[/size]

(My problem here is that the reverb writes its output into "rmixl" and "rmixr", I guess I have to sum them up into the right register for the chorus to read and process them. ANd so on ...)

Would be so cool if some one could lend me a hand here and eliminate the Filter section but leave the Reverb section functioning as is.

I think I could take it from there and learn something new on the way.
  • SUPPORTER
I see something of myself in everyone / Just at this moment of the world / As snow gathers like bolts of lace / Waltzing on a ballroom girl" - Joni Mitchell - "Hejira"

Ice-9

You could start with the Fv-1 Demo program that already has reverb and chorus .
This would give you a good start for optimising the code to your spec.


;GA_DEMO Chorus

;Pot0 = Reverb level
;Pot1 = Rate
;pot2 = Effect level

;memory declarations:

mem ap1 334
mem ap2 556
mem ap3 871

mem lap1a 808
mem lap1b 1934
mem d1 2489

mem lap2a 1016
mem lap2b 1787
mem d2 2287

mem chodel 5000

;register equates:

equ mono reg0
equ apout reg1
equ lp1 reg2
equ lp2 reg3
equ revout reg4
equ choout reg5

;declare constants:

equ kap 0.6 ;all pass coefficient
equ krt 0.55 ;reverb time
equ krf 0.5 ;reverb lpf freq
equ krs -0.6 ;reverb lpf shelf

;clear registers and initialize LFOs:

skp run,endclr
wrax lp1,0
wrax lp2,0
wlds sin0,12,100
wlds sin1,0,800
endclr:

;sum inputs to mono:

rdax adcl,0.5
rdax adcr,0.5
wra chodel,1 ;write to chorus delay
wrax mono,0.5 ;attenuate into reverb

;do reverb and put result in revout (after pot0 control):

rda ap1#,kap
wrap ap1,-kap
rda ap2#,kap
wrap ap2,-kap
rda ap3#,kap
wrap ap3,-kap
wrax apout,0

rda d2#,krt
rdax apout,1
rda lap1a#,kap
wrap lap1a,-kap
rda lap1b#,kap
wrap lap1b,-kap
rdfx lp1,krf
wrlx lp1,krs
wra d1,0

rda d1#,krt
rdax apout,1
rda lap2a#,kap
wrap lap2a,-kap
rda lap2b#,kap
wrap lap2b,-kap
rdfx lp2,krf
wrlx lp2,krs
wra d2,1.99
rda d1,1.99
mulx pot0
mulx pot0
wrax revout,0

;smooth reverb:

cho rda,sin0,sin|reg|compc,lap1b+100
cho rda,sin0,sin,lap1b+101
wra lap1b+200,0
cho rda,sin0,sin|reg|compc,lap2b+100
cho rda,sin0,sin,lap2b+101
wra lap2b+200,0
;

;now do chorus, prepare pot1 for rate, driving SIN1:

rdax pot1,1
mulx pot1
sof 0.02,0.01 ;approx. 1Hz to 3 Hz
wrax sin1_rate,0 ;load sin1 rate register

;do chorus from chorus delay:

cho rda,sin1,sin|reg|compc,chodel+1400
cho rda,sin1,sin,chodel+1401

cho rda,sin1,cos|reg|compc,chodel+1200
cho rda,sin1,cos,chodel+1201

cho rda,sin1,sin|reg|compa,chodel+1600
cho rda,sin1,sin|compc|compa,chodel+1601

cho rda,sin1,cos|reg|compa,chodel+900
cho rda,sin1,cos|compc|compa,chodel+901

mulx pot2
wrax choout,0

;combine signals:

rdax mono,1
rdax revout,1
rdax choout,0.5
wrax dacl,1
wrax dacr,0
www.stanleyfx.co.uk

Sanity: doing the same thing over and over again and expecting the same result. Mick Taylor

Please at least have 1 forum post before sending me a PM demanding something.

KarenColumbo

Thanks for the quick one. I think I have to explain. I know this is a LAZY question. Background is that I have none in this field, but as a wise man once said, it's never too late to suck at something new.

I posted this specific reverb because it has a "freeze" function that works right out of the box - I had an assembled "ThreeVerb" (https://www.pedalpcb.com/product/threeverb/) in my "To Do" box and just uploaded this patch onto some virgin EEPROM, bridged pot0's pins 1 & 2 with an additional jack where I connected one of my keyboard sustain pedals. Works and is a lot of fun to play with.

The author of this excellent patch made three variants: High & Low Pass, Flange and Pitchshift. I can imagine what kind of effect is targeted, it's not too stompbox-y. I, on the other hand, would love to do a "sustain pedal for stompbox input devices", and a decent chorus would make a good "cloud" of the frozen chord/note/whatever instead of the rather extreme 4-pole Pass Filter, the manual Flanger oder the rather crass Pitch Shifter. The description in the code - "dance patch for disco mixers" - says it all.

I perused some 20, 25 "reverb plus something" patches and read the (in my eyes rather sparse) documentation provided on the Spinsemi website. I think I'm getting somewhere identifying the building blocks. But it is still a LONG way to go, I know.

If someone just took a few minutes eradicating the Filter Section out of the original patch, even if this someone hasn't got the time to comment on it, I could "re-trace" the steps and learn something :)   
  • SUPPORTER
I see something of myself in everyone / Just at this moment of the world / As snow gathers like bolts of lace / Waltzing on a ballroom girl" - Joni Mitchell - "Hejira"

potul

If it helps, I already went down this route. I adapted this exact patch by adding a chorus for my freeze pedal. I also made a version that has an octave up-down added to give it some organ vibes. In this video, around 0:10 you can see me adding in the modulation.



If you are interested just let me know and I will send you the patches.

KarenColumbo

  • SUPPORTER
I see something of myself in everyone / Just at this moment of the world / As snow gathers like bolts of lace / Waltzing on a ballroom girl" - Joni Mitchell - "Hejira"

Ice-9

Oh I see, you wanted to use that particular reverb because of the freeze.

I note Potul is sending you his effect with the freeze and chorus but in case anyone else wants to play with the above freeze reverb I have stripped out the filters and all the code around them which trims the code down to only 54 lines. I haven't tested it so anyone will need to try it to make sure it works as it should. There is more code that could be removed to tidy up the output once you know what you are doing with adding the chorus.



;dance patchfor disco mixers:
;pot0 = Reverb to infinite RT, scales in and out levels
;pot1 =
;pot2 =

;beware, infinite reverb turns off input!

equ krt reg0
equ kin reg1
equ kmix reg2
equ temp reg13
equ rmixl reg14
equ rmixr reg15


mem ap1 202
mem ap2 541
mem ap3 1157
mem ap4 1903

mem dap1a 2204
mem dap1b 3301
mem del1 4456
mem dap2a 3532
mem dap2b 3201
mem del2 6325

equ kap 0.6
equ kql -0.2
equ kqh -0.2

;prepare pots to affect control variables:
;pot0 controls reverb time, but also affects input drive level;
;reveb time is moderate up to about mid position, then increases
;to infinity (or nearly) at full position.
;input drive is constant, but decreases at the full pot0 position.
;output mix is varied over the first half of pot0, then remains
;high to the end of pot0's range.

rdax pot0,1.999 ;get pot0, clip the upper half of pot0's range.
wrax kmix,0 ;write the output mix value

rdax pot0,-1 ;get pot0 again, 0 to -1
sof 1,0.999 ;now +1 to 0
sof 1.999,0 ;now +1 until midpint, then decreases to 0
wrax kin,0 ;write the input attenuator value

rdax pot0,1 ;get pot0 again
wrax krt,1 ;save in krt, keep in ACC
sof 1,-0.5 ;subtract 1/2
skp gez,2 ;skp if pot is in upper half of range
sof 0,0.5 ;load accumulator with +0.5
wrax krt,0 ;overwrite if pot is in lower half of range

;now do reverb, simple, twin loop, mono drive:

rdax adcl,0.25
rdax adcr,0.25 ;get inputs, leave headroom
mulx kin ;scale by input attenuator
rda ap1#,kap ;4 all passes:
wrap ap1,-kap
rda ap2#,kap
wrap ap2,-kap
rda ap3#,kap
wrap ap3,-kap
rda ap4#,kap
wrap ap4,-kap
wrax temp,0 ;write ap output to temp reg

rda del2#,1
mulx krt
rdax temp,1
rda dap1a#,kap
wrap dap1a,-kap
rda dap1b#,kap
wrap dap1b,-kap
wra del1,0
rda del1#,1
mulx krt
rdax temp,1
rda dap2a#,kap
wrap dap2a,-kap
rda dap2b#,kap
wrap dap2b,-kap
wra del2,0

;now mix the inputs with the reverb:

rdax adcl,-1
rda del1,1.5
mulx pot0
rdax adcl,1
wrax rmixl,0

rdax adcr,-1
rda del2,1.5
mulx pot0
rdax adcr,1
wrax rmixr,0

;Reverb outputs are at rmixl and rmixr.


rdax rmixl,1
wrax dacl,0

rdax rmixr,1
wrax dacr,0



www.stanleyfx.co.uk

Sanity: doing the same thing over and over again and expecting the same result. Mick Taylor

Please at least have 1 forum post before sending me a PM demanding something.

potul

Here you have, a version with chorus:


;disco mixer program
;pot_reverb = infinite reverb
;pot_pitch = pitch to zero
;pot_filter = 4 pole low pass filter

equ pot_reverb pot2
equ pot_chorus pot1
equ pot_mix pot0

equ krt reg0
equ kin reg1
equ kmix reg2
;equ lpal reg4
;equ lpbl reg5
;equ lpar reg6
;equ lpbr reg7
;equ stop reg8
;equ pbyp reg9
;equ pol reg10
;equ por reg11
;equ kfl reg12
equ temp reg13
equ rmixl reg14
equ rmixr reg15
;equ lbyp reg16
equ  choout  reg17



mem ap1 502
mem ap2 821

mem dap1a 2204
mem dap1b 2701
mem del1 4456
mem dap2a 2532
mem dap2b 2201
mem del2 6325

mem chodel 5000

;mem pdelr 4096
;mem pdell 4096
;mem dtemp 1

equ kap 0.6
;equ kql -0.2

skp run,endclr

wlds sin1,0,800
endclr:

;prepare pots to affect control variables:
;pot_reverb controls reverb time, but also affects input drive level;
;reveb time is moderate up to about mid position, then increases
;to infinity (or nearly) at full position.
;input drive is constant, but decreases at the full pot_reverb position.
;output mix is varied over the first half of pot_reverb, then remains
;high to the end of pot_reverb's range.

rdax pot_reverb,1.999 ;get pot_reverb, clip the upper half of pot_reverb's range.
wrax kmix,0 ;write the output mix value

rdax pot_reverb,-1 ;get pot_reverb again, 0 to -1
sof 1,0.999 ;now +1 to 0
sof 1.999,0 ;now +1 until midpint, then decreases to 0
wrax kin,0 ;write the input attenuator value

rdax pot_reverb,1 ;get pot_reverb again
wrax krt,1 ;save in krt, keep in ACC
sof 1,-0.5 ;subtract 1/2
skp gez,2 ;skp if pot is in upper half of range
sof 0,0.5 ;load accumulator with +0.5
wrax krt,0 ;overwrite if pot is in lower half of range


;now do reverb, simple, twin loop, mono drive:

rdax adcl,0.5
;rdax adcr,0.25 ;get inputs, leave headroom
mulx kin ;scale by input attenuator
rda ap1#,kap ;4 all passes:
wrap ap1,-kap
rda ap2#,kap
wrap ap2,-kap
wrax temp,0 ;write ap output to temp reg

rda del2#,1
mulx krt
rdax temp,1
rda dap1a#,kap
wrap dap1a,-kap
rda dap1b#,kap
wrap dap1b,-kap
wra del1,0
rda del1#,1
mulx krt
rdax temp,1
rda dap2a#,kap
wrap dap2a,-kap
rda dap2b#,kap
wrap dap2b,-kap
wra del2,0

;now mix the inputs with the reverb:

;rdax adcl,-1
rda del1,1.9
mulx pot_reverb    ;kmix?
;rdax adcl,1
wrax rmixl,0

;rdax adcr,-1
rda del2,1.9
mulx pot_reverb
;rdax adcr,1
wrax rmixr,0

;chorus

rdax  rmixr,0.5
rdax  rmixl,0.5
;rdax adcl,1
wra chodel,0

;rdax pot_chorus,1
;mulx pot_chorus
sof 0,0.8
sof 0.02,0.01 ;approx. 1Hz to 3 Hz
wrax sin1_rate,0 ;load sin1 rate register

cho rda,sin1,sin|reg|compc,chodel+1400
cho rda,sin1,sin,chodel+1401

cho rda,sin1,cos|reg|compc,chodel+1200
cho rda,sin1,cos,chodel+1201

cho rda,sin1,sin|reg|compa,chodel+1600
cho rda,sin1,sin|compc|compa,chodel+1601

cho rda,sin1,cos|reg|compa,chodel+900
cho rda,sin1,cos|compc|compa,chodel+901

mulx pot_chorus
sof  0.5,0
rda     chodel,0.5
wrax choout,0

;Reverb outputs are at rmixl and rmixr.

rdax    adcl,-1 ;dry mix crossfade
rdax    choout,0.8
mulx    pot_mix
rdax    adcl,1
wrax dacl,0


A version with octaves:


;disco mixer program
;pot_reverb = infinite reverb
;pot_pitch = pitch to zero
;pot_filter = 4 pole low pass filter

equ pot_reverb pot2
equ pot_chorus pot1
equ pot_mix pot0

equ krt reg0
equ kin reg1
equ kmix reg2
;equ lpal reg4
;equ lpbl reg5
;equ lpar reg6
;equ lpbr reg7
;equ stop reg8
;equ pbyp reg9
;equ pol reg10
;equ por reg11
;equ kfl reg12
equ temp reg13
equ rmixl reg14
equ rmixr reg15
;equ lbyp reg16
equ  choout  reg17



mem ap1 502
mem ap2 821

mem dap1a 2204
mem dap1b 2701
mem del1 4456
mem dap2a 2532
mem dap2b 2201
mem del2 6325

mem chodel 5000

delayd mem 4096 ; Down delay
temp2 mem 1 ; Temp location for partial calculations
equ pot_down pot1
equ pot_up pot1
equ oct_up reg20
equ oct_down reg21

;mem pdelr 4096
;mem pdell 4096
;mem dtemp 1

equ kap 0.6
;equ kql -0.2

skp run,endclr

wlds sin1,0,800
endclr:

skp run,START
wldr RMP0,16384,4096
wldr RMP1,-8192,4096
sof 0, 0.5
;wrax pot_up,1
;wrax pot_down,0
;wrax pot_mix,1
;wrax pot_chorus,0 ;0.5 chorus

START:

;prepare pots to affect control variables:
;pot_reverb controls reverb time, but also affects input drive level;
;reveb time is moderate up to about mid position, then increases
;to infinity (or nearly) at full position.
;input drive is constant, but decreases at the full pot_reverb position.
;output mix is varied over the first half of pot_reverb, then remains
;high to the end of pot_reverb's range.

rdax pot_reverb,1.999 ;get pot_reverb, clip the upper half of pot_reverb's range.
wrax kmix,0 ;write the output mix value

rdax pot_reverb,-1 ;get pot_reverb again, 0 to -1
sof 1,0.999 ;now +1 to 0
sof 1.999,0 ;now +1 until midpint, then decreases to 0
wrax kin,0 ;write the input attenuator value

rdax pot_reverb,1 ;get pot_reverb again
wrax krt,1 ;save in krt, keep in ACC
sof 1,-0.5 ;subtract 1/2
skp gez,2 ;skp if pot is in upper half of range
sof 0,0.5 ;load accumulator with +0.5
wrax krt,0 ;overwrite if pot is in lower half of range


;now do reverb, simple, twin loop, mono drive:

rdax adcl,0.5
;rdax adcr,0.25 ;get inputs, leave headroom
mulx kin ;scale by input attenuator
rda ap1#,kap ;4 all passes:
wrap ap1,-kap
rda ap2#,kap
wrap ap2,-kap
wrax temp,0 ;write ap output to temp reg

rda del2#,1
mulx krt
rdax temp,1
rda dap1a#,kap
wrap dap1a,-kap
rda dap1b#,kap
wrap dap1b,-kap
wra del1,0
rda del1#,1
mulx krt
rdax temp,1
rda dap2a#,kap
wrap dap2a,-kap
rda dap2b#,kap
wrap dap2b,-kap
wra del2,0

;now mix the inputs with the reverb:

;rdax adcl,-1
rda del1,1.9
mulx pot_reverb    ;kmix?
;rdax adcl,1
wrax rmixl,0

;rdax adcr,-1
rda del2,1.9
mulx pot_reverb
;rdax adcr,1
wrax rmixr,0

;chorus

rdax  rmixr,0.5
rdax  rmixl,0.5
;rdax adcl,1
wra chodel,0

;rdax pot_chorus,1
;mulx pot_chorus
sof 0,0.8
sof 0.02,0.01 ;approx. 1Hz to 3 Hz
wrax sin1_rate,0 ;load sin1 rate register

cho rda,sin1,sin|reg|compc,chodel+1400
cho rda,sin1,sin,chodel+1401

cho rda,sin1,cos|reg|compc,chodel+1200
cho rda,sin1,cos,chodel+1201

cho rda,sin1,sin|reg|compa,chodel+1600
cho rda,sin1,sin|compc|compa,chodel+1601

cho rda,sin1,cos|reg|compa,chodel+900
cho rda,sin1,cos|compc|compa,chodel+901

mulx pot_chorus
sof  0.25,0
rda     chodel,0.5
wrax choout,0


;Pot0 = Octave up level
;Pot1 = Guitar level
;Pot2 = Octave down level





ldax choout
;ldax oct_in
; Write it to left delay and clear ACC
wra delayd,0

cho rda,RMP0,REG|COMPC,delayd
cho rda,RMP0,,delayd+1
wra temp2,0
cho rda,RMP0,RPTR2|COMPC,delayd
cho rda,RMP0,RPTR2,delayd+1
cho sof,RMP0,NA|COMPC,0
cho rda,RMP0,NA,temp2
mulx pot_up
wrax oct_up,0

cho rda,RMP1,REG|COMPC,delayd
cho rda,RMP1,,delayd+1
wra temp2,0
cho rda,RMP1,RPTR2|COMPC,delayd
cho rda,RMP1,RPTR2,delayd+1
cho sof,RMP1,NA|COMPC,0
cho rda,RMP1,NA,temp2
MULX pot_down
wrax oct_down,1
rdax oct_up,0.25
rdax choout,0.75
wrax choout,0

;Reverb outputs are at rmixl and rmixr.

rdax    adcl,-1 ;dry mix crossfade
rdax    choout,0.8
mulx    pot_mix
rdax    adcl,1
wrax dacl,0



I didn't do any heavy optimization, so probably they could be shrunk a little bit more.

potul


KarenColumbo

Thanks guys!! This is enormous help!!
Now I'll try to make the reverb a bit denser. I know it's "just" a FV-1, but there's always the first word of Toto's "Anna" - what great engineering, the way the whole word seems to float in space :) https://www.youtube.com/watch?v=S3JAGllqpvc&ab_channel=GabrielAlejandroVargas It's a lot of delay there, but it's magic to my ears.

  • SUPPORTER
I see something of myself in everyone / Just at this moment of the world / As snow gathers like bolts of lace / Waltzing on a ballroom girl" - Joni Mitchell - "Hejira"