hola
he estado trabajando con los tutoriales de tocar melodías con un piezoeléctrico.
Cuando he empezado a hacer pruebas he notado que hay una ligera desafinacion y que es fruto de un error de exactitud del tiempo en High.
Yo sugiero (siempre que querais utilizar el sistema de afinacion temperado) la siguiente definición:
int tones[] = {1911, 1702, 1516, 1431, 1275, 1136, 1012, 955};
en lugar de la anterior.
Para probar podeis utilizar la siguiente escala:
byte melody[] = "2c2d2e2f2g2a2b2C2b2a2g2f2e2d2c2d2c2b2C2g2C8p8p8p";