Wellenform synthetisieren

OP #4454753
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 #4454765
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
Gast #4454778
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.
OP #4454807
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
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:
Gast #4455009
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.
Persönliche Seite #4455286
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.
Persönliche Seite #4457582
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 :-)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.