Je développe une émulation logicielle d'un synthétiseur analogique. J'essaie de moduler la hauteur d'un oscillateur en utilisant un LFO. Pour chaque échantillon envoyé au système audio de l'ordinateur, je calcule la fréquence à entrer dans l'oscillateur principal comme ceci (pseudocode):
osc_frequency = note_frequency * (1 + tuning) * (1 + lfo_y * lfo_mod_depth)
Les variables de cette instruction sont décrites comme suit:
- note_frequency = fréquence de la note à jouer en Hz
- accord = réglage fin de l'oscillateur en pourcentage de la hauteur jouée (ex: -0,02 = désaccord de 2%)
- lfo_y = valeur y actuelle de la forme d'onde lfo (varie de -1 à 1)
- lfo_mod_depth = profondeur / intensité de l'effet à appliquer à l'oscillateur en pourcentage
Cependant, ce calcul ne donne pas le résultat souhaité. Je m'attends à entendre la hauteur moduler de haut en bas, verrouillée autour de la fréquence centrale (note jouée). Ce que j'obtiens, c'est un effet de modulation qui fait "fuir" la hauteur; Je ne peux pas dire exactement ce qui se passe, mais cela ressemble à l'un d'eux:
- L'intensité de la modulation augmente avec le temps (la marque de haute / basse fréquence atteinte par la modulation augmente / diminue plus la note est maintenue)
- Alors que l'intensité de modulation reste constante dans le temps, la fréquence centrale augmente tandis que la modulation oscille autour d'elle
Suis-je en train d'utiliser la bonne approche ou non? Sinon, quelle devrait être la bonne approche? Toute aide à cet égard est très appréciée.