Shimmer

Algorithm development and general DSP issues

Moderator: frank

ronaldb
Posts: 19
Joined: Thu Dec 03, 2009 7:49 am

Post by ronaldb »

Looks cool, I will try this tommorow when i have my practice night.
I like the way you smooth out the harsh top end off the pitch.

RonaldB
Sweetalk
Posts: 141
Joined: Thu Oct 15, 2009 5:13 am

Post by Sweetalk »

There is a few errors on the code:

In the register declarations must say:

Code: Select all

equ   revout  reg1
The LPFF and LPFSH must be 0.3 and -0.5, I putted 0,3 and -0,5

And on the mixer stage must say:

Code: Select all

wrax   pitchout, 1
mulx pot1
rdax adcl, 1
wrax revin, 0
I mulx with pot2 instead... my bad!!.

The shimmer is sounding and it's pretty good, I'd like to bring the octave a little bit on front, it's a lot of reverb and on the tails de shimmer. That's ok, but it's a little too on the tails. Perhaps boosting the signal entering the pitchshifting stage?.
ronaldb
Posts: 19
Joined: Thu Dec 03, 2009 7:49 am

Post by ronaldb »

Sorry but i haven' t got time to test the code, but as soon as i will i will post results.

RonaldB
Aion
Posts: 33
Joined: Sat Mar 22, 2008 1:17 am

Post by Aion »

In my opinion the shimmer sounds very good. I put some low pass filtering at the output. Its corner frequency and an other reverb parameter are changed with a MIDI foot pedal. Very useful effect for bands without a keyboard.
dellamorte
Posts: 10
Joined: Wed May 04, 2011 4:43 am

Post by dellamorte »

any updates on this ? i have tried the above code with corrections and get no output
Sweetalk
Posts: 141
Joined: Thu Oct 15, 2009 5:13 am

Post by Sweetalk »

dellamorte wrote:any updates on this ? i have tried the above code with corrections and get no output
I have it running, there are some typos on the coding, correcting that typos and the ones I posted earlier got it sounding great.
dellamorte
Posts: 10
Joined: Wed May 04, 2011 4:43 am

Post by dellamorte »

here is what i have so far
still have no sound tho

Code: Select all

; Hall reverb w/shimmer 
; Jan 2012 
; 
; 
; Mono input, Stereo output 
; POT0: Damping 
; POT1: Feedback 
; POT2: Decay 
; 
; by Sweetalk 



;MEMORY 
mem   delayl   4096      ; Pitch Shift mem 
mem   temp1   1       

mem   iap1   156      ; Reverb mem declarations 
mem   iap2   223 
mem   iap3   332 
mem   iap4   448 

mem   ap1   1251 
mem   ap1b   1751 
mem   ap2   1443 
mem   ap2b   1343 
mem   ap3   1582 
mem   ap3b   1981 
mem   ap4   1274 
mem   ap4b   1382 

mem   del1   3559 
mem   del2   2945 
mem   del3   3976 
mem   del4   4445 


