| |
Conrad
Registered: Nov 2006 Posts: 849 |
Flangering effect with noise waveform
I've been testing with some flangering effects recently and have noticed a problem that noise waveform generators can't be reset in order to produce the exact same signals each time so that two voices produce the matching signals at slightly offset frequencies to produce the flanger effect appropriately.
The effect obviously works with triangle, saw and pulse since they are all clean signals, where noise is random signals but are not a constant set after a warm reset of the c64. I've been comparing this with the recent release of reSid floating point and Dag Lem's older and not exactly accurate reSid.
This obviously occurs due to analogue signals from the SID chip, but still, is there a way of resetting the noise waveform in a way that it will produce the same constant signals in order to prevent noise+flangering problems during music playing for example?
If you guys don't know what I'm on about, test some SIDs out that use flangering with noise waveforms (like Galaxy Bounce (Jammer)) and compare it playing with reSid-fp (or a real C64) and the old reSid version (that is used in GoatTracker still). |
|
| |
Mace
Registered: May 2002 Posts: 1799 |
Err... the thing is, noise is exactly that: noise.
It's random, you can't sync or match it.
You say so yourself.
And if it's random, you can't reset it.
Because it will just be different again. |
| |
Hein
Registered: Apr 2004 Posts: 954 |
I think you have to reset the clock. |
| |
WVL
Registered: Mar 2002 Posts: 902 |
IIRC, the noise isnt really noise at all, but some sort of fixed pattern being shifted all the time, so basically I think you CAN reset it.
Maybe I can find that info again somewhere? |
| |
Angel of Death
Registered: Apr 2008 Posts: 211 |
What I think you are talking about is, actually, called phasing. eg. Two similar waveforms next to eachother a little bit time-shifted, creating an effect through cancelling and enhancing of soundwaves.
The SID musician TRON experimented with it in the early days.
Here's his experiment in the HVSC:
MUSICIANS\T\Tron_Beekveld_Erwin\Hawaiian_Punch.sid
It was succesfull in a way. He found out that after a power-down of the SID chip its randomizer, which is based on mucking about with some timers, most probably didn't use enough mucking about. Sometimes, which could be shown on an oscilloscope, it generated exactly the same noisepattern a few times in a row.
Heck. Even the RND function in BASIC blurted out the same sequences with a small enough seed. (say about 1 to 50)
However. We haven't tested it thoroughly with ReSID emulation. (no idea if it works that way)
But with a HARDSID it works like a charm almost every time!
And perhaps it didn't work that way at all and maybe he was just lucky... :) |
| |
Ninja
Registered: Jan 2002 Posts: 411 |
Maybe this article can help you?
http://www.dekadence64.org/sidwav.txt
(It is based on this one) |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
the noise waveform is indeed generated by a rather predictable LFSR =) (read what ninja linked). and yes, it does work in resid/vice :) |
| |
Conrad
Registered: Nov 2006 Posts: 849 |
Okay, just been reading on SounDemon's document Ninja posted and done a little experiment with this... looks as though the technique does work as I expected! :) Thanks a lot guys! :)
I think this method should be put into music routines so that it will allow phasing (thanks for correcting me Angel of Death ;)) effects with the noise waveform ANYWHERE in the music when playing, i.e. on hard-restart, use $f1, $09, then whatever waveform including noise. |
| |
GT Account closed
Registered: Sep 2008 Posts: 308 |
Quote: Okay, just been reading on SounDemon's document Ninja posted and done a little experiment with this... looks as though the technique does work as I expected! :) Thanks a lot guys! :)
I think this method should be put into music routines so that it will allow phasing (thanks for correcting me Angel of Death ;)) effects with the noise waveform ANYWHERE in the music when playing, i.e. on hard-restart, use $f1, $09, then whatever waveform including noise.
Maybe I'm wrong. But is it the feature of initializing the noise random oscillator ? If so, it was implemented in the hard restart of GT-Editor (1992). |
| |
Conrad
Registered: Nov 2006 Posts: 849 |
Hello Geir. Just been testing some code as such following...
ldx #$00 ;voice number index (0, 7 or $e)
ldy current_waveform,x ;$81, $41, $21, $11 etc.
lda #$f1
sta $d404,x
eor #$f8 ; a = ($f1 xor $f8) = $09
sta $d404,x
eor #$f8 ; a = ($09 xor $f8) = $f1
sta $d404,x
eor #$f8
sta $d404,x
eor #$f8
sta $d404,x
eor #$f8
sta $d404,x
eor #$f8
sta $d404,x
eor #$f8
sta $d404,x
tya ; a = final waveform
sta $d404,x
The $f1, $09 thing had to be done four times from how it was tested with reSid-fp. Also, raster-time between each voice doesn't affect it. I did ~16 rasterline delay between each voice separately and the phase effect still actually works. :)
Code looks a bit bulky I know, but is this concept similar to what you did in your routine? |
| |
Angel of Death
Registered: Apr 2008 Posts: 211 |
Jeeez...
You guys are terrible!
Where are the days of: Sometimes this works and we don't know why. Let's start it up and hope for the best!
All this rocketscience makes it so... predictable.
Where is the fun in that? ;))
But I'd love to hear some seventies phasing disco tunes with your newfound trick in the future! :)
|
... 3 posts hidden. Click here to view all posts.... |
Previous - 1 | 2 - Next |