Wie kann ich einem Signal in software testweise (kontrolliert)
Oberwellen hinzufügen?
Wie verhält es sich mit der dafür nötigen Abtastfrequenz, dass diese
auch noch sinnvoll dargestellt werden können? (durch die Harmonischen
erweitert sich das Spektrum).
Zur Basiswelle passende Oberwellen sind immer Vielfache der
Grundfrequenz - also Frequenzverfielfacher einsetzen.
JBB schrieb:> Wie verhält es sich mit der dafür nötigen Abtastfrequenz
Gute Frage, die müsste gfs steigen, wenn Oberwellen hinzugefügt werden,
die oberhalb Nyquist-Halbe liegen. Sage ich jetzt mal.
Horst schrieb:> Zur Basiswelle passende Oberwellen sind immer Vielfache der> Grundfrequenz - also Frequenzverfielfacher einsetzen.
Da in der Software der Grundwellensinus auch irgendwo herkommen muß,
wird es doch auch ein Leichtes sein, die Oberwellen zu generieren und
mit passender Amplitude zu überlagern.
Und nicht vergessen: Weiter als f < f_a/2 funktioniert es nicht ;-)
Mein Problem ist auch ein Inhaltliches, nämlich wie füge ich passende
Harmonische hinzu. Meine Grundwelle ist von der Frequenz variabel - ich
bekomme auch nicht nur obertonfreie Signale.
Z.B. könnte ein Dreieck oder auch ein Rechteck kommen. Dann bräuchte ich
schon zu allen enthaltenen Freuqenzen die Oberwellen.
Mir ist klar, dass da was abgeschnitten wird, aber resampeln wäre kein
Problem.
Wenn Du nur Sinuswellen 'andicken' müsstest, würde ich es erst mal mit
Chebychev-Polynomen versuchen.
Bei anderen Wellenformen könntest Du es evtl. waveshapen, d.h. mit einem
Soft-Clipper. Z.B. tanh oder cubic (y = x - x^3) oder y = x * (2 - fabs
(x)). Ist das clipping symmetrisch, bekommst Du ungeradzahlige
Harmonische (k3, k5, k7..), bei einem asymmetrischen Clipper hast Du k2,
k3, k4, k5, k6..
Musst natürlich Nyquist beachten, ist klar.
> Wie kann ich einem Signal in software testweise (kontrolliert)> Oberwellen hinzufügen?> Wie verhält es sich mit der dafür nötigen Abtastfrequenz, dass diese> auch noch sinnvoll dargestellt werden können? (durch die Harmonischen> erweitert sich das Spektrum).
Du nimmst dein Signal und führst eine FFT durch. Wählst Frequenzen aus
und verdoppelst oder verdreifachst oder was-auch-immer-fachst diese.
Danach führst du eine inverse FFT durch. Fertig ist die Laube.
Sascha schrieb:> y = x - x^3
Hoppla: y = x - (x^3)/3 meinte ich.
Am besten skalierst Du für Clipping-Versuche den Wertebereich so, dass
Du -1 bis 1 float bekommst.
Was mir noch einfiele: neu triggern, also das übliche Spiel:
Nulldurchgänge tracken und Sinusoszillator doppelter Frequenz damit
füttern.
Sascha schrieb:> würde ich es erst mal mit> Chebychev-Polynomen versuchen.
Klingt aufwändig, ich probiere es mal.
FFT kommt nicht in Betracht, zu langsam. Ich brauche das mehr oder
weniger in Echtzeit.
JBB schrieb:> Sascha schrieb:>> würde ich es erst mal mit>> Chebychev-Polynomen versuchen.> Klingt aufwändig, ich probiere es mal.>> FFT kommt nicht in Betracht, zu langsam. Ich brauche das mehr oder> weniger in Echtzeit.
Hast du Audiosignale? Dann ist das kein Problem, das macht jeder PC
locker nebenher. Auch ein DSP kann das ganz gut. FFT ist ziemlich
effizient.
Wenn du dagegen im Megahertzbereich unterwegs bist, wird´s schwieriger.
Für Sinussignale könnte auch noch Quadrieren und dann mittelwertfrei
machen in Frage kommen.
sin(wt) -> d(w)
sin²(w) -> d(w) * d(w) [* als Faltungsoperator] = d(0) + d(2w)
Die FFT erscheint mir aber am vernünftigsten.
Max
> FFT kommt nicht in Betracht, zu langsam. Ich brauche das mehr oder> weniger in Echtzeit.
Kommt auf dein Signal an und den Controller oder den DSP. Berichte bitte
näheres.
Ein DSP wird es werden - und es muss schon sozusagen in Echtzeit sein.
Datenrate geschätzt 1MHz. Vor allem wenig rechnerei. FFT geht auf keinen
Fall.
Max G. schrieb:> Für Sinussignale könnte auch noch Quadrieren und dann mittelwertfrei> machen in Frage kommen
Das geht nur für Sinus?
Mein Signal hat aber schon Oberwellen ...
JBB schrieb:> Ein DSP wird es werden - und es muss schon sozusagen in Echtzeit sein.> Datenrate geschätzt 1MHz. Vor allem wenig rechnerei. FFT geht auf keinen> Fall.
Was ist eine Datenrate von 1 MHz? Bandbreite? Abtastfrequenz? 1 MBit/s?
Welche Bandbreite hat dein Eingangssignal, mit wieviel Bit tastest du
ab?
Du kannst im Eingangssignal Unterabtastung machen, das reduziert den
Aufwand schon mal. "Auf keinen Fall FFT" ist mir noch, ähem, theoretisch
zu wenig unterfüttert.
Max
>Was ist eine Datenrate von 1 MHz?
1 Wort je Microsekunde (?)
> Abtastfrequenz? 1 MBit/s?
1 MSPS!
Der DSP sollte schon 1 Datenwert je Sekunde verarbeiten / erzeugen
können. Ich bin aber inzwischen fünfig geworden :-)
Heinz schrieb:> Du nimmst dein Signal und führst eine FFT durch. Wählst Frequenzen aus> und verdoppelst oder verdreifachst oder was-auch-immer-fachst diese.> Danach führst du eine inverse FFT durch. Fertig ist die Laube.
Wie soll dieses "verdoppeln" ausehen? Viel einfacher geht das Hinzufügen
von Harmonischen im Zeitbereich durch eine nichtlineare Kennlinie.
Andreas Schwarz schrieb:> Wie soll dieses "verdoppeln" ausehen?
Ich denke, er meint, dass man das gemessene Spektrum nimmt, verschiebt
und die beiden dann überlagert.
Heinz schrieb:>> Ich bin aber inzwischen fünfig geworden> Wie wirst du es lösen?
Ich werde die eingehenden Daten Potenzieren.
Andreas Schwarz schrieb:> Viel einfacher geht das Hinzufügen> von Harmonischen im Zeitbereich durch eine nichtlineare Kennlinie.
Und an welcher?
Wie kontrolliert man, dass man nur bestimmte Frequenzen, Anteile und
Vielfache bekommt?
Oberwellen produziert jede nichtlineare Funktion. Welche Wellen brauchst
du denn?
Die kannst Du doch addieren und die Summe untersuchen. Dann hast Du
Deine Kennlinie, die du nur zu approximieren brauchst.
Max G. schrieb:> Für Sinussignale könnte auch noch Quadrieren und dann mittelwertfrei> machen in Frage kommen.
Das funktioniert nur, wann die Kurven absolut symmetrisch zur X-Achse
liegen. Ich habe das seinerzeit für meine Tongeneratoren genutzt. Wenn
man einen Sinus einspeist, der exakt aufs Bit genau passt, geht es gut.
Die Formeln für die einzelnen Oberwellen kann ich bei Gelegenheit mal
posten. Sie sind hier in diesem Projekt eingeflossen:
http://www.mikrocontroller.net/articles/Digitaler_LaPlace-Funktionsgenerator_im_FPGA
warm klingenden Oberwellen erzeugt z.B. eine Triode durch ihre
Kennlinie, die nicht linear ist, sondern f(x) = x^(3/2). Damit wird
asymmetrisch begrenzt oder mehr bildlich, ein Sinus wird zum Sägezahn.
Sowas geht natürlich auch in Software.
ach ja, die warmen und kalten Oberwellen. Die gute alte Mär der
Audiotechniker. Die Röhren erzeugen ihren Klang hauptsächlich dadurch,
dass sie dem Signal nicht hinterher kommen.
JBB schrieb:> Die Röhren erzeugen ihren Klang hauptsächlich dadurch,> dass sie dem Signal nicht hinterher kommen.
Ah, ja. Und was soll das sein? Tiefpass durch Miller-Kapazität?
Eine hochwertige NF-Triodenschaltung geht locker weit über den
Hörbereich hinaus. Oft ist es eher der Ausgangsübertrager (sofern
Impedanzanpassung erforderlich), der den Frequenzbereich beschneidet.
Der ist i.d.R. ein Kompromiss aus Wicklung, Material, magn.
Eigenschaften, Hysteresekurve etc.; ist er zu groß, gehen die Höhen
flöten; ist er zu klein, fehlen die Bässe.
Für mittel-/hochohmige Preamps gilt das aber nicht. Da kann die Röhre
ihre Klasse ausspielen und ggf. sogar schneller und 'cleaner' sein als
ein Transistor.
Sofern im Grenzbereich der Kennlinie betrieben:
Eine Class-A-Beschaltung produziert durch die grundsätzlich
asymmetrische Kennlinie neben ungeradzahligen Harmonischen (k3, k5,
k7...) auch geradzahlige (k2, k4..).
Zu hören z.B. bei einem Sägezahn; k2, k3, k4, k5 usw. fallen
exponentiell ab. Wobei ein so hoher geradzahliger Anteil in einem
komplexen Signal eher topfig-verwaschen klänge; dort sollten k2, k4 etc.
eher geringer gewichtet sein.
Eine symmetrische Verstärkung produziert nur ungeradzahlige Harmonische.
Siehe Rechtecksignal: nur k3, k5, k7 etc.
Einfach mal einen Frequenzgenerator oder Synth-Oszillator anwerfen und
selber hören. Die eine Wellenform klingt 'warm', die andere eher 'hohl',
bei gleicher Intensität der ungeradzahligen Harmonischen.
@JBB:
ich schreibe ja nicht, daß die geradzahligen Harmonischen nur aus
glimmenden Glaskolben stammen können, sondern warum sie entstehen. Und
so (fast) eine Kennlinie haben auch JFET's, weil die von der
Arbeitsweise sehr änlich funktionieren. Elektronen sehen keinen
Unterschied zwischen einem Halbleitergitter und sporradisch
herumfliegenden Gas-Atomen im Fast-Vacuum. Sie halten sich an die
Steuerung per elektrischem Feld, was im Vaccum zur x^(3/2) und bei
Halbleiter-Röhren zur x^2 Kennlinie führt. Ein BJT hat dagegen eine e^x
förmige Uein/Iaus Kennlinie.
Wie auch immer man zum sich ergebenden Klang steht, nicht das Material
sondern der Aufbau macht den Unterschied.
Es gibt auch DSP sourcen im Netz, die genau so eine Quadratische
Kennlinie benutzen.
http://www.spinsemi.com/knowledge_base/pgm_quick.html#Cube%20Distortion:
Horst schrieb:> Es gibt auch DSP sourcen im Netz, die genau so eine Quadratische> Kennlinie benutzen.> http://www.spinsemi.com/knowledge_base/pgm_quick.h...
Hab's nicht geplottet, aber ist das nicht das gleiche wie
y = (x - x^3/3) * 1.5 ?
Das zumindest wäre ein Standard-Clipping wie etwa in einem Übetrager,
überwiegend k3 & k5.
Wichtig wäre nur, das Signal vorher, oder am besten währenddessen, hard
auf -1 und 1 zu begrenzen. Ansonsten landet man bei foldover distortion.
Also etwa:
Sascha schrieb:> JBB schrieb:>> Die Röhren erzeugen ihren Klang hauptsächlich dadurch,>> dass sie dem Signal nicht hinterher kommen.> Ah, ja. Und was soll das sein? Tiefpass durch Miller-Kapazität?
Thermische Trägheit! In hochwertigen R-Mikrofonen wird der Heizfaden
geregelt, wodurch es zu einem Kompressionsverhalten kommt. Dieser
(eigentlich aus der Anfangszeit der Röhrenmikros stammende) Effekt
erzeugt im Signal Artefakte, die man aufgrund der Erkenntnis, dass so
aufgenommene Tonsignale interessant klingen, belassen hat. Es gibt also
einen künstlichen Trägheitseffekt, der das Anwachsen der
Oberwellenanreicherung bei hohen Signalamplituden begrenzt. zudem sind
sie gezielt bandbreitenbegrenzt. Mikrofonamps sind also gezielt
"schlecht" gebaut - reine Verstärkerschaltungen wie man sie als
Freifeldsender verwendet(e), haben freilich andere Ansprüche. Dies zu
balancieren ist die Kunst des guten Mikrobaus.
>Da kann die Röhre ihre Klasse ausspielen
Kann sie, soll sie aber nicht
> und ggf. sogar schneller und 'cleaner' sein
kann sie, tut sia aber nur gegen Standard-HL-Stufen. Die Mär der guten
Röhre, ihrer Rauschfreiheit etc. ist messtechnisch hinlänglich
widerlegt. An einen guten GaAs-MOS-Fet -basieren PreAmp kommt keine noch
so gute Röhre ran, wenn man es auf Sauberkeit anlegt. Genau deshalb
findet man auch in Applikationen, wenn es um's Messen geht, nirgendwo
mehr eine Röhre, auch nicht in Apps, wo Geld keine Rolle spielt und man
jede Woche Röhren tauschen könnte, wenn nötig.
"Röhren sind die 'Bachblüten' der Audiophilen"
JBB schrieb:> Thermische Trägheit! In hochwertigen R-Mikrofonen wird der Heizfaden> geregelt, wodurch es zu einem Kompressionsverhalten kommt.
Und wenn er nicht geregelt wird, was dann?
Du sprichst vom künstlich verschlechtern. Das ist aber nicht immer
erwünscht.
Immer, wenn in der Audiotechnik Röhren im Spiel sind, ist das
Verschlechtern erwünscht.:-)
Es gibt 2 Gründe, warum da (immer noch) Röhren eingesetzt werden, um
Klänge zu manipulieren:
1) Der Kunde meint, dass das besser klingt und verlangt danach.
Ausserdem wird es ja angeboten. Also muss es gut sein.
2) Der Toningenieur meint, dass es besser klingt.
Ausserdem verlangen die Kunden ja danach. Also muss es rein.
Da zwischen 1) und 2) eine permanente Rückkopplung besteht, die durch
die Weitergabe von Halbwissen kräftigst unterhalten und genährt wird,
bleibt der Kreislauf aktiv. :-)
Wer sauberen Klang produziert, guckt dann wörtlich in die Röhre :-)