Estoy desarrollando una emulación de software de un sintetizador analógico. Estoy tratando de modular el tono de un oscilador usando un LFO. Para cada muestra alimentada al sistema de sonido de la computadora, estoy calculando la frecuencia que se ingresará en el oscilador principal de esta manera (pseudocódigo):
osc_frequency = note_frequency * (1 + tuning) * (1 + lfo_y * lfo_mod_depth)
Las variables en esta declaración se describen a continuación:
- note_frequency = frecuencia de la nota que se reproducirá en Hz
- afinación = ajuste fino del oscilador en porcentaje del tono jugado (ej .: -0.02 = desintonizar en 2%)
- lfo_y = valor actual y de la forma de onda lfo (rangos de -1 a 1)
- lfo_mod_depth = profundidad / intensidad del efecto a aplicar al oscilador en porcentaje
Sin embargo, este cálculo no produce el resultado deseado. Espero escuchar el tono modular arriba y abajo, bloqueado alrededor de la frecuencia central (se reproduce la nota). Lo que obtengo es un efecto de modulación que hace que el tono "se escape"; No puedo decir exactamente qué está sucediendo, pero parece uno de estos:
- La intensidad de la modulación aumenta con el tiempo (la marca de frecuencia alta / baja alcanzada por la modulación aumenta / disminuye cuanto más tiempo se mantenga la nota)
- Mientras que la intensidad de la modulación permanece constante a lo largo del tiempo, la frecuencia central aumenta mientras la modulación oscila a su alrededor.
¿Estoy usando el enfoque correcto o no? Si no, ¿cuál debería ser el enfoque correcto? Cualquier ayuda con esto es muy apreciada.