Spin Semiconductor Forum Index Spin Semiconductor
Support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Frank's delay time pot smoothing technique

 
Post new topic   Reply to topic    Spin Semiconductor Forum Index -> Algorithm development
View previous topic :: View next topic  
Author Message
Aaron



Joined: 04 Mar 2015
Posts: 42

PostPosted: Wed May 06, 2015 2:43 pm    Post subject: Frank's delay time pot smoothing technique Reply with quote

So I know there have been many discussions on this forum on ways to rid zipper noise on a pot when changing the delay time. I have found that a piece of code that Frank worked up seems to do a pretty acceptable job. However, I have noticed upon start up that it sounds as if the delay time is being ramped up regardless of where the actual pot is. I was curious if anyone knows of a way to get around this.

Code:

rdax   pot1,1      ;load pot1
and   %01111111_00000000_00000000   ;don't make jumps too small
sof   61/64,3/64            ;50 ms to 1 second
rdfx pot1fil,0.015      ;filter pot1 ~ 80Hz
wrax pot1fil,0      ;save to pot1fil, clear ACC
or length*256      ;delay length into ACC aligned to ACC[22:8]
mulx pot1fil      ;multiply by filtered pot1
rdfx delread,smooth   ;add delread scaled by smooth
wrax delread,1      ;save to delread, pass on
wrax   addr_ptr,0      ;write to address pointer, clear ACC
Back to top
View user's profile Send private message
frank



Joined: 19 Oct 2005
Posts: 969

PostPosted: Wed May 06, 2015 3:03 pm    Post subject: Reply with quote

Off the top of my head I would try initializing potfil to the pot value at start up.
_________________
Frank Thomson
Experimental Noize
Back to top
View user's profile Send private message Visit poster's website
Aaron



Joined: 04 Mar 2015
Posts: 42

PostPosted: Thu May 07, 2015 6:59 am    Post subject: Reply with quote

I tried initializing pot1fil to pot1's value at start up with no luck. Initializing the address pointer yielded the same results as did clearing the delay mem on start up.
Back to top
View user's profile Send private message
frank



Joined: 19 Oct 2005
Posts: 969

PostPosted: Thu May 07, 2015 2:08 pm    Post subject: Reply with quote

Hmmm, I thought setting pot1fil would work. Can you post or email me your code?
_________________
Frank Thomson
Experimental Noize
Back to top
View user's profile Send private message Visit poster's website
Aaron



Joined: 04 Mar 2015
Posts: 42

PostPosted: Fri May 08, 2015 9:11 am    Post subject: Reply with quote

Code:

skp   run,START
wlds   sin0,100,818
ldax   pot1
wrax   pot1fil,0
or   length*256
mulx   pot1fil
wrax   delread,0


Initializing pot1fil and delread on startup helps to rid the ramping on longer delay times. There is still some ramping that takes place with shorter delay times but is definitely more acceptable.
Thank you for the solution, Frank!
Back to top
View user's profile Send private message
Aaron



Joined: 04 Mar 2015
Posts: 42

PostPosted: Mon May 11, 2015 12:03 pm    Post subject: Reply with quote

Okay, so after spending a bit more time with this code I've come to realize that the issue was being caused by extreme low pass filter (smooth) coefficient values that I was using on delread.
I had my smooth coefficient value set at 0.000125 which is roughly .7Hz. I have found that about the lowest I can go without getting ramping, or at least very minimal ramping, seems to be at around 0.0015 which is roughly 7.5Hz.
The pot isn't quite as "analog" as I would like it to be using these values. There is still the clicking when jumping to the next value with some pitch bending, but it is ultimately absent of the zipper noise. I feel that this is probably about the best one could hope for without using an oscillator for clock time.
Back to top
View user's profile Send private message
Sandrine



Joined: 12 Mar 2015
Posts: 16
Location: BC Canada

PostPosted: Mon Jun 08, 2015 9:48 am    Post subject: Reply with quote

Why not just mute the DACs after startup, then skip after the LPF has stabilized? I've done that with other audio designs, simple, effective
_________________
Is there a latin word for "Stage Fright"?
Back to top
View user's profile Send private message Visit poster's website
Sweetalk



Joined: 15 Oct 2009
Posts: 95

PostPosted: Wed Aug 03, 2016 6:10 am    Post subject: Reply with quote

Do you guys experiment a high pitch whining with the ramping using this code?, I can't get rid of that!.
Back to top
View user's profile Send private message
seancostello



Joined: 11 Sep 2006
Posts: 74

PostPosted: Thu Aug 11, 2016 9:43 pm    Post subject: Reply with quote

Sweetalk wrote:
Do you guys experiment a high pitch whining with the ramping using this code?, I can't get rid of that!.


The whining noise is due to the lack of interpolation when changing the delay length. The delay length change is being smoothed out, but it is still quantized to integer sample delays.

Sean Costello
Back to top
View user's profile Send private message
Sweetalk



Joined: 15 Oct 2009
Posts: 95

PostPosted: Fri Aug 12, 2016 6:37 am    Post subject: Reply with quote

seancostello wrote:
Sweetalk wrote:
Do you guys experiment a high pitch whining with the ramping using this code?, I can't get rid of that!.


The whining noise is due to the lack of interpolation when changing the delay length. The delay length change is being smoothed out, but it is still quantized to integer sample delays.

Sean Costello


OK!, seems logical, thaks!
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Spin Semiconductor Forum Index -> Algorithm development All times are GMT - 8 Hours
Page 1 of 1

 
Jump to:  
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