I try to do interpolated delay reads from two delay blocks. But reading from the second block is not one sample delayed as it should be, thus interpolation can not be done for that block.
Here is the test code:
Left channels is properly 1 sample delayed, but right channels is not, the linemem left 5000
mem right 5000
equ time reg1
sof 0,0.01
wrax time, 0 ; Save it
rdax adcl,0.5
wra left,0
rdax adcr,0.5
wra right,0
;get second value:
or left * 256
or %00000000_00000001_00000000 ;add 1 to address
rdax time, 1.0 ;get pointer back and add
wrax addr_ptr,0 ;load pointer again
rmpa 1
wrax dacl,0
;get second value:
or right * 256
or %00000000_00000001_00000000 ;add 1 to address
rdax time, 1.0 ;get pointer back and add
wrax addr_ptr,0 ;load pointer again
rmpa 1
wrax dacr,0
“or %00000000_00000001_00000000”
does nothing for this channel.
If memory declaration will be in other order
mem right 5000
mem left 5000
instead of
mem left 5000
mem right 5000
that one sample error will be in another channel.