Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Composing > Flangering effect with noise waveform
2009-06-06 18:12
Conrad

Registered: Nov 2006
Posts: 833
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).
 
... 3 posts hidden. Click here to view all posts....
 
2009-06-06 20:06
Angel of Death

Registered: Apr 2008
Posts: 210
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... :)
2009-06-06 20:12
Ninja

Registered: Jan 2002
Posts: 404
Maybe this article can help you?

http://www.dekadence64.org/sidwav.txt

(It is based on this one)
2009-06-06 20:23
chatGPZ

Registered: Dec 2001
Posts: 11116
the noise waveform is indeed generated by a rather predictable LFSR =) (read what ninja linked). and yes, it does work in resid/vice :)
2009-06-06 21:14
Conrad

Registered: Nov 2006
Posts: 833
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.
2009-06-06 21:40
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).
2009-06-06 23:12
Conrad

Registered: Nov 2006
Posts: 833
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?
2009-06-07 07:46
Angel of Death

Registered: Apr 2008
Posts: 210
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! :)
2009-06-07 09:32
Mace

Registered: May 2002
Posts: 1799
Oh, really?
Wow...

(Is this where I shoudl say 'my bad'? ;-) )
2009-06-07 17:21
Frantic

Registered: Mar 2003
Posts: 1627
Conrad: Keep in mind that such phase effects may run into trouble if used in a demo using sprites, or something else that affects the number of available cycles on a rasterline.
2009-06-10 08:10
Jammer

Registered: Nov 2002
Posts: 1289
Quote: 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! :)


don't agree. predictability is conditioned only by the authorship of richard :P

this F1, 09 thingy works \o/

i just set 1st frame wave as F1 and

01 E9 DF
02 81 DF
03 FF 00 for example ;)

it works in resid-fp and hoxs64, so i guess it works in general :D
Previous - 1 | 2 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
Codey/Second Dimension
Dr. Doom/RAD
Sentinel/Excess/TREX
Yogibear/Protovision
csabanw
Didi/Laxity
Guests online: 141
Top Demos
1 Next Level  (9.8)
2 Mojo  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.6)
5 Comaland 100%  (9.6)
6 No Bounds  (9.6)
7 Uncensored  (9.6)
8 Wonderland XIV  (9.6)
9 Memento Mori  (9.6)
10 Bromance  (9.5)
Top onefile Demos
1 It's More Fun to Com..  (9.7)
2 Party Elk 2  (9.7)
3 Cubic Dream  (9.6)
4 Copper Booze  (9.5)
5 TRSAC, Gabber & Pebe..  (9.5)
6 Rainbow Connection  (9.5)
7 Wafer Demo  (9.5)
8 Dawnfall V1.1  (9.5)
9 Quadrants  (9.5)
10 Daah, Those Acid Pil..  (9.5)
Top Groups
1 Nostalgia  (9.3)
2 Oxyron  (9.3)
3 Booze Design  (9.3)
4 Censor Design  (9.3)
5 Crest  (9.3)
Top Graphicians
1 Sulevi  (10)
2 Mirage  (9.8)
3 Lobo  (9.7)
4 Mikael  (9.7)
5 Archmage  (9.7)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.061 sec.