 |
Spin Semiconductor Support forum
|
| View previous topic :: View next topic |
| Author |
Message |
livingston
Joined: 15 Nov 2009 Posts: 108 Location: New Orleans, LA US
|
Posted: Fri Mar 12, 2010 2:39 pm Post subject: |
|
|
Ha, wow this thing is fun. I popped a 4-pole filter before the delay and another one after it, and added feedback to get some repeats happening. The unfiltered sounds are nasty in a cool way, I think.
To implement:
-variable delay time
-stomp switch that starts recording, then on the second tap, it ends the recording and starts playing it back.
I'll post the code as I add features. |
|
| Back to top |
|
 |
livingston
Joined: 15 Nov 2009 Posts: 108 Location: New Orleans, LA US
|
Posted: Sat Mar 13, 2010 1:42 pm Post subject: |
|
|
So here's my code as of right now. It's just Don's code with 4-pole filters before and after the delay, with variable feedback from the output of the delay to the input of the delay. At first I tried feedback from the output of the post-delay filter, thinking it would be better to filter the signal each pass to avoid ever-increasing aliasing, but doing it this way killed too much of the feedback; at max feedback the repeats died after about 2 regenerations.
The filters, both pre- and post-delay, are controlled by a single pot. I may use that same pot to raise the gain a little when the filter cutoff is set to lower frequencies, to make up for the loss of volume with the filtering.
| Code: | ; This example code delays an input by eight seconds.
; It inteleaves the signal 8 ways in a single max sized delay
; POT2 controls the filters
; POT0 controls feedback level
equ input reg0
equ loop reg1
equ temp reg2
equ output reg4
equ lp_filt reg5
equ lp_filt2 reg6
equ lp_filt3 reg7
equ lp_filt4 reg8
mem delay 32767
skp run,start
clr
wrax lp_filt,0
start:
; Get input, filter it to avoid aliasing (not shown)
rdax adcr, 1
rdax lp_filt,-1.0 ; ADCL - lp_filt
mulx pot2 ; * C (POT0 in this case)
rdax lp_filt,1.0 ; +lp_filt
wrax lp_filt,1.0 ; write result to lp_filt
rdax lp_filt2,-1.0 ; ADCL - lp_filt
mulx pot2 ; * C (POT0 in this case)
rdax lp_filt2,1.0 ; +lp_filt
wrax lp_filt2,1.0 ; write result to lp_filt
rdax lp_filt3,-1.0 ; ADCL - lp_filt
mulx pot2 ; * C (POT0 in this case)
rdax lp_filt3,1.0 ; +lp_filt
wrax lp_filt3,1.0 ; write result to lp_filt
rdax lp_filt4,-1.0 ; ADCL - lp_filt
mulx pot2 ; * C (POT0 in this case)
rdax lp_filt4,1.0 ; +lp_filt
wrax lp_filt4,1.0 ; write result to lp_filt
wrax input, 0
; IF loop counter variable is 0, THEN read an input sample and put it in the temp variable.
rdax loop, -1
skp neg, NotZro
rdax output,1
mulx pot0
rdax input,1
wrax temp, 0
NotZro:
; Put the temp variable in the head-end of the delay.
ldax temp
wra delay, 0
; Get a delayed sample out of the tail end of the delay, put it in the temp variable.
rda delay+32767, 1
wrax temp, 0
; Add 0.1 to the loop counter.
ldax loop
sof 1, 0.1
wrax loop, 1
; IF loop counter is > 0.8, THEN write the temp variable to the output, and reset loop variable to 0
sof 1, -0.8
skp neg, Done
ldax temp
wrax output, 0
wrax loop, 0
Done:
ldax output
rdax lp_filt,-1.0 ; ADCL - lp_filt
mulx pot2 ; * C (POT0 in this case)
rdax lp_filt,1.0 ; +lp_filt
wrax lp_filt,1.0 ; write result to lp_filt
rdax lp_filt2,-1.0 ; ADCL - lp_filt
mulx pot2 ; * C (POT0 in this case)
rdax lp_filt2,1.0 ; +lp_filt
wrax lp_filt2,1.0 ; write result to lp_filt
rdax lp_filt3,-1.0 ; ADCL - lp_filt
mulx pot2 ; * C (POT0 in this case)
rdax lp_filt3,1.0 ; +lp_filt
wrax lp_filt3,1.0 ; write result to lp_filt
rdax lp_filt4,-1.0 ; ADCL - lp_filt
mulx pot2 ; * C (POT0 in this case)
rdax lp_filt4,1.0 ; +lp_filt
wrax lp_filt4,1.0 ; write result to lp_filt
rdax adcr,.5
wrax dacr, 0 |
It's a very fun looper, in my opinion. It won't give a Boomerang or Echoplex Digital a run for its money, but for the adventurous it's a fun device.
Still to implement:
-variable delay time
-stomp switch that starts recording, then on the second tap, it ends the recording and starts playing it back.
- selectable sampling rate |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|