Estou desenvolvendo uma emulação de software de um sintetizador analógico. Estou tentando modular o tom de um oscilador usando um LFO. Para cada amostra fornecida ao sistema de som do computador, estou calculando a frequência a ser inserida no oscilador principal como este (pseudocódigo):
osc_frequency = note_frequency * (1 + tuning) * (1 + lfo_y * lfo_mod_depth)
As variáveis nesta declaração são descritas a seguir:
- note_frequency = frequência da nota a ser tocada em Hz
- tuning = ajuste fino do oscilador em porcentagem da afinação tocada (ex: -0,02 = desafinação em 2%)
- lfo_y = valor y atual da forma de onda lfo (varia de -1 a 1)
- lfo_mod_depth = profundidade / intensidade do efeito a aplicar ao oscilador em porcentagem
No entanto, esse cálculo não produz o resultado desejado. Espero ouvir o tom modular para cima e para baixo, bloqueado em torno da frequência central (nota sendo tocada). O que estou recebendo é um efeito de modulação que faz com que o tom "fuja"; Não sei exatamente o que está acontecendo, mas parece um destes:
- A intensidade da modulação aumenta com o tempo (a marca de frequência alta / baixa alcançada pela modulação aumenta / diminui quanto mais tempo a nota é mantida)
- Enquanto a intensidade da modulação permanece constante ao longo do tempo, a frequência central aumenta enquanto a modulação oscila em torno dela
Estou usando a abordagem correta ou não? Caso contrário, qual deve ser a abordagem correta? Qualquer ajuda com isso é muito apreciada.