Ankündigung

Einklappen
Keine Ankündigung bisher.

Signalfaltung in der zeitlichen Dimension

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Pansen
    Registrierter Benutzer
    • 12.04.2009
    • 1494

    Signalfaltung in der zeitlichen Dimension

    Hey Leute,

    allgemein liest man ja nicht soviel über Convolving (mich würden die genauen Prozesse dahinter ja mal interessieren, vor allem was halt genau mit dem Musiksignal und dem Filter passiert und wie der eingesetzt wird).

    Folgendes Problem konnte ich noch nicht lösen: ich habe an meiner Anlage ein Stage Piano angeschlossen, welches sehr gute Sounds hat. Leider kann ich das wegen dem zeitlichen Aspekt nicht falten, weil das Signal halt viel zu spät wiedergegeben wird. Gibt es eine Möglichkeit, die Berechnung zu beschleunigen? Meinetwegen nur eine geringe Verzögerung?
    boxsim-db.de - Datenbank für Boxsim-Projekte
  • Violoncello
    Registrierter Benutzer
    • 11.07.2010
    • 641

    #2
    Zwei Dinge führen hauptsächlich zur Verzögerung:

    -> nichtkausale Impulsantworten, wie sie z.B. beim Erstellen von linearphasigen Filtern entstehen. Da es "nichtkausal" im echten Leben nicht gibt, wird die Impulsantwort durch Zeitverzögerung kausal gemacht. Wenn man die Linearphasigkeit, Echounterdrückung oder whatever beibehalten will, muss man damit leben.

    -> blockweise Verarbeitung bei schneller Faltung. Viele Convolver arbeiten mit schneller Faltung, führen die Faltung also blockweise über FFT und iFFT im Frequenzbereich durch, was enorm Rechenaufwand spart - leider zum Preis einer Verzögerung um mindestens eine Blocklänge. Wenn dein Convolver schnelle Faltung anwendet, kannst du die Blockgröße reduzieren, oder einen Convolver ganz ohne schnelle Faltung verwenden, und damit die Verzögerung zum Preis erhöhten Rechenaufwands reduzieren.

    Meine Einschätzung: Musizieren mit nichtkausalen FIR-Filtern wird kaum möglich sein, schon wenige Millisekunden reichen aus um das Spielgefühl zu beeinträchtigen. Erstell dir doch ein Setup mit IIR-Filtern bzw. kausalen FIR-Filtern für Anwendungen bei denen die Latenz relevant ist.

    Kommentar

    • Pansen
      Registrierter Benutzer
      • 12.04.2009
      • 1494

      #3
      Danke für Antwort, die Punkte sind sehr einleuchtend.

      Gut eine einfache Frage, dessen Antwort wahrscheinlich komplex ist Ich habe Acourate, wie kann ich entsprechende Ergebnisse mit einem ähnlichen Ergebnis erzeugen? Grundprinzipiell geht es NUR um Equalizing (Raummoden, ...). In meinem Interface gibt es auch eine EQ-Effektsektion ohne Verzögerung. Diese bietet aber selbstverständlich nicht die Genauigkeit von Acourate und muss genau eingestellt werden, worauf ich keine Lust habe.
      boxsim-db.de - Datenbank für Boxsim-Projekte

      Kommentar

      • Violoncello
        Registrierter Benutzer
        • 11.07.2010
        • 641

        #4
        Ich habe acourate selbst nie hergenommen, aber wenn ich der Programmierer wäre, würde ich eine Option zur Erstellung minimalphasiger Filter anbieten - die wären dann schön kausal.

        Und was den acourate-eigenen Concolver angeht, hab ich keine Ahnung ob der schnelle Faltung verwendet oder nicht...

        Für dein Interface nimmst du sowieso ASIO-Treiber? Auch da kann man an der Latenz tweaken.

        Kommentar

        • Pansen
          Registrierter Benutzer
          • 12.04.2009
          • 1494

          #5
          Ich muss mir das mal ansehen in Acourate.

          Ich arbeite ausschließlich unter Linux mit der RME Fireface UCX im Class Compliant Mode. Die Latenz beträgt etwa 2 Sekunden wegem dem Audioserver und der Faltung. Es arbeiten Jackd und der jconvolver. Bei letzterem kann man einen Wert für Partitionen eingeben, falls du das meinst.

          # in out partition maxsize
          # ---------------------------------------------
          /convolver/new 2 2 1024 250000

          Geht da noch was?
          boxsim-db.de - Datenbank für Boxsim-Projekte

          Kommentar

          • Violoncello
            Registrierter Benutzer
            • 11.07.2010
            • 641

            #6
            Jconvolver is a Convolution Engine for JACK, based on FFT convolution and using non-uniform partition sizes: small ones at the start of the IR and building up to the most efficient size further on. It can perform zero-delay processing with moderate CPU load.
            von: http://kokkinizita.linuxaudio.org/linuxaudio/

            Benutzt also tatsächlich schnelle Faltung, jedoch trickreich, um die Latenz zu verringern. In der Dokumentation sollte stehen, wie du das zero-delay processing erreichst. Rechenpower wird ja vermutlich nicht das Problem sein.

            Erreichst du denn annehmbare Latenzen, wenn du das Signal in jack einfach durchschleifst? Nur um sicher zu gehen, dass du da nicht auf Treiberseite in ein Limit rennst.

            Kommentar

            • ropf
              Registrierter Benutzer
              • 03.12.2013
              • 841

              #7
              Zitat von Pansen Beitrag anzeigen
              Hey Leute,

              allgemein liest man ja nicht soviel über Convolving (mich würden die genauen Prozesse dahinter ja mal interessieren, vor allem was halt genau mit dem Musiksignal und dem Filter passiert und wie der eingesetzt wird).
              Das ist im Prinzip sehr einfach:

              -multipliziere das aktuelle Sample des Sinals mit dem 1.Sample des Filters
              -multipliziere das vorletzte Sample des Signals mit dem 2. Sample des Filters
              -multipliziere das vorvorvorletzte Sample des Signals mit dem 3. Sample des Filters
              -... usw., bis der Filter vollständig durchlaufen ist
              -summmiere das Ganze auf und gib das Ergebnis aus
              -hole das nächste Signalsample und wiederhole das Ganze
              ...
              Wie man leicht sieht, steigt der Rechenaufwand mit Samplerate und Filterlänge sehr stark.

              Kommentar

              • ropf
                Registrierter Benutzer
                • 03.12.2013
                • 841

                #8
                Der Tipp mit den minimalphasigen Filtern ist schon richtig - aber minimalphasig geht auch mit IIR, mit SEHR viel weniger Rechenaufwand und Latenz.

                Raummoden bekommst du mit einem paremetrischen EQ sehr gut weg.

                Btw. - Audyssey & Co korrigieren auch nur minimalphasig

                Kommentar

                • Nightingale
                  Registrierter Benutzer
                  • 15.05.2009
                  • 733

                  #9
                  Mit Acourate kann man auch minimalphasige Filter erstellen

                  Kommentar

                  • Pansen
                    Registrierter Benutzer
                    • 12.04.2009
                    • 1494

                    #10
                    Ich sehe, es gibt ein paar Möglichkeiten. Treiberseitig sehe ich NUR Probleme bei der Latenz von Jack. Aber da geht noch was, Stichwort Echtzeitkernel und Priorisierung. Unter Windows bekomme ich stabil 64 Samples per ASIO hin vom Treiber her.

                    Im Endeffekt wird also was brauchbares rauskommen. Ich werde morgen mit jconvolver alles rausholen (zero-delay processing) und dann die Latenz des Geraffels drumherum testweise optimieren, um weiterhin das beste klangliche Ergebnis zu haben. Mal sehen, ob ich unter Linux bleiben kann, da ja der Class Compliant Mode genutzt wird. Eventuell muss ich dafür doch Windows benutzen, da ich dort mit dem Treiber 64 bzw. 48 Samples hinbekomme.
                    boxsim-db.de - Datenbank für Boxsim-Projekte

                    Kommentar

                    • Pansen
                      Registrierter Benutzer
                      • 12.04.2009
                      • 1494

                      #11
                      So, wie ich jetzt herausfand habe ich keine hörbare Verzögerung durch Interface oder den Audioserver. Wenn ich den Interface Eingang mit Jack auf den Ausgang leite, wird der Sound praktisch zur gleichen Zeit abgespielt (32 Samples ohne Fehler für den jack-Server).

                      Die Verzögerung entsteht rein durch jconvolver. Mit meinem "normalen" Filter, den ich als 64 Bit Wav allein durch die Benutzung der Acourate Makros erhalten habe, ensteht diese Verzögerung. Laut Dokumentation von jconvolver kann ich die Partitionsgröße noch optimieren, leider war das nicht von Erfolg gekrönt. Leider ist die Latenz doch sehr groß, obwohl es ein "zero-delay" sein müsste.

                      Ehrlich gesagt weiß ich jetzt nicht, was zutun ist. Ich habe jetzt einen FIR-Filter, richtig? Normalerweise benutze ich einfach alle Makros von Acourate. Wie kann ich jetzt einen Filter in Acourate erstellen bzw. welche Software benötige ich zum Falten um das Latenzproblem zu lösen? Geht vom Prinzip her auch der IIR-Filter einfach so?
                      Zuletzt geändert von Pansen; 27.10.2014, 17:18.
                      boxsim-db.de - Datenbank für Boxsim-Projekte

                      Kommentar

                      • Violoncello
                        Registrierter Benutzer
                        • 11.07.2010
                        • 641

                        #12
                        Das wird an dem akausalen Filter liegen, wie ich vorhin schon erwähnt habe. Eine minimalphasige Impulsantwort sollte das beheben, und laut Vorredner kann man acourate auf minimalphasig umstellen - wie genau kann ich dir leider nicht sagen.

                        Falls du damit immer noch Probleme hast:
                        Kannst du dir mal eine Impulsantwort erstellen (z.B. mit Audacity), deren erstes Sample 1 ist und der Rest 0? Am besten so lang wie der Filter den du gerne hättest. Diese Impulsantwort besitzt dann keine Zeitverzögerung und entspricht einem 1:1-Durchschleifen. Das mal in jconvolver einspeisen und schauen, dass du das Delayfrei konfiguriert bekommst.

                        Kommentar

                        • Pansen
                          Registrierter Benutzer
                          • 12.04.2009
                          • 1494

                          #13
                          Das Delay durch jconvolver kommt einzig und allein durch den Filter, genau wie du es beschrieben hast Violoncello.

                          Ich habe jetzt 2 Eingänge in jconvolver zum Musikhören mit den FIR-Filtern(?) erstellt, die erst mit Verzögerung hörbar sind. Dann gibt es zwei weitere Eingänge, die mit dem gleichen Filter nur minimalphasig bedient werden. Ergebnis: der FIR-Filter ist mit Verzögerung, der gleiche Filter minimalphasig ohne Verzögerung. Die minimalphasige Korrektur ist hörbar schlechter, was jedoch für den Einsatz mit dem Stage Piano oder der PS3 keine Rolle spielt. Das ging übrigens ganz einfach in Acourate. Ich musste nur nach Erstellung der Korrektur noch die Filter in minimalphasig konvertieren lassen (letzter Punkt in dem Menü, wo auch die Makros sind: "Special: convert to minphase" - sinngemäß). Dann die neu generierten DBL Dateien als WAV speichern.

                          Ich bin begeistert! Damit habe ich endlich auf die Beine gestellt, wovor mir seit Jahren graute. Mit dem Studiointerface und einem Faltungsrechner ohne Verzögerung plus beste Qualität mit Acourate Filtern ist das Musikhören bis zum Lautsprecher nun perfektioniert. An das Interface kann ich alles anschließen und falten lassen, für den Lautsprecher kommt alles in hervorragender Qualität an. Für das kollektive Wissen hier bin ich dankbar, also nochmal danke für eure verständlichen Antworten.
                          boxsim-db.de - Datenbank für Boxsim-Projekte

                          Kommentar

                          • walwal
                            Registrierter Benutzer
                            • 08.01.2003
                            • 27979

                            #14
                            Ich habe nichts verstanden, aber freue mich mit.
                            „Audiophile verwenden ihre Geräte nicht, um Ihre Musik zu hören. Audiophile verwenden Ihre Musik, um ihre Geräte zu hören.“

                            Alan Parsons

                            Kommentar

                            • Violoncello
                              Registrierter Benutzer
                              • 11.07.2010
                              • 641

                              #15
                              Schön dass jetzt alles funktioniert, freut mich dass ich helfen konnte!

                              Rein aus Interesse (weil ich mir in mittlerer Zukunft was Ähnliches zusammenstricken wollte): Wie ist bei dir die CPU-Auslastung beim zero-delay-Falten, welche Filterlänge, welche CPU?

                              Kommentar

                              Lädt...
                              X