Hallo, ich habe mal mit Cool Edit (was in diesen Dingen recht wissenschaftlich-professionell ist) einen ziemlich schnellen logarithmischen Sinussweep erzeugen lassen. Dabei ist zu beobachten, dass die Amplitude stark schwankt, an einigen Stellen sind die Schwingungen deutlich schwächer als sonst. Ich denke, daß es sich dabei um Interferenz der aktuellen Schwingung mit der Abtastfrequenz handelt, es sind nämlich an diesen Stellen noch andere Frequenzen vorhanden. Besonders im Bereich bevor der Sweep die halbe Abtastfrequenz erreicht, ist eine zweite Schwingung mit entsprechend sinkender Frequenz zu sehen. Nach einer TP-Filterung ist die eigentliche Sweep-Frequenz dort entfernt, aber die genannten tiefen Frequenzen bleiben. Liege ich richtig mit der Interferenz-Erklärung? Gibt es Tricks wie ich das verhindere, damit ich einen perfekten Sweep bis zur halben Abtastfrequenz mit nahezu konstanter Amplitude und Mono-Spektral hinbekomme? (Schrecke auch vor Matlab nicht zurück...) Danke!
Moin... Nimmt die Amplitude zwischedurch _hörbar_ ab, oder _sieht_ man diese Einbrüche nur in der "Treppchendarstellung" des Wave-Editors? Letzteres ist völlig normal und wird durch das Rekonstruktionsfilter wieder korrigiert - jedenfalls bis auf pathologische Grenzfälle... Jens
Hallo AndyS, Das ist ein prinzipielles Problem: (bei Sweeps wandernde) Beatfrequenzen (siehe z.B. http://www.mother-of-tone.com/cd.htm), keins der Software, und das wurde ja auch schon mal diskutiert. Wenn Du SAUBERE Sinusformen (als schnelle Sweeps zumal) haben und hören willst, solltest Du auf mindestens das 10fache (ein bei mir in der Praxis bewährter Wert) der höchsten Nutzfrequenz als Samplingfrequenz gehen, also in dem Fall wohl 176.4kHz, damit es sich auch gut auf 44.1kHz downsamplen/dithern lässt, wodurch die die Beatfrequenzen etwas gemildert werden -- aber prinzipiell lassen sie nicht vermeiden bei zu kleiner Abtastrate. Ich habe mir für solche Zwecke ein kleines C-Programm (16-Bit DOS) geschrieben, mit denen ich solche log. Sweeps (16-bit WAVs) nach Belieben erzeugen kann: Startfrequenz, Endfrequenz, Dauer. Könnte ich mal für den Allgemeingebrauch soweit frisieren, dass man ohne Compiler alles bequem parametrieren kann, speziell auch die Samplerate. Besteht Bedarf? (Habe noch mehr so'ne Progrämmchen, z.B. für komplizierte Sinus-Burst-Folgen zur perfekten Raummoden-Analyse). Grüsse, Klaus S
Hallo Jens, ""Nimmt die Amplitude zwischedurch _hörbar_ ab, oder _sieht_ man diese Einbrüche nur in der "Treppchendarstellung" des Wave-Editors? Letzteres ist völlig normal und wird durch das Rekonstruktionsfilter wieder korrigiert - jedenfalls bis auf pathologische Grenzfälle..."" Das ist die Theorie, in der Praxis kann man sofort diese Beatfrequenzen bzw. Amplitudenmodulation sehen (auf dem Oszi am Analogausgang) und auch hören, je nach DA-Technik halt verschieden stark. Ich habe noch keinen DA-Wandler gemessen, bei dem das nicht massiv auftritt, wenn man über 1/10 oder 1/5 der Abtastfrequenz hinauskommt. Tatsächl exaktes Sampling und vor allem exakte Rekonstruktion gibt es leider nicht... nicht mal nicht der Theorie. Nur durch ausreichend hohe Samplerate kann man diese Probleme etwas lindern, ohne dass durch Optimierung eines Paramters eines DA-Wandlers gleich ein anderer stark leidet. Grüsse, Klaus S
Danke, jetzt seh ich etwas klarer. Danke auch fürs Angebot für ein C-Programm, ich habe aber leider derzeit keine C-Umgebung, nur Matlab. Falls Du sagen könntest, wie Dein Programm ungefähr arbeitet, kann ich versuchen es nachzubauen, das wäre sehr nett. Ansonsten denke ich an eine etwas längere Sinustreppe, bei tiefen f nur wenige Schwingungen, dann kann ich für konstante Amplitude sorgen. Ausserdem weiss ich dann genauer, an welcher Stelle im Testsignal ich welche Frequenz habe. Sollte ich noch über jede Stufe eine Hamming-Hüllkurve legen, um den Einschaltimpuls zu minimieren? Viele Grüsse
Moin... "Das ist die Theorie, in der Praxis kann man sofort diese Beatfrequenzen bzw. Amplitudenmodulation sehen (auf dem Oszi am Analogausgang) und auch hören, je nach DA-Technik halt verschieden stark." Ja, da gebe ich dir halbwegs recht. Ich stehe ja auch auf dem Standpunkt, dass die Theorie so einiges verspricht, was die praktische Umsetzung meist nicht (ganz) hält. Dennoch (ich kenne auch die Analogmessungen) sind die Beatfrequenzen zwar noch auf dem Scope sichtbar, aber das sind "Restwelligkeiten" von einigen % die da übrigbleiben; mithin auf einer logarithmischen Skala (dB) vernachlässigbar kleine Werte. Jedefalls, solange man sich nicht der Samplingfrequenz detlich nähert. Ein 19kHz-Ton bei CD-Format "beatet" da noch ganz schön, der 11kHz-Ton schon nur noch gerade sichtbar... "Tatsächl exaktes Sampling [...] gibt es leider nicht..." Nun, zumindest DIESES Problem haben wir hier ja nicht. ;) "nicht mal nicht der Theorie." DAS musst du mir erklären... Ich stimme mit dir völlig überein, dass die Anforderungen an ein "mathematisch exaktes" (so wie bei Shannon) Sampling in der Praxis auch mit größten Mühen gar nicht geht (da steht die Physik im Weg), aber in der Theorie ist das schon alles exakt... "Nur durch ausreichend hohe Samplerate kann man diese Probleme etwas lindern, ohne dass durch Optimierung eines Paramters eines DA-Wandlers gleich ein anderer stark leidet." Wie sagt man so schön? "Viel hilft viel" - das ist sicher bei Samplingrate ein wahres Wort, auch wenn wir "nur" über Oversampling reden. Das allerdings schafft einem schon den Großteil der Probleme vom Hals... Man müsste sich allerdings nochmal überlegen und evtl. durchrechnen, inwieweit man das spätere Oversampling bei KÜNSTLICH (auf digitaler Ebene) erzeugten Signalen berücksichtigen muss, weil das Rekonstruktionsfilter ja nun doch anders aussieht... Da bin ich aber so spontan dann auch überfragt. Jens
Hallo Jens, Sorry, da habe ich mich unklar ausgedrückt: Es ging mir um die physikalische Theorie (des Wandler/Filter-Baus), nicht im die mathematische -- die ist natürlich exakt. Wegen der vorkommenden Unendlichkeiten ist sie aber physikalisch nicht exakt umsetzbar. Ähm, das "Sampling" findet auch bei der Generierung statt, denn (m)ein Programm nimmt ja auch zeitlich gequantelte Punkte mit diskreten Werten auf, halt von einem virtuellen Signal, dem zeit und wert-kontinuierlichen Sinus(-Sweep): Kleiner Auszug des Rechenkerns: x=0.0; for (dword s=0; s<isamples; s++) { // all samples f = fstart * XexpY(fratio, s/samples); // determine frequency of sample x += f/srate; // next angle to derive a sample from, this of course accumulates some error write_sample(32760.0*sin(2.0 * M_PI * x)); //scale to almost 16-bit 0dBFS } // for all samples
Und, Oversampling ist genau so ein zweischneidiges Optimierungsschwert für DA-Wandler wie ich vorhin meinte... Grüsse, Klaus S
Moin... "Sorry, da habe ich mich unklar ausgedrückt: Es ging mir um die physikalische Theorie (des Wandler/Filter-Baus), nicht im die mathematische -- die ist natürlich exakt. Wegen der vorkommenden Unendlichkeiten ist sie aber physikalisch nicht exakt umsetzbar." ACK. "Ähm, das "Sampling" findet auch bei der Generierung statt, " Das schon, aber eben kein Oversampling. Es wäre wirklich mal interessant, sich zu überlegen, wie sich das auf solche "pathologischen" Signale auswirkt, die erst dann wieder "richtig" (vor allem mit richtiger Amplitude und ohne Beat) am Ende rauskommen, wenn das Rek.-Filter greift. Denn da könnte sich das Oversampling tatsächlih negativ auswirken. Ich sage bewusst "könnte", denn das müsste man wohl tatsächlich mal aufschreiben, um das beurteilen zu können. Das alles ist aber auch wenig relevant für "echte" Musiksignale, wo solche konstruierten "Fallen" nicht vorkommen. Jens
Hallo Andy, ""Ausserdem weiss ich dann genauer, an welcher Stelle im Testsignal ich welche Frequenz habe. Sollte ich noch über jede Stufe eine Hamming-Hüllkurve legen, um den Einschaltimpuls zu minimieren?"" In meinem Codefragment weiss man bei jedem Sample die genaue Frequenz. Ich habe mir auch diese ausgeben lassen, zur Kontrolle und zum Debugging. Als Hüllkurve für die Ränder kann ich Cosinus empfehlen, das gibt am wenigsten Modulations-Mischprodukte. Grüsse, Klaus S
Hallo Jens, Ich habe schon Oversampling-Methoden in DSPs programmiert... und es funktioniert eben nicht richtig (im Sinne einer originalgetreuen Reproduktion): Es werden Daten erzeugt, die es nicht wirklich gibt und deren Werte man nicht kennt, nämlich diese Zwischensamples. Selbst mit aufwändigen Interpolationsmethoden und aufwändigen Digitalfiltern gibt es kein Ergebnis, dass einer echten hohen Samplerate nahekommt. Oversampling ist im Prinzip ein billiger Ingenieurstrick, damit man das Rekonstruktionsfilter überhaupt vernünftig (d.h. vor allem kostengünstig) bauen kann, indem ein Grossteil der Filterung bereits digital gemacht wird. Wozu man aber eine deutlich höhere Samplerate braucht, damit das Digitalfilter sich seinerseits realisieren lässt. Wozu man also Zwischensamples AUF VERDACHT interpolieren muss... Aber auch ein so kombiniertes Rekonstruktionsfilter bei 1/2 fs (der original Samplerate) hat seine eigenen prinzipiellen Probleme. Mein Fazit: Nur mit durchgehend hohen Sampleraten und gutmütigen Analogfiltern (Bessel-TP) kommt man zu einem einigermassen exakten Signal... wenn man es braucht. Grüsse, Klaus S
@Klaus S. "Ich habe schon Oversampling-Methoden in DSPs programmiert... und es funktioniert eben nicht richtig (im Sinne einer originalgetreuen Reproduktion): Es werden Daten erzeugt, die es nicht wirklich gibt und deren Werte man nicht kennt, nämlich diese Zwischensamples. Selbst mit aufwändigen Interpolationsmethoden und aufwändigen Digitalfiltern gibt es kein Ergebnis, dass einer echten hohen Samplerate nahekommt." Klingt nach einer üblichen Approximation. Die Genauigkeit vom Original nimmt um so mehr ab, je weiter man vom "Stützpunkt" entfernt ist. "Oversampling ist im Prinzip ein billiger Ingenieurstrick, damit man das Rekonstruktionsfilter überhaupt vernünftig (d.h. vor allem kostengünstig) bauen kann, indem ein Grossteil der Filterung bereits digital gemacht wird. Wozu man aber eine deutlich höhere Samplerate braucht, damit das Digitalfilter sich seinerseits realisieren lässt. Wozu man also Zwischensamples AUF VERDACHT interpolieren muss... Aber auch ein so kombiniertes Rekonstruktionsfilter bei 1/2 fs (der original Samplerate) hat seine eigenen prinzipiellen Probleme." Als billig würde ich diesen "Trick" nicht bezeichnen. Immerhin bekommt man brauchbare Ergebnisse, wenn man nicht korrekt messen kann (aus welchen Gründen auch immer). Wenn es aussehen soll wie "Handgemalt" dann nimm Akima Splines.