Page 1 of 1

Adding 1 to Address Pointer

Posted: Wed Oct 25, 2017 6:22 am
by Admiral_dk
I've written a new delay program that has multiple address pointer rutines depending on user input and it all works nicely except for "zipper noise" and I can see that this is solved by using the value @ [address] + value @ [address +1] - fine, but I can't easily figure how to add 1 to the pointer ....

Part of program :

OR $7FFF00 ; Set max
MULX DelayLength
SOF 0.984375 , 0.015625 ; Delay time (Pointer)24-975mS.
RDAX Modulation , 1 ; Add modulation to pointer 0-8mS.
WRAX ADDR_PTR , 1 ; write to delay address pointer
WRAX OldPointerL , 1 ; Save to next time
---- a few other things here, before ----
RMPA 0.5 ; And ADD Value from New delay address set by pointer


So how do I add one to OldPointerL ...?

I can see that many modulations are done in separate memory using the CHO instruction, but I hope this can be avoided as it read the LFO directly + a fixed offset ....

Any help will be appreciated - thanks in advance :-)

Posted: Wed Oct 25, 2017 8:34 am
by Admiral_dk
I thought of a possibility :

OR $7FFF00 ; Set max
MULX DelayLength
SOF 0.984375 , 0.015625 ; Delay time (Pointer)24-975mS.
RDAX Modulation , 1 ; Add modulation to pointer 0-8mS.
WRAX ADDR_PTR , 1 ; write to delay address pointer
WRAX OldPointerL , 1 ; Save to next time
---- a few other things here, before - ACC = 0 ---
RMPA 0.5 ; And ADD Value from New delay address set by pointer

WRAX DelayL , 0

OR $000100 ; Load 1 into ACC
RDAX ADDR_PTR , 1 ; Add them
WRAX ADDR_PTR , 0 ; And write Address +1 back to Pointer

LDAX DelayL ; Read back Previous Value
RMPA 0.5 ; And ADD Value from Next delay address
WRAX DACL , 0

I haven't tested yet - got another appointment now ....

Posted: Wed Oct 25, 2017 10:34 am
by frank
Something like that should work. You can also try smoothing the modulation source or taking it further and interpolating between samples.

Posted: Fri Oct 27, 2017 5:31 am
by Admiral_dk
OK - this solved the "zipper noise" from modulation.

This unfortunately uncovered another problem, that I better start another thread about.