Hola! Necesitaba escribir música en consola y se me ocurrió crear arreglos (arrays) con las frecuencias musicales según octavas, cada arreglo contiene 8 elementos (todas las octavas), a continuación el código en c# (c sharp):
int[] ut = new int[8] { 65, 130, 261, 523, 1046, 2093, 4168, 8372 };
int[] uts = new int[8] { 69, 138, 277, 554, 1108, 2217, 4434, 8869 };
int[] re = new int[8]{ 73, 146, 293, 587, 1174, 2349, 4698, 9397 };
int[] res = new int[8] { 77, 155, 311, 622, 1244, 2489, 4978, 9956 };
int[] mi = new int[8] { 82, 164, 329, 659, 1318, 2637, 5274, 10548 };
int[] fa = new int[8] { 87, 174, 349, 698, 1396, 2793, 5587 , 11175};
int[] fas = new int[8] { 92, 184, 370, 740, 1480, 2959, 5919, 11839 };
int[] sol = new int[8] { 97, 195, 391, 784, 1568, 3136, 6271, 12543 };
int[] sols = new int[8] { 103, 207, 415, 830, 1661, 3322, 6644, 13298 };
int[] la = new int[8] { 110, 220, 440, 880, 1760, 3520, 7040, 14080 };
int[] las = new int[8] { 116, 233, 466, 932, 1864, 3729, 7458, 14917 };
int[] si = new int[8] { 123, 246, 493, 987, 1975, 3951, 7902, 15804 };
¿Cómo funciona?
Pues es sencillo, cada arreglo contiene 8 elementos, siendo cada elemento la frecuencia de una nota en una determinada octava, muchas de las notas estan redondeadas y otras expresadas en su máximo entero debido a que Console.Beep() solo admite variables de tipo entero. Para invocar a la nota basta con escribir el nombre del arreglo (ut, uts, re, res) y entre corchetes [] la octava deseada menos 1 (debido a que las posiciones del array comienzan desde 0);
Ejemplo:
Si queremos interpretar Do en su 3ra octava escribiríamos lo siguiente:
Console.Beep(ut[2],100);
¿Por que UT y no DO?
“do” es una palabra reservada, por ello consideré el nombre de UT para reemplazar a “do”, recordemos que Do en un principio tenia el nombre de UT

