Reverse delay?

Software questions and issues with the FV-1

Moderator: frank

pharaohamps
Posts: 34
Joined: Thu Nov 09, 2006 6:58 am
Contact:

Reverse delay?

Post 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
frank
Posts: 1244
Joined: Wed Oct 19, 2005 12:26 pm
Contact:

Post 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.
Frank Thomson
Experimental Noize
pharaohamps
Posts: 34
Joined: Thu Nov 09, 2006 6:58 am
Contact:

Post 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
frank
Posts: 1244
Joined: Wed Oct 19, 2005 12:26 pm
Contact:

Post 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.
Frank Thomson
Experimental Noize
frank
Posts: 1244
Joined: Wed Oct 19, 2005 12:26 pm
Contact:

Post 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
Frank Thomson
Experimental Noize
seancostello
Posts: 74
Joined: Mon Sep 11, 2006 10:04 pm

Post 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
frank
Posts: 1244
Joined: Wed Oct 19, 2005 12:26 pm
Contact:

Post 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.
Frank Thomson
Experimental Noize
shahin
Posts: 13
Joined: Tue Sep 18, 2007 11:07 am

Post 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
frank
Posts: 1244
Joined: Wed Oct 19, 2005 12:26 pm
Contact:

Post 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
Frank Thomson
Experimental Noize
Mcfly
Posts: 46
Joined: Fri Mar 08, 2013 2:38 pm
Location: Argentina

Reverse echo?

Post 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]
frank
Posts: 1244
Joined: Wed Oct 19, 2005 12:26 pm
Contact:

Post 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.
Frank Thomson
Experimental Noize
Mcfly
Posts: 46
Joined: Fri Mar 08, 2013 2:38 pm
Location: Argentina

Reverse delay?

Post 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
frank
Posts: 1244
Joined: Wed Oct 19, 2005 12:26 pm
Contact:

Post 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.
Frank Thomson
Experimental Noize
Mcfly
Posts: 46
Joined: Fri Mar 08, 2013 2:38 pm
Location: Argentina

Reverse delay?

Post 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
frank
Posts: 1244
Joined: Wed Oct 19, 2005 12:26 pm
Contact:

Post 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.
Frank Thomson
Experimental Noize
Post Reply