Use RMPA with Multiple Delay Lines?

Software questions and issues with the FV-1

Moderator: frank

Post Reply
HammerheadAudio
Posts: 11
Joined: Wed Apr 14, 2021 3:19 pm

Use RMPA with Multiple Delay Lines?

Post by HammerheadAudio »

Hi I am writing a reverb program wherein I would like to be able to change the length of multiple delays to change the room size of the effect.

I am wondering how to use the rmpa opcode to index multiple delay lines. It seems like it's set up to do one big block of delay memory, and isn't good for applications where multiple blocks are allocated.

How do I get rmpa to index just through a specific delay line? What's the best way to load the start address and index through the length?
Sweetalk
Posts: 141
Joined: Thu Oct 15, 2009 5:13 am

Re: Use RMPA with Multiple Delay Lines?

Post by Sweetalk »

RMPA maps the entire memory block, if you want to take from different memory blocks you have to manually set the address from each block like this:

Code: Select all

; DELAY1
CLR						; Clear ACC
OR	DelayMem*256			; Align memory base address on the acc [23:8]
WRAX	DelayBase,	0	; Save

OR	DelayLength*256		; Load the delay length aligned in the acc
MULX	POT0			; Multiply by POT0 to make it variable
RDAX	DelayBase,	1	; Add base memory address.

WRAX	ADDR_PTR,	0	; Write to the adress pointer

LDAX	ADCL			; Read ADCL
WRA	DelayMem,	0		; Write to DelayMem
RMPA	1				; Read from address pointer
WRAX	Delay1,		0	; Save the delayed signal in Delay1

DelayMem is the delay block you assigned
DelayBase is an auxiliary register that holds the base address of the block (aligned with the acc)
DelayLenght is an equate with the delay block size
Delay1 holds the delayed signal

You have to repeat that block for each different memory block you like to access, you can change the delay with different pots o registers (change the MULX POT0 for that).

Hope that helps
Post Reply