¿Cómo buscar seno de diferentes frecuencias desde una tabla de búsqueda de tamaño fijo?

Estoy muestreando una onda sinusoidal a 48 kHz, el rango de frecuencia de mi onda sinusoidal puede variar de 0 a 20000 Hz con un paso de aproximadamente 100 Hz. Estoy utilizando un enfoque de tabla de búsqueda. Así que genero 4096 muestras para una onda sinusoidal para 4096 fases diferentes. Creo que la idea general detrás de esto es aumentar el tamaño del paso y utilizar diferentes tamaños de pasos para diferentes frecuencias. Entonces hago lo siguiente (pseudo código). ¿Pero no estoy seguro de cómo se relacionará el tamaño del paso con la frecuencia con la que quiero generar las muestras de la onda sinusoidal? Por ejemplo, si mi frecuencia es de 15000 Hz, ¿cuál sería el tamaño de paso que debo atravesar? ¿Es mi tamaño de muestra (4096) demasiado bajo para esto?

 // 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];
 }

Gracias por adelantado.

Respuestas a la pregunta(5)

Su respuesta a la pregunta