Hallo Thimo,
Du kannst in der Numerik bzw. digitalen Signalverarbeitung einfache
saubere (Sinus-)Töne mit Hilfe von digitalen Oszillatoren erzeugen. Dazu
sind pro Oszillator nur zwei Speicherstellen und wenige matehmatische
Operationen pro Abtastwert aufzuwenden. Das sieht dann z.B. so aus:
Y(n) = SIN_OMEGA*dirac(n) + 2*COS_OMEGA*Y(n-1) - Y(n-2)
SIN_OMEGA und COS_OMEGA sind Konstanten. SIN_OMEGA*dirac(n) ist der
Initialwert, der die Amplitude bestimmt.
SIN_OMEGA = sin(2*pi*fc/fs)
mit fc - gewollte Oszillatorfrequenz, fs - Abtastrate
COS_OMEGA bestimmt die Oszillatorfrequenz: COS_OMEGA = cos(2*pi*fc/fs)
Wenn Du beide Konstanten ausgerechnet hast und SIN_OMEGA in die
Speicherstelle Y(n-1) schreibst, mußt Du nur für jeden Abtastwert des
Oszillators folgendes rechnen:
Y(n) = 2COS_OMEGA*Y(n-1) - Y(n-2)
Es bleibt also nur eine Multiplikation und eine Subtraktion pro Sample
zu rechnen und ein perfekter Sinus kommt heraus. Natürlich mußt Du bei
jedem Durchlauf Y(n-1) in die Speicherstelle Y(n-2) und Y(n) nach Y(n-1)
für den nächsten Durchlauf schieben.
Versuche es einfach mal in der numerischen Simulation aus
(www.scilab.org, oder www.octave.org).
Da es sich um eine rückgekoppelte Struktur handelt (IIR), ist die
Amplitude und Frequenz nicht ohne weiteres modulierbar. Das ganze System
würde instabil werden.
Mit einem Klavierton hat das natürlich nichts zu tun, sondern mit ganz
sauberen Sinustönen.
Viele Grüße!
Gerrit, DL9GFA