I am trying to generate a special type of noise. Its not pink or white, or another color, it has a specific "spectrum" so to speak. Its basically filtered white noise, but I think it would be too difficult to recreate reliably and cheaply with multiple analog filters. It looks like pink noise from 20 hz to about 700 hz, then it has various peaks and valleys. I would like to make a very inexpensive playback device for this noise sound, based on clocking out a cheap flash memory into an RC filter. The process would go like this:
1) mathematically generate the sound somehow in the analog domain (pure math)2) take the pure math sound, and generate an appropriate bit stream, designed to recreate the analog sound by playing the bitstream into an RC filter
so what we are doing here is taking an analog domain sound (the pure math) and mathematically transforming it into a bitstream that when played into a simple rc filter will recreate the original analog sound. this is possible right?
I dont know how to do steps 1 or 2. I figure step 1 should be easy to do in C. So since I want a 20khz upper frequency to be reproduced, each second of sound will require 40000 samples, right? So if I want this noise sound to loop every 5 seconds (to keep the size of the flash memory down), I will need 40000 * 5 samples, which is 200,000 samples. So in C, make a 200,000 byte array, and then starting at 20hz, create a sine wave whose amplitude matches the energy of the spectrum of the desired noise at 20 hz, and put it in the array. The move to 20hz + .001hz, and do it again, but mix it with the existing sound in the array, and continue this process until you get to 20,000hz. Then you have a 5 second long array of an analog-domain sound which matches the spectrum of the sound I want to recreate.
Now to play this array back using our flash memory/rc filter setup, we have to take the array, and transform it into a bitstream which when played back on the rc filter, will recreate the original sound (which we are starting with). I suppose you could use some simple closed loop method,
Does this make sense?
Could you recreate white noise using this method? And does it matter what phase I start the sine wave at when creating the array?