Wie kann man Sinus verschiedener Frequenzen aus einer Nachschlagetabelle mit fester Größe ermitteln?
Ich empfange eine Sinuswelle mit 48 kHz, der Frequenzbereich meiner Sinuswelle kann von 0 bis 20000 Hz mit einer Schrittweite von etwa 100 Hz variieren. Ich benutze einen Lookup-Tabellen-Ansatz. Also generiere ich 4096 Samples für eine Sinuswelle für 4096 verschiedene Phasen. Ich denke, die allgemeine Idee dahinter ist, die Schrittgröße zu erhöhen und unterschiedliche Schrittgrößen für unterschiedliche Frequenzen zu verwenden. Also mache ich folgendes (Pseudocode). Ich bin mir aber nicht sicher, in welchem Verhältnis die Schrittweite zu der Frequenz steht, mit der ich die Samples der Sinuswelle von erzeugen möchte. Wenn meine Frequenz beispielsweise 15000 Hz beträgt, welche Schrittweite muss ich dann zurücklegen? Ist meine Stichprobengröße (4096) dafür zu niedrig?
// Pseudocode
uint16_t audio_sample[4096] = {...};
NSTEP = freq; //???How is the step size going to be related to the freq here
for(int i = 0; i < 4096; i = i+NSTEP)
{
sine_f(i) = audio_sample[i];
}
Danke im Voraus.