Zunächst, der Einfachheit halber normalisiere ich hier eine Halbwelle
auf den bereich 0<t<1, statt auf 0<t<π, das finde ich intuitiver.
Ich brauche eine mathematische Funktion, mit der viele Wellenformen
abdecken kann. Etwas vergleichbar zu dieser JS Funktion, aber halt als
Formel:
https://jsfiddle.net/nk5tufm8/
Eine Welle (-1<t<1) genügt schon. Eventuell komme ich auch mit einer
Halbwelle aus, wäre aber nicht unbedingt ideal.
Ich brauche etwas, womit ich ungefähr die gleichen Wellenformen abdecken
kann. Aber vor allem brauche ich etwas simples, das ich noch weiter
umformen kann.
Es sollte auch nicht noch komplexere Wellenformen zulassen. Eigentlich
will ich am Ende eine art Frequenzanalyse eines bestehenden Audiosignals
machen,
aber eine, wo ich auch die Wellenform abschätzen kann. Ich weiss, das
wird nicht gut funktionieren, aber das muss es auch nicht. Und würde ich
die Wellenform gar nicht einschränken,
könnte ich gar keine Frequenzinformationen mehr isolieren.
Die Einschränkung hier ist übrigens, dass es pro Halbwelle nur eine
Spitze gibt, und dass, wenn man den Teilbereich zwischen den Spizen
anschaut, dieser invertierbar ist.
Ohne die Asymetrie (in der JS Funktion oben die Variable peak), könnte
ich das ja noch umsetzen:
Wobei, mit der sign funktion wird das umformen schwieriger, und ohne hab
ich nur eine Halbwelle, was zwar auch noch genug sein sollte, aber dann
fehlt immernoch die Asymmetrie. Und mit dem modulo wird das Umformen
auch nicht leichter.
Hat da jemand eine Idee für eine möglichst simple Formel, die diese
Anforderungen erfüllt?
Hm, wenn du möglichst alle beliebigen Wellenformen erzeugen können
möchtest, dann wäre doch die Summierung verschiedener Frequenzen mit
unterschiedlichen Amplituden was. Klar, das liefert keinen perfekten
Rechteck oder Sägezahn, kommt aber schon bei wenigen Frequenzen die
addiert werden recht nahe ran.
Gustl B. schrieb:> Hm, wenn du möglichst alle beliebigen Wellenformen erzeugen können> möchtest, dann wäre doch die Summierung verschiedener Frequenzen mit> unterschiedlichen Amplituden was. Klar, das liefert keinen perfekten> Rechteck oder Sägezahn, kommt aber schon bei wenigen Frequenzen die> addiert werden recht nahe ran.
Das muss ich mir erst noch genauer ansehen. Wenn die Wellenform wirklich
absolut beliebig ist, funktioniert was ich vorhabe nicht mehr, ich
müsste also schauen, wie und wie Stark ich das einschränke.
Andererseits, wenn ich das Signal sowieso aus Sinuswellen zusammensetze,
und ich eine Frequenzanalyse mache, macht es eventuell mehr Sinn, wenn
ich statt dem was ich vor hatte einfach gleich eine normale wavelet
transformation oder eine FT mache, und versuche daraus danach
abzuschätzen, welche Wellenformen involviert waren. Wäre aber auch nicht
trivial.
Was ich mir auch noch nicht richtig überlegt hatte ist, wann 2
Wellenformen überhaupt gleich sind. Man könnte meinen, einfach wenn sie
gleich aussehen, das scheint aber keine wirklich Sinnvolle
Betrachtungsweise zu sein. Wenn man sich z.B. die 2 Wellen bei dem
Thread hier ansieht:
https://dsp.stackexchange.com/questions/48873/how-to-rotate-the-phase ,
das sind eigentlich beides normale Rechteckwellen, zumindest hören sie
sich gleich am, die 2te ist einfach 90 Grad rotiert.
Ich muss meinen Ansatz nochmal in ruhe überdenken...
Daniel A. schrieb:> Was ich mir auch noch nicht richtig überlegt hatte> ist, wann 2 Wellenformen überhaupt gleich sind. Man> könnte meinen, einfach wenn sie gleich aussehen,
Wenn sie durch Ähnlichkeitsabbildungen (Stauchung oder
Streckung in Amplitudenrichtung; Translation in Zeit-
richtung) zur Deckung zu bringen sind.
> das scheint aber keine wirklich Sinnvolle Betrachtungsweise> zu sein.> Wenn man sich z.B. die 2 Wellen bei dem Thread hier ansieht:> https://dsp.stackexchange.com/questions/48873/how-to-rotate-the-phase ,> das sind eigentlich beides normale Rechteckwellen,
Nur zu meiner Klarheit: Wir sprechen von den Wellen,
die ich als Bild hier angehängt habe?
Das eine ist ganz sicher KEINE Rechteckwelle.
> zumindest hören sie sich gleich am, die 2te ist einfach> 90 Grad rotiert.
Das Gehör ist kein taugliches Messinstrument. Es gilt das
Ohmsche Gesetz der Akustik: Zwei (periodische) Wellen
klingen für den Menschen gleich, wenn die Amplituden der
Teiltöne übereinstimmen.
Die Wellenform wird aber durch Amplitude UND Phase der
Teiltöne diktiert. Die Abbildung zwischen Betragsspektrum
und Zeitfunktion ist nicht bijektiv.
> Ich muss meinen Ansatz nochmal in ruhe überdenken...
Ja :)
Vielleicht mal das hinterliegende Problem beschreiben.
Egon D. schrieb:> Nur zu meiner Klarheit: Wir sprechen von den Wellen,> die ich als Bild hier angehängt habe?
Ja
Egon D. schrieb:> Daniel A. schrieb:>> Ich muss meinen Ansatz nochmal in ruhe überdenken...>> Ja :)> Vielleicht mal das hinterliegende Problem beschreiben.
Ich weiss noch nicht, was ich damit später mal machen werde. Ich will
vor allem etwas herum experimentieren, und schauen, was dabei heraus
kommt.
Worum es mir bei der ganzen Geschichte vor allem geht, ist, wenn ich
irgendeinen Song nehme, das in ein Format zu bringen, mit dem ich
möglichst einfach Aussagen über diesen machen kann, diesen eventuell
auch verändern kann. Ich will die Daten quasi in eine Intuitiv
verständliche Form bringen. Wenn man ein paar Rechteck oder
Sägezahnwellen hört, will ich nicht sehen, in welche Sinuswellen man das
unterteilen könnte, ich will effektiv sehen, da waren vermutlich diese
Töne mit dieser Wellenform. Ein bisschen wie Audiosignal zu MIDI quasi,
nicht ganz so Extrem, aber in die Richtung. Quasi, gegeben ein paar
simple mögliche Wellengrundformen, was ist das Minimum an Tönen /
Komponenten, mit denen man das Signal reproduzieren kann. Deshalb wollte
ich zuerst mal die simplen möglichen Wellengrundformen festlegen.
Daniel A. schrieb:> Hat da jemand eine Idee für eine möglichst simple Formel, die diese> Anforderungen erfüllt?
Für eine Rechteck - Schwingung kann ich Dir eine geschlossene Funktion
anbieten.
(siehe Anhang)
Ich bin mir nicht sicher ob das überhaupt eine partielle Lösung ist, da
ich zugeben muss das Problem nicht mal im Ansatz verstanden zu haben.
Für die oben verlinkten Bilder
https://dsp.stackexchange.com/questions/48873/how-to-rotate-the-phase
gibt es den Suchbegriff: Hilberttransformation.
Ich bin in letzter Zeit nicht dazu gekommen, hier goss weiter zu machen.
@R. M.
Diese Rechteck Funktion ist sehr interessant. Dass ich nicht selbst
darauf gekommen bin, die floor Funktion zu nehmen. Das kann man ja wie
ein if else verwenden. Damit kann ich den Code oben in Teilfunktionen
zerlegen, und damit die relevanten Teile zusammensetzen:
Es ist erstaunlich, wie gut man schon die kleinsten Abweichungen zu
einer sauberen Sinuswelle hören kann. Für
gibt es nur etwa ±1.354% Abweichung, und trotzdem tönt es komplett
anders! (Soundfiles im Anhang).
Auch interessant ist, wenn man sich erst a anhört, tönt es wie 1 Ton,
aber nachdem man sich b und c anhört, hört sich a wie 2 Töne an!