What happens if you call tone function twice with two notes simultaneously?
i.e. what happens if you do like the following?
void loop()
{
tone (speaker, Note_C);
tone (speaker, Note_E);
}
If you hear Note_E only, the problem seems to be a bit difficult.