2 zumbadores a la vez, es posible?

Hola, pues tengo la misma pregunta que en este link conectar dos o tres buzzers a un mismo arduino para tocar una melodía que se asemeje a tocar un instrumento con melodía y acompañamientos. y por lo que entiendo la función tone() no puedo usarla para que mientras se reproduce un sonido en un buzzer pueda al mismo tiempo reproducir otro sonido en otro buzzer con diferente duración, frecuencia y momento de activación y silencio.
Estoy algo confundido de como puedo hacer esto, realmente mi fuerte no es arduino si no FPGA donde es simple este proyecto pues todas las operaciones se realizan en paralelo, aunque son demasiado caras para gastar tanto en esto.
Pero en un micro controlador como arduino las instrucciones son secuenciales y reproducir dos tonos se vuelve un complicado planteamiento.
encontré esta biblioteca:

sin embargo no sé su pueda ayudarme a resolver esté problema.

El proyecto principal es hacer una caja musical que reproduce la siguiente melodía "Carol of the Bells" para piano a dos manos.

el arreglo para que cambie la frecuencia así como la duración de las notas es relativamente simple si se hace con un somo buzzer, pero al hacerlo con dos, realmente no sé como implementar ese arreglo.
Agradecería mucho su ayuda pues no es mi fuerte el área de los micro controladores.
Gracias, saludos!

Cuando usas el buzzer escribes tone(pin,freq);, puedes usar pin1 - pin2 y freq1 - freq2.

Lo que voy a decir perfectamente puede funcionar.

Hasta donde sé, tone solo puede funcionar sobre un pin a la vez; sin embargo, tone utiliza el timer2, millis, micros y delay el timer0; entonces nos queda justamente el timer1 libre para generar el segundo (a menos que tengas que involucrar hasta servos).
Con esta librería es posible utilizar los pines 9 o 10 como segunda "voz" del instrumento. Las funciones equivalentes a tone y noTone serían las siguientes:

void tone2(byte pin, unsigned int freq) {
  Timer1.pwm(pin, 511, 1000000UL / freq);
}

void noTone2(byte pin) {
  Timer1.disablePwm(pin);
}

Si en el código también le especificas la duración a tone, tendré que hacer una implementación más elaborada para poder imitar dicha funcionalidad con el timer1.

PD: debes colocar lo siguiente en el setup para que funcione:

Timer1.initialize();

Creo que precisamente en el hilo que citas al principio están apuntadas las soluciones posibles:

  • Si el arduino tiene que realizar otras tareas o estás usando uno con suficientes timers, usar un timer para cada buzzer, osea para cada voz. Aquí tienes la limitación del número de timers disponibles, según el arduino que uses. Digamos que podrías tener dos "voces" simultáneas en un arduino uno y cinco en un mega (el timer0 lo dejaremos para gestionar millis, que también necesitarás). Puedes utilizar esta librería para ayudarte.
  • Si sólo tiene que tocar la melodía, controlando a base de millis y micros tanto los tiempos de cada onda como los de la partitura, y trabajando un puerto en bajo nivel, creo que podrías tener en un arduino uno ocho voces simultáneas.