Page 1 of 4

Reverse delay?

Posted: Mon Nov 13, 2006 4:52 pm
by pharaohamps
Hi, just got my FV-1 dev board and it's pretty neat. I notice we can read the delay from the beginning, the midpoint, the end, or from an address pointer. Is there any way to read the samples out in reverse order, for reverse reverb or delay?

Thanks,
Matt Farrow

Posted: Mon Nov 13, 2006 7:54 pm
by frank
Hmmmm, not sure how to handle this in the FV-1. You could try using a counter and RMPA to read samples out in reverse but you will run off the end of the delay quickly and you will only get short burts of reverse audio I think.

The FV-1 uses a down counter that is added to the address in instructions like RDA and WRA, counter is decremented once at the start of each sample period. So you might try using a counter that is incremented by 2 each period.

Posted: Tue Nov 14, 2006 6:03 am
by pharaohamps
Frank, all of the commerically available reverse delay boxes I've used only put out short bursts of audio. If I could get 500ms of reverse delay I'd be happy...

I understand that the pitch shift algo uses RMPA to slide the read pointer along the delay at the "wrong" speed, to read samples out either faster or slower than they were written in. How would you use it to read the ram backwards?

And can I make a suggestion for your next product? How about a general-purpose I/O pin or two? Tap tempo would have been a real nice feature for the FV-1.

Thanks,
Matt Farrow

Posted: Tue Nov 14, 2006 10:53 am
by frank
You could try using a ramp and a CHO RDAL to read it into the accumulator and use it as the counter, will try to get a chance to try this later today.

Posted: Tue Nov 14, 2006 3:46 pm
by frank
Was thinking about it and I *think* that if you set the coefficient to the ramp in a pitch shift to less than -16384 (not allowed by the assembler however) the pointer would start to move backwards.

Have not tried this but using the pitch transpose code and making the POT only go negative may demonstrate this. Would be very short delay.

Try doing this to the POT code at the end (replace existing POT code):

rdax pot0,-1.0
rdfx potfil,0.02
wrax potfil,1.0
wrax rmp0_rate,0

Posted: Sat Nov 17, 2007 3:33 pm
by seancostello
Can the assembler be altered to allow amplitude coefficients less than -16384 for the ramp LFOs? This would be a neat feature.

Sean Costello

Posted: Tue Nov 27, 2007 10:08 am
by frank
I doubt they will make that change to the assembler any time soon but you can calculate a negative number and put it in the accumulator then write it to the control register.

Posted: Thu Nov 29, 2007 12:31 pm
by shahin
frank wrote:The FV-1 uses a down counter that is added to the address in instructions like RDA and WRA, counter is decremented once at the start of each sample period. So you might try using a counter that is incremented by 2 each period.
How exactly would this be done? I tried this but it doesn't seem to work:

mem delay 32000

equ pointer reg0

skp run, loop
sof 0, 0
wrax pointer, 0 ;clear pointer to start of delay line
loop:

rdax adcl, 1.0
wra delay, 0.0
or 0x000200 ;add two to adress being pointed to
rdax pointer, 1.0
wrax pointer, 1.0 ;save accumulated value
wrax addr_ptr, 0.0 ;

or 0x7D0100 ;load in 32001 to check for overflow
sof -1.0, 0.0
rdax addr_ptr, 1.0 ;subtract 32001 from address
skp NEG, okay ;if greater or equal to zero, we've hit
;end of line
sof 0, 0
wrax pointer, 1.0 ;reset pointer
wrax addr_ptr, 0.0
okay:
sof 0, 0
rmpa 1.0
wrax dacr, 1.0
wrax dacl, 0.0

Posted: Tue Dec 04, 2007 3:26 pm
by frank
Not sure if this is what you are looking for but give the following a try:

Code: Select all

mem delay 32767

skp run, loop
sof 0, -0.25
wrax rmp0_rate,0
wrax rmp0_range, 0 
loop:

sof 0,0
rdax adcl, 1.0
wra delay, 0.0 

cho rdal, rmp0
wrax addr_ptr, 0
rmpa 1.0
wrax dacr, 1.0
wrax dacl, 0.0

Reverse echo?

Posted: Thu Apr 11, 2013 5:07 pm
by Mcfly
Hi, I would like to know if there 's any way to get rid of the noise when reading the delayed signal backwards. It sounds like the delayed signal was cut off abruptly.
Also is there any way to set delay tempo with this code? [/quote]

Posted: Fri Apr 12, 2013 9:34 am
by frank
Not really, you are playing a short period of sound backwards in real time so it will cut off.

By tempo I assume you mean to play the backwards piece faster or slower than recorded. You could try but I think it will sound worse. To do good backwards sounds you really need to record the entire song then manipulate the recording on a computer.

Reverse delay?

Posted: Fri Apr 12, 2013 12:10 pm
by Mcfly
What if i record my signal with a fade in to the delay mem. Since it will be played backwards the glitch at the end will be less audible.

Im looking for something like this:

http://m.youtube.com/watch?v=fCWECmTX9dE

Posted: Fri Apr 12, 2013 1:52 pm
by frank
The FV-1 wasn't really designed to do backwards so all I can suggest is trying different ideas and see what happens. You could try generating cross fade coefficients from the ramp to try to hide the glitch.

Reverse delay?

Posted: Fri Apr 26, 2013 6:04 am
by Mcfly
Hi, I've been reading the AN-001 and tried to understand the use of the ramp and crossfade coefficients but I couldn't apply it to the reverse echo.

A couple of questions:

*Do I need to interpolate the ramp?

*How do i make a crossfade coefficient to hide the glitch?

Is this function something to do with it: cho sof,RMP0,NA|COMPC,0

Posted: Sat Apr 27, 2013 12:57 pm
by frank
Since the FV-1 wasn't intended to do this it is really a hack. Try to code it just like a pitch shift but use the

Code: Select all

sof 0, -0.25
wrax rmp0_rate,0 
in an initialization block to set the negative coefficient properly, set range to the desired range.

I have not tried this so it is an experiment.