Forum: Digitale Signalverarbeitung / DSP / Machine Learning Wellenform synthetisieren


von Joe F. (easylife)


Angehängte Dateien:

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?

von TestX (Gast)


Lesenswert?

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

von Sascha (Gast)


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.

von Joe F. (easylife)


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....

: Bearbeitet durch User
von Frank (Gast)


Angehängte Dateien:

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

von Joe F. (easylife)


Lesenswert?

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

So isses.
Danke an alle.

: Bearbeitet durch User
von Signaler (Gast)


Lesenswert?

Wieso sollte man sich die Mühe machen einen Sinus zu erzeugen und dann 
das Störsignal draufgeben? Wenn das grafisch ermittelt werden muss, kann 
man gleich das komplette Signal draufgeben.

von uhb (Gast)


Lesenswert?

Sascha schrieb:
> Lockuptable

Wassn das? ;-)

von Joe F. (easylife)


Angehängte Dateien:

Lesenswert?

Signaler schrieb:
> Wieso sollte man sich die Mühe machen einen Sinus zu erzeugen und dann
> das Störsignal draufgeben?

Weils fett klingt!
Ergebnis anbei. Sinus + überlagertes Rechteck. Noch fetter wird es, wenn 
man einen dritten Oszillator (auch Rechteck) mit halbierter Frequenz 
überlagert.

von Signaler (Gast)


Lesenswert?

Klingt wie Bontempi ...

von J. S. (engineer) Benutzerseite


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.

von npn (Gast)


Lesenswert?

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

https://de.wikipedia.org/wiki/Fourier-Analysis#Fourier-Synthese

von J. S. (engineer) Benutzerseite


Lesenswert?

Oder auch die Anwendung als 
Digitaler LaPlace-Funktionsgenerator im FPGA

von Hagen R. (hagen)


Lesenswert?

Falls man den Sinus per Lookuptable synthetisiert dann muß man nur 
periodisch den Phasenakkumulator "springen" lassen.

von J. S. (engineer) Benutzerseite


Lesenswert?

Das hatte ich spontan auch sofort gesagt, aber es ist nur für einen 
bestimmten Zustand gegen die Amplitudenmodifikation austauschbar. Das 
langsame faden würde sich so nicht machen lassen, bzw hätte eine völlig 
andere Wirkung.

von Hagen R. (hagen)


Lesenswert?

Korrekt, mein "Vorschlag" ist auch nur als ein möglicher Weg, für das 
gezeigte Signal, zu verstehen.

von J. S. (engineer) Benutzerseite


Lesenswert?

Es ist ja auch nicht falsch. Im Gegenteil: Es ist eine recht einfache 
Methode, mit ein-zwei Handgriffen eine massive Klangänderung zu 
erzeugen. In synthesizern wird das mit der LFO-Wellenform gemacht: Man 
nimmt keinen langsamen Sinus für ein weiches Vibrato, sondern ein 
schnelles Rechteck. Ist dann aber mehr ein FFO :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.