Forum: Digitale Signalverarbeitung / DSP / Machine Learning Oszillator mit n Obertönen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Florain (Gast)


Lesenswert?

Hallo,

ich suche für einen digitalen Audio-Synthesizer einen Oszillator, den 
ich mit einem Steuereingang von "reinem Sinus" zu einem obertonreicheren 
Signal steuern kann.

Ich hatte irgendwann mal was gesehen von einem, der ähnlich ware wie 
eine State Variable Oscillator, aber er hatte einen logarithmische 
Nichtlinearität eingebaut. Man konnte den auch bis zum reinen 
Sinus-Oszillator parametrieren.

Ideal wäre ein Oszillator, der nur n Oberwellen erzeugt, denn da das 
Projekt digital ist, brauche ich ansonsten ein sehr steilflankiges 
Tiefpassfilter hoher Ordnung, um keine Aliasing Effekte zu bekommen.

Florain

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Bin etwas verwirrt: Suchst du jetzt sowas wie einen Schaltplan (was soll 
dann da rein/rauskommen - Analogsignale? 1V/Oct usw?) oder ein paar 
Zeilen Programmcode?

Gruss
WK

von supergrobi (Gast)


Lesenswert?

Eine der Besselfunktionen tut das hervorragend.

Welche, musst du selber herausfinden.

von bom (Gast)


Lesenswert?

Danke supergrobi,
ich glaub das ist der richtige Weg. Muss es nur noch auf mein Projekt 
anpassen.

von Sucher (Gast)


Lesenswert?


von Martin O. (ossi-2)


Lesenswert?

Mit einem DDS kann man auch Schwingungen mit Obertönen erzeugen, indem 
man eine passende Tabelle benutzt.

von Jürgen S. (engineer) Benutzerseite


Lesenswert?

Martin O. schrieb:
> Mit einem DDS kann man auch Schwingungen mit Obertönen erzeugen, indem
> man eine passende Tabelle benutzt.

Da müsste man dann aber die Werte der Tabelle modifizieren oder wie beim 
wavetable ineinander überführen. Das geht parametrisch einfacher.

Der TE sollte aber enerell nochmals etwas nachdenken:

Eine konstante Zahl von Oberwellen kann nicht perfekt funktionieren, 
weil eine variable Frequenz die oberste Welle mitunter doch über die GF 
schiebt während eine geringe Grundwelle die Bandbreite des Systems nicht 
auslastet. Es braucht also doch wieder ein Filter.  Ich mache das bei 
mir anhand der Frequenzvorgabe des Tons in einem Kanal mit einem 
parametrischen Filter. Jeder Ton hat dann ein eigenes relatives 
Spektralverhalten.

Einen Band-limiter braucht es bei digitaler Audioerzeugung auch ohnehin, 
sobald man mit nichtlinearen Effekten und Wellen arbeitet, weil sonst an 
Stellen, wo sonst ungewollte tieffrequente Spektralanteile entstehen.

http://www.96khz.org/oldpages/comparison48khzto768khz.htm
Man beachte besonders die dritte Grafik von oben.

Aber ungeachtet dessen:

Wenn man das mit konstanten Oberwellen machen will, nimmt man einfach 
eine Anzahl von Sinusgeneratoren und mischt die Oberwellen additiv 
anteilig rein. Das ist das Einfachste und am besten kontrollierbar.

Die Frage ist dann: Welche Oberwellen?

Die nach Fourier entstehenden, sind mit einfachen Multiplikationen 
direkt zu gewinnen. Sie sind halt musikalisch nur begrenzt nutzbar und 
auch wenn man diese mathematischen Oberwellen generieren will, entsteht 
im Hinblick auf u.a. den MEL-Effekt etwas Denk- und Arbeitsbedarf. In 
der Music-DSP-Gruppe habe ich kürzlich einen Beitrag dazu geschrieben 
mit dem Hinweis auf die Frequenzspreizung beim Flügel. Die Frequenzen 
werden im Diskant subjektiv überhöht, um dem nichtlinearen Hörempfinden 
Rechnung zu tragen.

Diese Überlegung kann man auf die Interferenz von Oberwellen 
unterschiedlicher Kanäle und Stimmen beim Summenmix ausweiten, was für 
elektronische Klangerzeugung essenziell ist. Demgemäß braucht es je nach 
Tonhöhe individuell verstimmte Tonhöhen und Anteile. Spinnt man das 
weiter gelangt man zum "Variable Harmonics Formant Synthesizer" BTDT.

Geht auch händisch mit DAW, schmalbandigen Stimmen und einer dynamischen 
Verstimmung der Layer. D.h. man spielt die Noten mehrfach mit 
unterschiedlich gestimmten Grundwellen auf anderen Oktaven.

von Testi (Gast)


Lesenswert?

supergrobi schrieb:
> Eine der Besselfunktionen tut das hervorragend.
Ist jemandem bekannt, ob das stimmt und wie man das macht?
Welche Besselfunktion erzeugt welche Oberwellen?
Oder war das ironisch gemeint?

von Audiomann (Gast)


Lesenswert?

Jürgen S. schrieb:
> Geht auch händisch mit DAW, schmalbandigen Stimmen und einer dynamischen
> Verstimmung der Layer. D.h. man spielt die Noten mehrfach mit
> unterschiedlich gestimmten Grundwellen auf anderen Oktaven.
Das sind aber keine Oberwellen im eigentlichen Sinn.

von Jürgen S. (engineer) Benutzerseite


Lesenswert?

Der Sinn war in diesem besonderen Fall aber tatsächlich, weitere 
Vielfache zu erzeugen, die nicht strikt mathematische 
Obertöne=Harmonische sind, sondern die "Echten", die sich real 
einstellen, um den Defiziten, oder sagen wir "Eigenheiten" natürlicher 
Schwingungen nahe zu kommen:

https://de.wikipedia.org/wiki/Mel
https://de.wikipedia.org/wiki/Streckung_(Musik)

Der Knackpunkt ist z.B. der, dass je nach Phasenlage der Schwingungen 
sich die Teilwellen zu immer anderen Amplitudenformen überlagern, diese 
lokale Spannungen in den Saiten bilden, die sich ihrerseits wieder 
ausbreiten und die Aufhängung (beim Klavier z.B. den Stimmstock) bewegen 
= "mit Energie versorgen", damit uneinheitlich passiert, was interessant 
ist, denn:

Die Art der Aufhängung mit 90°-Umleitung der Spannung generiert 
ihrerseits echte harmonische Oberwellen, weil sie auch bei idealem Sinus 
nur in einer Richtung gezogen wird und damit schon in ihrer Grundwelle 
die doppelte Frequenz erzeugt, nebst den daraus entstehenden Oberwellen 
und das so auch ins Holz abgibt. Da die Seite selber am Einspannpunkt 
auch bei einer theoretisch totalen Sinusschwingung schon nicht mehr 
sinusförmig zieht (Winkeleffekt) hat man praktisch an jeder Stelle eine 
Umverteilung von Grundschwingungsenergie in Oberwellenenergie.

von Jürgen S. (engineer) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hier ist so ein Fall mit nicht exakt passender dritter Oberwelle 
(absichtlich stark verstimmt). Die Signalform wechselt zwischen einem 
tendenziellen Rechteck und einem Dreieck.

von Jürgen S. (engineer) Benutzerseite


Lesenswert?

Und als weiteren Anreiz das hier: Obertöne nur in den Oktaven durch 
fortgesetzte Quadrierung:
Beitrag "Einstellbare S-Funktion auf der Basis von Quadrierungen"

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.