loki schrieb:Ich habe mir acourate convolver mal angesehen. Für meine Anwendung gibt es ein Problem: die Latenz von einigen hundert ms. Aber das gilt wohl für alle FIRs. Es soll mit Videos funktionieren ohne das Bild zu verzögern. Ansonsten scheint es eine gute und zuverlässige Angelegenheit mit einzigartigen Funtionen zu sein.
Ich meine mal gelesen zu haben, dass maximal 40ms erträglich sind.
Mit einer ordentlichen Anzahl Partitionen und wenig Latenz bei der restlichen Verarbeitung des Signals, sollte das kein Problem sein.
Da reicht ein Raspi aber nicht mehr...
Edit: Hups - ist ja garnicht der Raspi-Thread. Also Korrektur:
"da reicht dann keine schwachbrüstige Hardware mehr"
eltipo schrieb:Das Ding läuft absolut super, und hier klappts auch vernünftig mit dem Übertragen der Lizenz von einem Rechner auf den anderen....
Wenn ich dafür jedes Mal Uli angeschrieben hätte, wäre der jetzt inner Klappse...
Also wenn du da auf Dirac anspielst hab ich da gute Nachrichten für Dirac Nutzer
Es gibt seit einiger Zeit das Customer Portal.
Also ich kann mittlerweile sogar mehrmals täglich die Lizenz löschen und auf einen anderen Rechner installierern.
Bei mir scheint dene sogar ein Missgeschick passiert zu sein.
Ich kann trotz Stereolizenz 2 Rechner aktivieren. https://portal.dirac.se/sign_in.php
hier der Link.
VG
xnishd schrieb:Ich meine mal gelesen zu haben, dass maximal 40ms erträglich sind.
Also ich finde mehr wie 20 ms fallen schon (vorallem wenn man darauf achtet) negativ auf bei der Lippensynchronität.
Deshalb nutze ich für Filme den im Jiver vorhanden Convolver da das Bild gleich mitverzögert wird...
xnishd schrieb:Ich meine mal gelesen zu haben, dass maximal 40ms erträglich sind.
Mit einer ordentlichen Anzahl Partitionen und wenig Latenz bei der restlichen Verarbeitung des Signals, sollte das kein Problem sein.
Da reicht ein Raspi aber nicht mehr...
Edit: Hups - ist ja garnicht der Raspi-Thread. Also Korrektur:
"da reicht dann keine schwachbrüstige Hardware mehr"
Erträglich sind tatsächlich eher 20ms.
Und die Latenz ist der Technik, die hinter dem Convolver steht, innewohnend. Man kann in den FAQ von Jriver nachlesen, das die Taps, Abtastrate und Latenz in einem direktem Zusammenhang stehen. Also bleibt es bei >>100ms.
loki schrieb:Man kann in den FAQ von Jriver nachlesen, das die Taps, Abtastrate und Latenz in einem direktem Zusammenhang stehen. Also bleibt es bei >>100ms.
Noch besser einfach mal Rephase dowloaden und rumspielen.
unten rechts sieht man nach der berechnung die Latenz des Filters
loki schrieb:Erträglich sind tatsächlich eher 20ms.
Und die Latenz ist der Technik, die hinter dem Convolver steht, innewohnend. Man kann in den FAQ von Jriver nachlesen, das die Taps, Abtastrate und Latenz in einem direktem Zusammenhang stehen. Also bleibt es bei >>100ms.
Im Convolver-Plugin (ConvolverVST, WMP...) und in Brutefir kann man zusätzlich "Partitionen" einstellen, mit denen man die Latenz senken kann. Das kostet dann nur mehr Rechnerressourcen. http://www.ludd.luth.se/~torger/brutefir...ruteconv_3
Hierbei wird die Latenz definitiv gesenkt. Ich kenne JRiver nicht und konnte im Screenshot auch keine Einstellung dazu finden.
Mit meinen 65k-Tap langen Filtern habe ich ohne Partitionen eine Latenz von ca 1.5s. Mit 16 Patitionen komme ich auf 0.093s.
Mit 128 theoretisch auf 0.012s.
Hui
wenn das stimmt sollte ich mich doch mal anfangen damit zu beschäftigen. Also BruteFir und partitionen.
ist das nur Console oder gibt es auch irgendwie eine Grafische oberfläche dazu?
Das Plugin gibt es in 3 Varianten:
- VST
Kann in VST-Kompatiblen Programmen verwendet weden. Ich benutze unter Windows meist den VSTHost (http://www.hermannseib.com/vsthost.htm).
- WMP
Plugin für Windows Media Player
- DirectX
Das Gleiche als Direct-X Audio Plugin
Das blöde am VST ist, dass hier die Partitions gedeckelt sind und man maximal 16 einstellen kann. Die beiden anderen Varianten haben eine freie Eingabe an der Stelle.
Ich vesuche grad das VST zu überreden mehr Partitionen zu schlucken. Mein Versuch den Quellcode von Sourceforge selbst anzupassen und eine eigene Version zu erstellen scheitert im Moment daran, dass Steinberg (Hersteller von VST) die alte verwendete "VST-Schnittstelle" nicht mehr anbietet.
Ein eckliger "hack" über die Windows-Registry scheint auch noch eine Option. Die habe ich aber noch nicht überprüft. Bei mir im Convolver stehen jetzt die 128 Partitionen, ob er das wirklich macht, weiss ich noch nicht.
Man muss hier zwei Dinge unterscheiden. zum einen gibt es die vom Filter verursachte Latenz. Diese lässt sich auch nicht reduzieren sondern ist bei linearphasigen Filtern immer vorhanden. Wenn einem diese Latenz zu lang ist muss man auf minimalphasige oder gemischtphasige Filter zurückgreifen.
Zum anderen gibt es eine Latenz die auf die Implementierung der Faltung zurückzuführen ist. Wenn die Faltung im Zeitbereich durchgeführt wird, ist diese Latenz nicht vorhanden, allerdings ist das bei langen Filtern sehr rechenintensiv.
Um Recourcen zu sparen kann man die Faltung auch im Frequenzbereich durchführen. Hierfür muss das ankommende Signal in Blöcken verarbeitet werden. Die Zeit bis ein Block aufgefüllt ist, kommt auf die oben genannte Filterlatenz oben drauf. Tendenziell reduziert sich der Rechenaufwand wenn die Blocklänge vergrößert wird, allerdings stimmt das nur bis zu einer gewissen oberen Grenze. Wo genau diese Grenze liegt ist abhängig vom konkreten System.
du scheinst ja die Verfahren dahinter besser zu verstehen.
Was heißt das denn übersetzt für das konkrete Hochsetzen der Anzahl der Partitionen im Faltungsprogramm und der damit eingehenden niedrigeren Latenz?
Deine Aussage klingt für mich so, als würde es irgendwo ein hartes Limit geben, das man nicht unterbieten kann. (Filterlatenz)
Ich habe es so verstanden, dass die Partitionen eben diese Latenz verringern.
Ich muss mal so blöd fragen, da die Convolution für mich nur eine Blackbox ist und ich hier auch keinen in die falsche Richtung schicken will.
Das habe ich bei Jriver gefunden und das ist die Latenz, die sich nicht verringern läßt:
The delay introduced by a convolution filter can be calculated using the following formula: (Taps / 2) / Sampling Rate (expressed in seconds). So a 22000 tap filter sampled at 44100Hz would introduce about 1/4 of a second of delay, which is significant.
Und in einem anderem Threat habe ich über Acourate Convolver gelesen ( von Uli), wie man die Latenz auf ca. 10ms verringert, indem man die Taps auf 1024 reduziert. Dadurch wird aber auch die Auflösung kleiner, was bei tiefen Frequenzen ein Problem sein kann.
Dazu kommt noch die eigentliche Berechnung des neuen Musikstreams, die Faltung. Wenn ich es recht verstanden habe, sind das im obigen Beispiel so einige hundert Millionen!
xnishd schrieb:Deine Aussage klingt für mich so, als würde es irgendwo ein hartes Limit geben, das man nicht unterbieten kann. (Filterlatenz)
Ich habe es so verstanden, dass die Partitionen eben diese Latenz verringern.
Das verstehst du genau richtig. Ein linearphsiges Filter hat immer eine Latenz die der halben Ordnung entspricht. Die Ordnung eines linearphasigen Filters ist die Anzahl der Koeffizienten +1.
Die Erklärung dafür kann ich nur grob skizzieren, da ich sonst genauer nachschlagen müsste. Ein linearphasiges Filter lässt sich mathematisch in eine Verzögerung und ein Filter mit der Phase 0 zerlegen.
Ein Filter mit der Phase 0 für alle Frequenzen enthält nur Kosinusanteile. Das bedeutet, dass die Impulsantwort eines solchen Filters symmetrisch um den Nullpunkt liegt.
Ein solches Filter ist aber nicht kausal, da Filterkoeffizienten im negativen Zeitbereich liegen. Hinzu kommt, dass die Impulsantwort prinzipiell zeitlich unendlich ausgedehnt ist.
Beim Filterentwurf bedient man sich nun des Tricks, dass die eigentlich unendlich ausgedehnte Impulsantwort abgeschnitten wird und durch eine Verzögerung vollständig in den positiven Zeitbereich verschoben wird.
Wie lang das resultierende Filter wird hängt von der gewünschten Frequenzauflösung ab. Die notwendige Verzögerung ergibt sich dann aus der Anzahl der im negativen Zeitbereich vorhandenen Koeffizienten.
Wenn man diese Latenz verringern will, ist die einzige Möglichkeit die Frequenzauflösung zu verringern. Das hat zur Folge, dass die tiefe Frequenzen nur noch schlechter korrigiert werden können.
Abhilfe kann hier sein die tiefen und mittleren Frequenzen mit minimalphasigen Filtern zu entzerren und nur im Mittelton und Hochton liniarphasige Filter zu verwenden.
So, ich hoffe das war einigermaßen verständlich und ich habe keine groben Fehler gemacht. Es gibt neben den oben skizzierten noch weitere Formen linearphasiger Filter (hier gilt aber prinzipiell das gleiche für die Verzögerung). Um die anderen Formen herzuleiten müsste ich die Mathematik aber nochmal genauer nachschlagen. Der Stoff ist nicht ganz trivial (Man lernt das erst gegen Ende eines Bachelor Studiums und versteht es wohl erst so richtig im Masterstudium)
Zu der Latenz durch die segmentierte Faltung (Partitionen) schreibe ich heute Abend nochmal etwas.
leider habe ich es noch nicht geschafft, die Karte als Standard festzulegen.Ich wähle das zwar an aber nach einem Neustart ist wieder der Onboard chipsatz aktiv.
zum Linux Thema kann ich dir leider nicht weiterhelfen. Da hab ich mich auch schon vergeblich dran versucht. Allerdings muss ich auch zugeben, dass es mir bisher an Beharrlichkeit gefehlt hat. Ich hoffe beim nächsten Versuch halte ich durch
Ich hatte ja versprochen noch etwas zur segmentierten Faltung zu schreiben.
Programme wie BruteFIR bedienen sich der sogenannten schnellen Faltung Wikipedia
Bei dieser wird die Faltung nicht im Zeitbereich durchgeführt, sondern als Multiplikation im Frequenzbereich.
Das bei wikipedia genannte overlap verfahren wird hier gleich zwei mal angewendet. Zum einen wird das Musiksignal in Segmenten verarbeitet und zum anderen wird die Filterimpulsantwort in Segmenten verarbeitet. Diese Segmente müssen nicht notwendigerweise gleich lang sein. Der Grund für die Segmentierung des Filters ist, dass moderne Prozessoren allerlei Hardwarebeschleunigung an Board haben um FFTs effizient berechnen zu können, allerdings sind diese Beschleunigungsverfahren nicht unbedingt für Filter mit 65000 Taps ausgelegt sondern eher auf kleinere Filterlängen optimiert.
Erstmal schon sehr gut, dass die Karte läuft, bzw erkannt wird. Die Festlegung als Standard ist ist nicht notwendig, man kann sie unter Linux einfach als hw:1 ansprechen, dann bleibt die Onbardkarte hw:0
Ich bin schon am Falten; seit ca. einer halben Stunde läuft es digital hinein und analog heraus auf einem Pi1 mit ca. 45% Prozessorlast und 16384,4 Filterlänge also 65536 Taps.
Hast Du schon die UseScripts (oder so ähnlich) enpackt und die Ein/Ausgänge aktiviert?
ich habe gerade mal schnell vlc installiert und auf jedenfall kommt schonmal Musik über SPDIF-out raus.
Ich habe 2 Scripte ausgeführt einmal SPDIF-Playback und SPDIF-Record.
Allerdings nur doppelklick und dann auf ausführen.
Der grösste Felsbrocken scheint aber Brutefir zu werden.
The Alchemist schrieb:Eine Beispiel-Konfiguration und Beispiel-Filter schnitz ich dir derweil zurecht
Das ist wirklich sehr Nett von dir.:prost:
Ich habe vorhin noch Brutefir installieren "lassen", über die Paketverwaltung von Linux.Aber wenn ich mir deine Bilder anschaue scheint es evt. sinniger zu sein dies manuell zumachen, da man dann die Verzeichnisse vorgeben kann wo das Brutefir liegt.Ich finde zurzeit nichteinmal die config datei wieder.
Ich hatte geute auch leider nicht allzuviel Zeit was zumachen, da meine beiden Frauen krank sind und ich die ein bischen Plegen muss.
Ohne Hilfe würde das hier wahrscheinlich etliche Wochen dauern.
Aber wo doch so langsam schon einiges funktioniert und bei dir ja schon komplett, freue ich mir schon wie ein kleines Kind