Example: Synthesis of 1/F Noise (Pink Noise)

Pink noise^{7.10} or
``1/f noise'' is an interesting case because it occurs often in nature
[294],^{7.11}is often preferred by composers of computer music, and there is no
exact (rational, finite-order) filter which can produce it from
white noise. This is because the ideal amplitude response of
the filter must be proportional to the irrational function
, where
denotes frequency in Hz. However, it is easy
enough to generate pink noise to any desired degree of approximation,
including perceptually exact.

The following Matlab/Octave code generates pretty good *pink noise*:

Nx = 2^16; % number of samples to synthesize B = [0.049922035 -0.095993537 0.050612699 -0.004408786]; A = [1 -2.494956002 2.017265875 -0.522189400]; nT60 = round(log(1000)/(1-max(abs(roots(A))))); % T60 est. v = randn(1,Nx+nT60); % Gaussian white noise: N(0,1) x = filter(B,A,v); % Apply 1/F roll-off to PSD x = x(nT60+1:end); % Skip transient response

In the next section, we will analyze the noise produced by the above matlab and verify that its power spectrum rolls off at approximately 3 dB per octave.

[How to cite this work] [Order a printed hardcopy] [Comment on this page via email]

Copyright ©

Center for Computer Research in Music and Acoustics (CCRMA), Stanford University