Estoy tratando de generar mediante programación una onda (senoidal o cuadrada) con una frecuencia continuamente decreciente. Para hacerlo, simplemente multiplico la frecuencia inicial para un valor decreciente, que linealmente va de 1 a 0, en pasos intermedios a lo largo de un lapso de tiempo dado. Me sorprendió ver (y escuchar) que, exactamente en la mitad del lapso de tiempo, la frecuencia comenzó a aumentar nuevamente. Revisé el valor de frecuencia pero todo está bien. Solo puedo usar la primera 'mitad' de la ola, pero sería genial entender lo que estoy experimentando. Cualquier ayuda apreciada! Gracias
7
Respuestas:
Asegúrese de que su frecuencia no alcance valores inferiores a 0 o superiores a la mitad de su frecuencia de muestreo.
¡Publique más información / código sobre cómo genera su forma de onda! Lo más probable es que no lo estés haciendo correctamente.
Por ejemplo, si desea generar una onda sinusoidal con una frecuencia variable en el tiempo (por ejemplo, para implementar la modulación de frecuencia), generando algo como:F( t )
está mal, porque su frecuencia instantánea es:
Y:
Excepto en el caso específico donde es una constante.f(t)
La forma correcta de generar una onda sinusoidal con frecuencia variable en el tiempo es, por lo tanto, con:f(t)
En sintetizador de voz, el registro / variable que acumula la frecuencia instantánea para evaluar la cantidad se llama acumulador de fase.∫t0f(τ)dτ
http://en.wikipedia.org/wiki/Frequency_modulation
http://en.wikipedia.org/wiki/Instantaneous_phase
fuente