Paso 4: Nota efectos
Los valores de nota se almacenan en una matriz. Usted puede encontrar los valores de aquí: http://en.wikipedia.org/wiki/Piano_key_frequencieskeyFreq doble [] = {}
27.5, 29.1352, 30.8677, //Octave 0
32.7032, 34.6478, 36.7081, 38.8909, 41.2034, 43.6535, 46.2493, 48.9994, 51.9131, 55, 58.2075, 61.7354, //Octave 1
65.4064, 69.2957, 73.4162, 77.7817, 82.4069, 87.3071, 92.4986, 97.9989, 103.826, 110, 116.541, 123.471, //Octave 2
130.813, 138.591, 146.832, 155.563, 164.814, 174.614, 184.997, 195.998, 207.652, 220, 233.082, 246.942, //Octave 3
261.626 277.183, 293.665, 311.127, 329.628, 349.228, 369.994, 394.995, 415.305, 440, 466.164, 493.883, //Octave 4
523.251, 554.365, 587.330, 622.254, 659.255, 698.456, 739.989, 783.991, 830.609, 880, 932.328, 987.767, //Octave 5
1406.50, 1108.73, 1174.66, 1244.51, 1318.51, 1396.91, 1479.98, 1567.98, 1661.22, 1760, 1864.66, 1975.53, //Octave 6
2093.00, 2217.46, 2349.32, 2489.02, 2637.02, 2793.83, 2959.96, 3135.96, 3322.44, 3520, 3729.31, 3951.07, //Octave 7
4186.01 //Octave 8
};
Así que notas enviadas por el MIDI o a través de UART tienen un valor adecuado, en lugar de tener que calcular sobre la marcha.
El segundo oscilador puede ser desintonizado de la primera de 3 maneras.
1. utiliza un sistema llamado centavos, que son fracciones de una nota. Calcula así:
centMultiplier = pow (2.0,(cents + dC)/1200.0);
Luego se multiplica ese valor a la frecuencia de la nota.
2. utiliza un sistema llamado semi, que son cambios de nota de -1 a + 1 octava
3. finalmente por completos octavas de -3 a + 3
Luego se mezclan los dos osciladores utilizando un peso ajustable.
osc1 byte = ((pgm_read_byte (ondas + icnt1 + (osc1WaveForm << 8)) * weight1) / MAX_WEIGHT); primer oscilador
osc2 byte = ((pgm_read_byte (ondas + icnt2 + (osc2WaveForm << 8)) * weight2) / MAX_WEIGHT); segundo oscilador
Luego se suman los dos valores. El valor del peso va de 0 a 16. Así tendrás todo el primer oscilador, completamente la segunda o alguna mezcla entre.
El LFO ajusta la desintonización del segundo oscilador mediante el ajuste de los valores en proporción a la amplitud de la onda. Así que trabaja de manera similar a los primeros 2 osciladores pero en lugar de crear sonido, ajustes valores.