Hallo, ich muss für einen DSP ein Vibrato / Tonhöhenänderung eines Signals in C erstellen.. hab nur leider im Moment gar keinen Plan wie und wo ich anfange, stehe voll auf m Schlauch.. hab irgendetwas von Modulation mit nem LFO gelesen, aber wie ich das zsm bringe, will mir einfach nicht in den Kopf. Wäre froh wenn mir jemand n bisl auf die Sprünge helfen könnte, danke!
Gast
#4419767
Modulation mit einem LFO: Du erzeugst einen niederfrequenten Sinus und multiplizierst den Datenstrom mit diesem Signal. Normal mit daten * 1 Jetzt mit daten * (1 + amplitude_LFO * sin(omega*t))
Gast
#4419811
> Du erzeugst einen niederfrequenten Sinus und multiplizierst den > Datenstrom mit diesem Signal. Das nennt sich Tremolo und ist kein Vibrato. Vibrato: Eingangssignal aeqidistant in einen Speicher schreiben. Den Auslesepunkt aus diesem Speicher mit einem LFO modulieren. Fertig ist das Vibrato.
"..m it einem LFO modulieren." .. also jeden Wert aus dem Daten Array mit dem LFO (z.B. Âsin(2PI*10Hz*t)?) multiplizieren? oder was genau meint modulieren?
Gast
#4419872
array[++ptr]=input(); output(array[ptr + delay + LFO]);
Danke, aber wo kommt die Verzögerung her bzw wofür wird die benötigt? oder ist die dann schon für den Chorus Effekt zu gebrauchen?
Das ist aber ein wenig arg grob, weil man dann das Vibrato mit der Samplefrequenz faltet. Das reicht normalerweise nicht aus. Man muss das Signal entsprechend über-abtasten und interpolieren / filtern. Dann wie beschrieben mit einem Adresszähler schwingend auslesen. Wenn es um kleine Änderungen geht, kann man das auf Hardwareebene machen, in dem man den Takt des Wandlers verzieht.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.