Warum beginnt eine Welle, deren Frequenz kontinuierlich abnimmt, ihre Frequenz über die Hälfte ihrer Länge hinaus zu erhöhen?

7

Ich versuche programmgesteuert eine Welle (Sinus oder Quadrat) mit einer kontinuierlich abnehmenden Frequenz zu erzeugen. Dazu multipliziere ich einfach die Startfrequenz mit einem abnehmenden Wert, der linear von 1 auf 0 geht, in Zwischenschritten über einen bestimmten Zeitraum. Ich war verwirrt zu sehen (und zu hören), dass genau zur Hälfte der Zeitspanne die Frequenz wieder anstieg. Ich habe den Frequenzwert überprüft, aber alles ist in Ordnung. Ich kann nur die erste "Hälfte" der Welle verwenden, aber es wäre großartig zu verstehen, was ich erlebe. Jede Hilfe geschätzt! Vielen Dank

Rotor
quelle
Es klingt für mich eher so, als hätten Sie irgendwo einen falschen Skalierungsfaktor oder einen falschen Versatz und tatsächlich Ihre Frequenzmodulation von 1 auf -1 erhöht.
hotpaw2
2
Bitte zeigen Sie uns genau, wie Sie den Sinus oder die Rechteckwelle erzeugen.
Jim Clay

Antworten:

9

Stellen Sie sicher, dass Ihre Frequenz keine Werte unter 0 oder über der Hälfte Ihrer Abtastrate erreicht.

Bitte posten Sie weitere Informationen / Code darüber, wie Sie Ihre Wellenform erzeugen! Wahrscheinlich machen Sie es nicht richtig.

Zum Beispiel, wenn Sie eine Sinuswelle mit einer zeitlich variierenden Frequenz erzeugen möchten f(t) (zum Beispiel um eine Frequenzmodulation zu implementieren), erzeugt so etwas wie:

y(t)=sin(2πtf(t))

ist falsch, weil Ihre momentane Frequenz ist:

fi(t)=12πdϕ(t)dt

Und:

12πd2πtf(t)dtf(t)

Außer in dem speziellen Fall, in dem f(t) ist eine Konstante.

Der richtige Weg, um eine Sinuswelle mit zeitlich variierender Frequenz zu erzeugen f(t) ist also mit:

y(t)=sin(2π0tf(τ)dτ)

Beim Synthesizer-Sprechen akkumuliert das Register / die Variable die momentane Frequenz, um die zu bewerten 0tf(τ)dτ Die Menge wird als Phasenakkumulator bezeichnet.

http://en.wikipedia.org/wiki/Frequency_modulation

http://en.wikipedia.org/wiki/Instantaneous_phase

Pichenettes
quelle
Vielen Dank für Ihre Antwort, es erklärte, was ich falsch gemacht habe. Der Wechsel zu einer auf Phasenakkumulatoren basierenden Implementierung löste das Problem.
Rotor