¿Por qué una onda que disminuye continuamente en frecuencia comienza a aumentar su frecuencia más allá de la mitad de su longitud?

7

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

rotor
fuente
Me parece más como si tuvieras un factor de escala incorrecto o compensado en alguna parte, y realmente aumentaras tu modulación de frecuencia de 1 a -1.
hotpaw2
2
Muéstranos exactamente cómo creas la onda senoidal o cuadrada.
Jim Clay

Respuestas:

9

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)

y(t)=sin(2πtf(t))

está mal, porque su frecuencia instantánea es:

fi(t)=12πdϕ(t)dt

Y:

12πd2πtf(t)dtf(t)

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)

y(t)=sin(2π0tf(τ)dτ)

En sintetizador de voz, el registro / variable que acumula la frecuencia instantánea para evaluar la cantidad se llama acumulador de fase.0tf(τ)dτ

http://en.wikipedia.org/wiki/Frequency_modulation

http://en.wikipedia.org/wiki/Instantaneous_phase

pichenettes
fuente
Muchas gracias por su respuesta, explicó lo que estaba haciendo mal. El cambio a una implementación basada en un acumulador de fase resolvió el problema.
rotor