Fast Whitenoise Generator

Type : Whitenoise
References : Posted by gerd[DOT]feldkirch[AT]web[DOT]de
Notes :
This is Whitenoise... :o)
Code :
float g_fScale = 2.0f / 0xffffffff;
int g_x1 = 0x67452301;
int g_x2 = 0xefcdab89;

void whitenoise(
  float* _fpDstBuffer, // Pointer to buffer
  unsigned int _uiBufferSize, // Size of buffer
  float _fLevel ) // Noiselevel (0.0 ... 1.0)
{
  _fLevel *= g_fScale;

  while( _uiBufferSize-- )
  {
    g_x1 ^= g_x2;
    *_fpDstBuffer++ = g_x2 * _fLevel;
    g_x2 += g_x1;
  }
}

Comments
from : gerd[DOT]feldkirch[AT]web[DOT]de
comment : As I said! :-) Take care

from : nobody[AT]nowhere[DOT]com
comment : I'm now waiting for pink and brown. :-)

from : scoofy[AT]inf[DOT]elte[DOT]hu
comment : To get pink noise, you can apply a 3dB/Oct filter, for example the pink noise filter in the Filters section. To get brown noise, apply an one pole LP filter to get a 6dB/oct slope. Peter

from : nobody[AT]nowhere[DOT]com
comment : Yeah, I know how to do it with a filter. I was just looking to see if this guy had anything else clever up his sleeve. I'm currently using this great stuff: vellocet.com/dsp/noise/VRand.html

from : tremblap[AT]gmail[DOT]com
comment : I compiled it, but I get some grainyness that a unisgned long LC algorithm does not give me... am I the only one? pa

from : scoofy[AT]inf[DOT]elte[DOT]hu
comment : Did you do everything right? It works here.

from : gerd[DOT]feldkirch[AT]web[DOT]de
comment : I've noticed that my code is similar to a so called "feedback shift register" as used in the Commodore C64 Soundchip 6581 called SID for noise generation. Links: en.wikipedia.org/wiki/Linear_feedback_shift_register en.wikipedia.org/wiki/MOS_Technology_SID www.cc65.org/mailarchive/2003-06/3156.html

from : scoofy[AT]inf[DOT]elte[DOT]hu
comment : Works well! Kinda fast! The spectrum looks completely flat in an FFT analyzer.

from : Arif[AT]mail[DOT]---
comment : SID noise! cool.