8-bit gun sound effects without extra hardware?

so the latest updates,

I took Sciguy's code and made it a little more generic for my purposes.

//================================================================================//
// Noise                                                                          //
// This code generates random tones for DURATION between +300 and -300 of the     //
// FREQency specified.                                                            //
//================================================================================//
void noise(int freq, int duration)  {
int low = freq - 300;
int high = freq + 300;
unsigned long time = millis();
while(millis() - time <= duration)  {
tone(7, random(low, high));
}
noTone(7);
}
//================================================================================//

And this is working perfectly. As for the amplitude problem, I'm not sure if its going to be an issue. Once I started playing with this I was able to get the sound to trail off just buy lowering the frequency. The small speaker I'm using I got from radio shack has a low end of 300hz, so setting the frequency lower then that less and less sound is played.

The speaker isn't loud and will be changed out in the future but for testing its working fine.