;REGISTERS 
equ   revin      reg0      ;Reverb In 
equ   revout      reg1      ;Reverb Out 
equ   pitchout   reg2      ;Pitch Shift Out. (really it's Reverb->Pitch out)    
equ   LPF      reg3      ;LPF reg 

equ   temp   reg4      ;Temp register 
equ   hpf1   reg5      ;High pass filters for reverb registers 
equ   hpf2   reg6 
equ   hpf3   reg7 
equ   hpf4   reg8 
equ   lpf1   reg9      ;Low pass filters for reverb registers 
equ   lpf2   reg10 
equ   lpf3   reg11 
equ   lpf4   reg12 
equ   rt   reg13      ;Reverb Time register 
equ   iapout   reg14       


;CONSTANTS 
equ   LPFF   0.3      ;LPF coefficent for LPF after pitch shifting 
equ   LPFSH   -0.5      ;Shelving coefficent for LPF -6dB. 
equ   kfh   0.01 
equ   kfl   0.4 
equ   kiap   0.5 
equ   klap   0.6 


;PITCH SHIFTER RAMP0 INIT 
skp   run,   START 
wldr   0,   16384,   4096   ;Init RAMP0 for +1 octave pitch shifting 

;Prepare POT2 for Decay 

rdax   pot2,1 
sof   0.65,0.3   ;Scale by 0.65 and add 0.3 
wrax   rt,0            ;rt ranges 0.3 to 0.95 

START: 

;REVERB 
rdax   revin,   1   ;Read reverb in 
sof   0.25,   0   ;    
rda   iap1#,   kiap    
wrap   iap1,   -kiap      
rda   iap2#,   kiap    
wrap   iap2,   -kiap      
rda   iap3#,   kiap    
wrap   iap3,   -kiap      
rda   iap4#,   kiap    
wrap   iap4,   -kiap      
wrax   iapout,   0   ;write to register for ring injection 

;now do reverb ring, use temp as reg for filtering: 

;aps into delay1: 

rda   del4#,   1   ;read previous delay    
mulx   rt      ;multiply by reverb time coefficient 
rdax   iapout,   1   ;read left input from input allpass filter bank 
rda   ap1#,   klap   ;do an allpass filter 
wrap   ap1,   -klap 
rda   ap1b#,   klap   ;do second all pass filter 
wrap   ap1b,   -klap    
wrax   temp,   1   ;write to temp, keep in acc 
rdfx   lpf1,   kfl   ;low pass filter 
wrlx   lpf1,   -1 
rdfx   hpf1,   kfh   ;high pass filter 
wrhx   hpf1,   -1 
rdax   temp,   -1 
mulx   pot0      ;crossfade between filter and no filter 
rdax   temp,   1 
wra   del1,   0   ;write to next delay, clear accumulator 

;aps into delay2: 

rda   del1#,   1      
mulx   rt 
rda   ap2#,   klap    
wrap   ap2,   -klap      
rda   ap2b#,   klap    
wrap   ap2b,   -klap      
wrax   temp,   1      
rdfx   lpf2,   kfl 
wrlx   lpf2,   -1 
rdfx   hpf2,   kfh 
wrhx   hpf2,   -1 
rdax   temp,   -1 
mulx   pot0 
rdax   temp,   1 
wra   del2,   0      

;aps into delay3: 

rda   del2#,   1      
mulx   rt 
rdax   iapout,   1      
rda   ap3#,   klap    
wrap   ap3,   -klap      
rda   ap3b#,   klap    
wrap   ap3b,   -klap      
wrax   temp,   1      
rdfx   lpf3,   kfl 
wrlx   lpf3,   -1 
rdfx   hpf3,   kfh 
wrhx   hpf3,   -1 
rdax   temp,   -1 
mulx   pot0 
rdax   temp,   1    
wra   del3,   0 

;aps into delay4: 

rda   del3#,   1.0      
mulx   rt 
rda   ap4#,   klap    
wrap   ap4,   -klap      
rda   ap4b#,   klap    
wrap   ap4b,   -klap      
wrax   temp,   1      
rdfx   lpf4,   kfl 
wrlx   lpf4,   -1 
rdfx   hpf4,   kfh 
wrhx   hpf4,   -1 
rdax   temp,   -1 
mulx   pot0 
rdax   temp,   1    
wra   del4,   0      

;take outputs as taps from reverb ring: 
rda   del1,      0.8 
rda   del2,      0.8 
rda   del3+2876,   1.5 
rda   del1+2093,   1.1          
rda   del4+1234,   1.1 
wrax   revout,      1   ;Write to revout register, keep in ACC for pitch shifting 


;PITCH SHIFT +1 OCTAVE 

cho   rda,   RMP0,   REG|COMPC,   delayl 
cho   rda,   RMP0,   ,   delayl+1 
wra   temp1,   0 
cho   rda,   RMP0,   RPTR2|COMPC,   delayl 
cho   rda,   RMP0,   RPTR2,   delayl+1 
cho   sof,   RMP0,   NA|COMPC,   0 
cho   rda,   RMP0,   NA,   temp1 

;LPF to smooth out a little of the high end 
rdfx   LPF,   LPFF      ;Freq coef 
wrhx   LPF,   LPFSH      ;Shelving coef. 

wrax   pitchout,   1   ;Write the pitch + reverb out on pitchout and keep it in acc. ACC = Pitch + Reverb 
mulx   pot1         ;Multily by Feedback pot (POT2). ACC = (Pitch + Reverb) * POT2 
rdax   adcl,   1      ;Read ADCL and add to ACC. ACC = ((Pitch + Reverb) * POT2) + Clean 
wrax   revin,   0      ;Write the mix from the ACC (feedback and clean signal) on the revin and clear the ACC. 

;Making mono output 
rdax   revout,   1      ;Read output from Reverb (revout) and write it to ACC. 
wrax   dacl,1         ;Write the ACC on DACL and keep it.    
wrax   dacr,0          ;Write the Acc on DACR and clear it. 

;set up lfo, 1Hz to 2Hz, +/-100 samples, for smearing loop all passes: 

skp   run,   2 
wlds   sin0,   30,   50 
wlds   sin1,   41,   50 

;smear 4 allpass filters in reverb ring: 

cho   rda,   sin0,   reg|compc,   ap1+50   ;sin0 
cho   rda,   sin0,   0,   ap1+51 
wra   ap1+100,   0 

cho   rda,   sin0,   cos|compc,   ap2+50   ;cos0 
cho   rda,   sin0,   cos,   ap2+51    
wra   ap2+100,   0 

cho   rda,   sin1,   reg|compc,   ap3+50   ;sin1 
cho   rda,   sin1,   0,   ap3+51 
wra   ap3+100,   0 

cho   rda,   sin1,   cos|compc,   ap4+50   ;cos1 
cho   rda,   sin1,   cos,   ap4+51    
wra   ap4+100,   0[code]
[/code]
Sweetalk
Posts: 141
Joined: Thu Oct 15, 2009 5:13 am

Post by Sweetalk »

Seems good to me, delete the low pass filter, it's useless really
dellamorte
Posts: 10
Joined: Wed May 04, 2011 4:43 am

Post by dellamorte »

got it working ( didnt realize it was mono and had my guitar plugged into the wrong input) Thanks!!
Sweetalk
Posts: 141
Joined: Thu Oct 15, 2009 5:13 am

Post by Sweetalk »

Sweetalk wrote:Well, I been working a little bit on the shimmer algorithm with a different approach than the one posted earlier.

I tooked the Hall reverb, eliminated the predelay section. The signal flow intents to be like this:


INPUT ---> + ---> REVERB -------> OUTPUT
| |
|<--- PITCH <----|

The adder on the front it's controled by POT2, allowing to adjust the amount of pitch shifted signal going back to the reverb.

I haven't tried yet but I'll be nice if you can take a look at this and see if it's OK. I'll be trying it tomorrow I hope (not at the office right now)
pharaohamps
Posts: 34
Joined: Thu Nov 09, 2006 6:58 am
Contact:

Post by pharaohamps »

I know this is an old thread, but I thought I'd chime in.

Code: Select all

PITCH SHIFTER RAMP0 INIT 
skp   run,   START 
wldr   0,   16384,   4096   ;Init RAMP0 for +1 octave pitch shifting 

;Prepare POT2 for Decay 

rdax   pot2,1 
sof   0.65,0.3   ;Scale by 0.65 and add 0.3 
wrax   rt,0            ;rt ranges 0.3 to 0.95 

START: 
Putting the read for POT2 in the LFO setup means that it only gets read once. Change it to this:

Code: Select all

PITCH SHIFTER RAMP0 INIT 
skp   run,   START 
wldr   0,   16384,   4096   ;Init RAMP0 for +1 octave pitch shifting 

START: 

;Prepare POT2 for Decay 

rdax   pot2,1 
sof   0.65,0.3   ;Scale by 0.65 and add 0.3 
wrax   rt,0            ;rt ranges 0.3 to 0.95 
if you want POT2 to do anything.

Also, if you change the pitch shifter delay to a shorter time you can have more DRAM left for the reverb. 2048 is fine, since the 'verb is pretty much mangling all the fine detail you'd normally get. It smooths out the warble, especially if you use the lowpass, too.
danielgiani
Posts: 7
Joined: Mon Dec 09, 2013 4:03 am

POT2 NOT WORKING

Post by danielgiani »

Hey Guys!

I have tested this program, and the shimmer is perfect! Very nice, warm and pleasant tone.

But I noticed that the POT2 (decay) is not working at all.
Do you guys have a clue?

Second point: what is the feedback control? why should be feedback in a reverb?

Cheers!
Hey Ho, Let's Go!
Digital Larry
Posts: 338
Joined: Mon Nov 12, 2012 1:12 pm
Contact:

Post by Digital Larry »

Check the post immediately before yours for a clue why POT2 doesn't do anything.
danielgiani
Posts: 7
Joined: Mon Dec 09, 2013 4:03 am

Post by danielgiani »

Digital Larry wrote:Check the post immediately before yours for a clue why POT2 doesn't do anything.
I tried to do this modification in the code Digital Larry! (putting "START:" before the POT2 definitions)
But did not succeed....

Im eating my fingernails, because this shimmer program is so beautiful! Its just a matter of enhancement in the POTS behavior.
Hey Ho, Let's Go!
ice-nine
Posts: 192
Joined: Thu May 24, 2012 9:03 am

Post by ice-nine »

danielgiani wrote:
Digital Larry wrote:Check the post immediately before yours for a clue why POT2 doesn't do anything.
I tried to do this modification in the code Digital Larry! (putting "START:" before the POT2 definitions)
But did not succeed....

Im eating my fingernails, because this shimmer program is so beautiful! Its just a matter of enhancement in the POTS behavior.
Have removed the other START command (after pot2) ?
Post Reply