Reverse delay?
Moderator: frank
-
- Posts: 34
- Joined: Thu Nov 09, 2006 6:58 am
- Contact:
Reverse delay?
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
Thanks,
Matt Farrow
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.
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
Experimental Noize
-
- Posts: 34
- Joined: Thu Nov 09, 2006 6:58 am
- Contact:
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
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
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
Experimental Noize
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
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
Experimental Noize
-
- Posts: 74
- Joined: Mon Sep 11, 2006 10:04 pm
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
Experimental Noize
How exactly would this be done? I tried this but it doesn't seem to work: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.
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
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
Experimental Noize
Reverse echo?
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]
Also is there any way to set delay tempo with this code? [/quote]
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.
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
Experimental Noize
Reverse delay?
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
Im looking for something like this:
http://m.youtube.com/watch?v=fCWECmTX9dE
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
Experimental Noize
Reverse delay?
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
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
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
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.
Code: Select all
sof 0, -0.25
wrax rmp0_rate,0
I have not tried this so it is an experiment.
Frank Thomson
Experimental Noize
Experimental Noize