pues, hace tiempo hice algo asi... escribia en un archivo de texto scripts algo asi:
1000D4; 1500Eb4; 3000A4; 1200Bb4, 900E4, 1600A4...etc
Donde X era el tiempo en miliSegundos, Donde"Y" era la nota y la "Z" era la octava basandome en C4 como Do central en el piano...
Usaba el buzzer de la PC lo cual no tenia que preocuparme tanto por Hardware.... sin embargo en tu caso si lo tienes que hacer fisico, quiza un Arduino te pudiera reducir el tiempo y esfuerzo en cuanto a Hardware
En cuanto a SW existe la manera sencilla de hacerlo y es usando la funcion: Beep (usando el buzer interno de tu PC)
Aqui te envio las frecuncias de la escala cromática de C4 a C5
C5 - 523.251
B4 - 493.883
Bb4 - 466.164
A4 - 440
Ab4 - 415.305
G4 - 391.995
Gb4 - 369.994
F4 - 349.228
E4 - 329.628
Eb4 - 311.127
D4 - 293.665
Db4 - 277.183
C4 - 261.626
Entonces en el Script, abria un archivo de Texto y simplemente escribia la notacion como te mencione y el SW sustituia la nota tomando la frecuencia correspondiente
Es algo sencillo de hacer, cualquier cosa contacta y con gusto te puedo orientar
visita
www.ezlabview.com