Distiguishing pre-recorded sounds

I am working on a project for the deaf and hard of hearing (HOH) where you can record sounds to memory(i.e. Doorbell, incoming call…etc), then when the microphone hears a sound it can compare it to what is recorded in memory. The goal is to send a signal to a receiver when it recognizes a sound telling the receiver what sound was heard(LED 1,2,or3 lights up depending on sound). The problem I am having is recording and distinguishing sounds on the Arduino. I can recognize sounds but I am not sure how to distinguish between different ones. Here is the cookbook code I have for recognizing sounds.
const int ledPin = 13; //the code will flash the LED in pin 13
const int middleValue = 512; //the middle of the range of analog values
const int numberOfSamples = 128; //how many readings will be taken each time

int sample; //the value read from microphone each time
long signal; //the reading once you have removed DC offset
long averageReading; //the average of that loop of readings

long runningAverage=0; //the running average of calculated values
const int averagedOver= 16; //how quickly new values affect running average
//bigger numbers mean slower

const int threshold=400; //at what level the light turns on

void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}

void loop() {
long sumOfSquares = 0;
for (int i=0; i<numberOfSamples; i++) { //take many readings and average them
sample = analogRead(0); //take a reading
signal = (sample - middleValue); //work out its offset from the center
signal *= signal; //square it to make all values positive
sumOfSquares += signal; //add to the total
}
averageReading = sumOfSquares/numberOfSamples; //calculate running average
runningAverage=(((averagedOver-1)*runningAverage)+averageReading)/averagedOver;

if (runningAverage>threshold){ //is average more than the threshold ?
digitalWrite(ledPin, HIGH); //if it is turn on the LED
}else{
digitalWrite(ledPin, LOW); //if it isn’t turn the LED off
}
Serial.println(runningAverage); //print the value so you can check it
}

Again, I can recognize and transmit a single sound but I need to be able to distinguish sounds from one another. Your help is appreciated.

I can recognize and transmit a single sound

I really doubt that your code can recognize any specific sound. It appears to be computing an average of the input power, in which case any signal whose average power exceeds the threshold will be recognized. If you want to distinguish between different types of sounds you need to look at the spectrum of each type of sound. It is not easy to do this and will be almost impossible to do reliably on an Arduino. I think you'd be better off wiring a sensor of some sort into the doorbell circuitry and connecting that to the Arduino. Then also hook up a modem to the phone and then have the Arduino read the caller ID info from the modem so that you can then flash different LEDs depending upon which event occurred.

Pete

http://coolarduino.wordpress.com/2012/10/18/speech-voice-recognition-remix/