Ich entwickle eine Software-Emulation eines analogen Synthesizers. Ich versuche, die Tonhöhe eines Oszillators mit einem LFO zu modulieren. Für jedes Sample, das dem Soundsystem des Computers zugeführt wird, berechne ich die Frequenz, die wie folgt in den Hauptoszillator eingegeben werden soll (Pseudocode):
osc_frequency = note_frequency * (1 + tuning) * (1 + lfo_y * lfo_mod_depth)
Die Variablen in dieser Anweisung werden wie folgt beschrieben:
- note_frequency = Frequenz der zu spielenden Note in Hz
- Tuning = Feinabstimmung des Oszillators in Prozent der gespielten Tonhöhe (Beispiel: -0,02 = Verstimmung um 2%)
- lfo_y = aktueller y-Wert der lfo-Wellenform (reicht von -1 bis 1)
- lfo_mod_depth = Tiefe / Intensität des Effekts, der auf den Oszillator in Prozent angewendet werden soll
Diese Berechnung liefert jedoch nicht das gewünschte Ergebnis. Ich erwarte, dass sich die Tonhöhe auf und ab moduliert, um die Mittenfrequenz herum (Note wird gespielt). Was ich bekomme, ist ein Modulationseffekt, der bewirkt, dass die Tonhöhe "wegläuft"; Ich kann nicht genau sagen, was passiert, aber es klingt wie eines davon:
- Die Modulationsintensität nimmt mit der Zeit zu (die durch die Modulation erreichte Hoch- / Niederfrequenzmarke wird höher / niedriger, je länger die Note gehalten wird).
- Während die Modulationsintensität über die Zeit konstant bleibt, steigt die Mittenfrequenz an, während die Modulation um sie herum schwingt
Benutze ich den richtigen Ansatz oder nicht? Wenn nicht, wie sollte der richtige Ansatz aussehen? Jede Hilfe dabei wird sehr geschätzt.