Wellenform synthetisieren

#4454753
Lesenswert?

Hi,
ich würde gerne einen Bass-Sound "nachbauen", der stufenlos von 
(relativ) reinem Sinus in die anhängend gezeigte Wellenform übergeht.
Während des Überganges wird dieser "Zacken" einfach immer deutlicher.

Hat einer eine Idee, was man mit dem Sinus anstellen müsste (bzw. was 
überlagert sein könnte), um diese Wellenform zu erreichen?
Angehängte Dateien:
Gast #4454778
Lesenswert?

Also das Ding zu generieren ist PWM + Lockuptable wo die Werte 
drinstehen.

Den stufenlosen Übergang (sagen wir: sehr fein gestuft) bekommst du hin 
indem wie gesagt die Fehlerfunktion mehr oder weniger stark zu der 
Sinusfunktion hinzuaddiert wird.

Der Rest ist Mathematik.

Und bitte vergiss die Überlagerung von Sinusfunktionen schnell wieder. 
Das ist eine nicht differenzierbare Funktion, das erfordert unendlich 
viele sin+cos Terme.
Also auch unendlich viele Mikrocontroller/Funktionsgeneratoren.

Fourier ist für Analyse von Signalen wichtig, nicht für die Synthese.
#4454807
Lesenswert?

TestX schrieb:
> Zeichne dir doch mal in die zeichnung einen reinen sinus ein und dann
> subtrahierst du diesen grafisch von deiner signalform.
> Das resultierende störsignal kannst du dir dann anschauen und nachbilden

'an den Kopf klatsch'. Klar. Manchmal ist man echt irgendwie 
denkgehemmt...
Danke.

Sascha schrieb:
> Und bitte vergiss die Überlagerung von Sinusfunktionen schnell wieder.
> Das ist eine nicht differenzierbare Funktion, das erfordert unendlich
> viele sin+cos Terme.

Die "Störfunktion" kann in diesem Fall auch aus 
Rechteck/Sägezahn/Dreieck Oszillatoren entstanden sein... Geht um Musik 
wie gesagt, und das Ding klingt mir verdächtig (Mini-)Moog-ig....
Gast #4454835
Lesenswert?

Na wenn das kein Sinus ist der mit einem Rechteck (gleiche Frequenz aber 
Phasenverschoben) additiv überlagert ist (siehe Anhang).

Ist ziemlich einfach zu machen (z.B. mit 2 Lookups)
Pseudocode:
1
out = aSin * sinLUT[i] + aError * errorLUT[i+phi];
2
i++;

In der Sinus LUT liegt Dein normaler störfreier Sinus.
In der Error LUT liegt Dein Störsignal.
Mit aError kannst Du dann das Störsignal (hier ein Rechteck) langsam von 
0-X aufdrehen und somit die größe der Spikes steuern.

Grüße
Frank
Angehängte Dateien:
Persönliche Seite #4455286
Lesenswert?

Fettigkeit ist immer relativ. Hier ist ein Bass mit ein bischen 
dynamischerem Oberwellenspektrum aus 128 Oszillatoren:

http://www.96khz.org/files/2008/workstationdemo.wma


Sascha schrieb:
> Also auch unendlich viele Mikrocontroller/Funktionsgeneratoren.
Da das Audioband begrenzt ist, braucht man für gewöhnlich 8-10 Oktaven. 
Und da die Musikfrequenzen ebenfalls bekannt sind, kann man es sich auch 
sparen, jede lineare Frequenz zu erzeugen, sondern die dodekatonisch 
abbilden. Geht so in Richtung Görzel.

> Fourier ist für Analyse von Signalen wichtig, nicht für die Synthese.

Es gibt durchaus Synthesen, die so laufen. Bestimmte Formen der 
Frequenzbearbeiter / Vocoder arbeiten damit -> FFT-basierte Faltung.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren