making pink noise (1/f) using list of frequencies

I would like to see what type of noise I would get if I used just the frequency in my voice. I created a matlab array using fft to get the [frequency,amplitude,phase] to reproduce my vocal signal.

I would like to take this file/data and use it to create pink noise (1/f). Of course when I use 1/f for the frequency the numbers become very small does anyone have any ideas how to use my own vocal frequencies that I get from doing a fft in matlab from my voice to create pink noise (1/f).


  • 1
    $\begingroup$ Sllloooowwwwww iiiitttt doooooowwwwwnnnnn. $\endgroup$
    – Arkamis
    Jul 22 '13 at 19:20
  • $\begingroup$ honestly suggest to move this question to physics SE $\endgroup$
    – al-Hwarizmi
    Jul 22 '13 at 20:06
  • $\begingroup$ Signal processing SE might be more appropriate. $\endgroup$
    – Arkamis
    Jul 22 '13 at 20:09
  • $\begingroup$ I've read this several times and it still doesn't make sense to me. What do you call "vocal frequencies"? How can pink noise (which is a random process parametrized by its energy and roll-off) can be parametrized by several "frequencies"? What are you ultimately trying to achieve? $\endgroup$ Jul 23 '13 at 6:33
  • $\begingroup$ @pichenettes by "vocal frequencies" I mean the frequencies found in my voice after I do an fft on the audio signal. They are placed in an array in the format [frequency,amplitude,phase]. It's more than several, more like several hundred 80 Hz to 1100 Hz. $\endgroup$
    – Rick T
    Jul 23 '13 at 11:01

Pink noise, as you know, has contributing amplitudes inversely proportional to each corresponding frequency. It appears more sinusoidal than white noise (constant power spectrum) because the low frequency components have large amplitudes. The high frequency components do not contribute that much to the overall noise amplitude.

To recreate pink noise in MATLAB, I would use the following technique:

1.) Generate a square wave (ones(n) will create a square wave of width n).

2.) Take the Fourier Transform of the signal (fft(x)). This will give you the sinc function. The DC component will be 1.

3.) In a for loop, add noise to the amplitude of each frequency of the FFT sinc function. The range of values of the noise will be dependent on 1/f.

4.) Take the inverse Fourier Transform of the noisy FFT. Then subtract 1 to yield a pink noise vector of length n centered around $0$.

enter image description here

  • $\begingroup$ Why would this work? $\endgroup$ Jul 23 '13 at 6:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.