Efter rutan Synthesizer (4 / 8 steg)
Steg 4: Obs effekter
Notera värdena lagras till en matris. Du kan hitta värden här: http://en.wikipedia.org/wiki/Piano_key_frequenciesdubbel keyFreq [] = {
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
};
Så anteckningar skickade från MIDI eller över UART har ett lämpligt värde, istället för att behöva beräknas i farten.
Den andra oscillatorn kan vara detuned från först i 3 sätt.
1. använder ett system som kallas cent, som är bråkdelar av en anteckning. Beräknas så här:
centMultiplier = pow (2.0,(cents + dC)/1200.0);
Värdet multipliceras sedan Obs frekvens.
2. använder ett system som kallas semi, som är full Obs omplaceringar från -1 till + 1 oktav
3. slutligen i fulla oktaver från -3 till + 3
De två oscillatorerna blandas sedan med hjälp av en justerbar vikt.
byte osc1 = ((pgm_read_byte (waveTable + icnt1 + (osc1WaveForm << 8)) * weight1) / MAX_WEIGHT); första osc
byte osc2 = ((pgm_read_byte (waveTable + icnt2 + (osc2WaveForm << 8)) * weight2) / MAX_WEIGHT); andra osc
De två värdena summeras sedan. Viktvärdet går från 0 till 16. Så kan du ha helt första oscillatorn, helt andra eller en blandning däremellan.
LFO justerar omstämning för andra oscillatorn genom att justera värdena i förhållande till amplituden på vågen. Så det fungerar på ett liknande sätt till de första 2 oscillatorerna men istället för att skapa ljud, tweaks det värden.