Linuxfalter - Online Convolving mittels Linux/Brutefir

Daihedz
Aktiver Hörer
Beiträge: 793
Registriert: 25.06.2010, 15:09

Beitrag von Daihedz »

Hallo ihr alle Linuxfalter

Angeregt durch die Beiträge im spannenden Linux-Thread von Frank ("Software Experimente mit Linux") habe ich mich wieder mal mit Brutefir auseinandergesetzt und dabei eine RIESENÜBERASCHUNG erlebt: Brutefir lebt! Anders Torger hat nach einer nun mehr als 4-jährigen Pause (!) Anfangs Oktober 2013 wieder eine neue Version von Brutefir zum Download eingestellt:
Anders Torger hat geschrieben: News

2013-10-06
BruteFIR v1.0l. Refreshed code to compile well on x86-64, dropped 3Dnow support and replaced the hand-coded SSE with SSE C code, and refreshed JACK and ALSA I/O modules to catch up with changes in the APIs. Also fixed a filter indexing bug in the cffa CLI command.


2009-03-31
BruteFIR v1.0k. Refreshed JACK and ALSA I/O modules to catch up with changes in the APIs.

2009-03-05
BruteFIR v1.0j. Fixed a memory leak in the CLI.
As you may have noted, I do not any longer actively develop BruteFIR further. From my point of view the software is "complete". I have had plans to start a next generation BruteFIR from scratch with a more modern design (using threads instead of forked processes etc), but priorities in life change, and I do not any longer have much time to write code so it is not likely to happen.
However, I'm happy to see that there are many BruteFIR users out there. Do continue to report bugs as my intention is to keep the code working and fix any bugs that arise.
Nachzulesen und downloadbar unter http://www.ludd.luth.se/~torger/brutefir.html

Hoch erfreute Grüsse, und mit meinem Dank an Anders Torger (für den Code) und auch an Frank (für den Interessens-Anstoss)!

Simon
Bild
frankl
Aktiver Hörer
Beiträge: 486
Registriert: 20.01.2013, 01:43
Wohnort: Aachen

Beitrag von frankl »

Daihedz hat geschrieben: Angeregt durch die Beiträge im spannenden Linux-Thread von Frank ("Software Experimente mit Linux") habe ich mich wieder mal mit Brutefir auseinandergesetzt und dabei eine RIESENÜBERASCHUNG erlebt: Brutefir lebt! Anders Torger hat nach einer nun mehr als 4-jährigen Pause (!) Anfangs Oktober 2013 wieder eine neue Version von Brutefir zum Download eingestellt:
Anders Torger hat geschrieben: 2013-10-06
BruteFIR v1.0l. Refreshed code to compile well on x86-64, dropped 3Dnow support and replaced the hand-coded SSE with SSE C code, and refreshed JACK and ALSA I/O modules to catch up with changes in the APIs. Also fixed a filter indexing bug in the cffa CLI command.
Hallo Simon,

ich hatte schonmal irgendwann Deine Äußerung
Daihedz hat geschrieben:Kurz auf den Punkt gebracht: Ich glaube, dass Brutefir leider langsam so ziemlich moribund auf dem Totenbett liegt.

Ich war von Brutefir u.a. deswegen angetan, da Brutefir vielfältig konfigurierbar ist, direkt auf ALSA aufsetzen kann und in der Regel ganz gut rechnet. Ein Brutefir-Convolver kann jedoch auch fürchterlich falsch rechnen, und es wird wohl niemanden (mehr) geben, der diesen Fehler einkreisen und beseitigen wird.
gesehen, aber das nicht kommentiert, da ich den Thread für veraltet hielt.

Ich benutze brutefir jetzt schon ein paar Jahre ohne irgendwelche Probleme. Allerdings benutze ich es immer als Filter (das heißt, lese von Standardeingabe und schreibe auf Standardausgabe) und konnte da nie feststellen, dass es "falsch rechnen könnte". (Hast Du da ein reproduzierbares Beispiel?) Mir scheint zumindest der eigentliche Convolver-Code einfach fertig zu sein und keine Wartung zu brauchen. Wie aus dem Zitat oben klar wird, sind die Ausgabe-Module nach ALSA und JACK kritischer, weil diese Ihre Schnittstelle gelegentlich ändern. Allerdings ist so etwas (oder auch Warnungen neuerer Compiler-Versionen) meist nicht so schwer zu fixen und für mich kein Grund, ein Programm für tot zu erklären.

Viele Grüße,
Frank
Bild
freezebox
Aktiver Hörer
Beiträge: 576
Registriert: 08.07.2011, 11:42
Wohnort: München

Beitrag von freezebox »

Hallo liebe Linuxfalter,

Ich verwende seit mehreren Jahren einen Linux-Brutfir-Falter auf Basis des USB-Sticks von Uli (SPBLinux). Eine sporadische Fehleranfälligkeit dieser Lösung kann ich nicht verleugnen, ich denke es liegt am Laden der Filter oder vielleicht hängt es auch mit dem ALSA-routing zusammen, weshalb 20-30% der Bootvorgänge in die Hose gehen, und erstmal kein Ton aus meiner Soundkarte (RME Multiface 2) herauskommt, beim nächsten Versuch klappt es dann aber meist...

Sind Euch diese bugs auch bekannt und evtl. mit der neuen Version gefixt? Und gibt es vielleicht schon ein USB-Stick set-up basierend auf dem "neuen" Brutefir das ich (als Linux Laie) mit denselben config-files verwenden kann, die ich derzeit auch verwende?

Grüße,
Jörn
Bild
uli.brueggemann
Aktiver Hersteller
Beiträge: 4658
Registriert: 23.03.2009, 15:58
Wohnort: 33649
Kontaktdaten:

Beitrag von uli.brueggemann »

Moin,

die Stick-Lösung, die ich selbst auch immer noch verwende, tut bei mir seit Jahren ihren Dienst ohne einen Fehler. Soundkarte ist eine RME HDSP9652.

Es wird von meiner Seite her jedoch kein Update geben. Die verwendete Minimal-Linux-Lösung mit realtime-Patch ist sicher nicht mehr die Neueste. Aber mein Gentoo-System, das ich zur Entwicklung, sprich Kernel-Kompilierung, Brutefir-Kompilierung etc. verwendet habe, hat den Geist aufgegeben.
Und ich finde den Umgang mit Soundkarten, für die es keine richtigen Linux-Treiber gibt, absolut problematisch. Insofern bitte ich um Verständnis, dass ich die Stick-Lösung nicht mehr gewartet wird.

Es gibt ja mittlerweile auch viele andere Möglichkeiten, ein Linux-System zu installieren. Ein Beispiel ist hier beschrieben.

Grüsse
Uli
Bild
Daihedz
Aktiver Hörer
Beiträge: 793
Registriert: 25.06.2010, 15:09

Beitrag von Daihedz »

Hallo Frank
frankl hat geschrieben: ... Ich benutze brutefir jetzt schon ein paar Jahre ohne irgendwelche Probleme. Allerdings benutze ich es immer als Filter (das heißt, lese von Standardeingabe und schreibe auf Standardausgabe) und konnte da nie feststellen, dass es "falsch rechnen könnte". (Hast Du da ein reproduzierbares Beispiel?) Mir scheint zumindest der eigentliche Convolver-Code einfach fertig zu sein und keine Wartung zu brauchen. Wie aus dem Zitat oben klar wird, sind die Ausgabe-Module nach ALSA und JACK kritischer, weil diese Ihre Schnittstelle gelegentlich ändern. Allerdings ist so etwas (oder auch Warnungen neuerer Compiler-Versionen) meist nicht so schwer zu fixen und für mich kein Grund, ein Programm für tot zu erklären. ..."
Brutefir produziert bei mir auf verschiedenen Rechnern reproduzierbar, aber rein zufällig ein eigenartiges Verhalten beim Starten. Brutefir produziert auf allen Kanälen kurz nach dem Starten ein schmerzhaft lautes, furchtbares Kreischen, während die CLI Pegelwerte von bis zu +900dB meldet (!?). Dies, ohne jegliches Signal am Eingang. Zum Glück habe ich keinen Gehörschaden erlitten, aber dafür ist mir einmal ein (nicht ganz billiger) Hochtöner abgeraucht. Deshalb hatte ich so meine Zweifel an der Präzision des Outputs von Brutefir.

Ich habe diese Eigenart Anders Torger gemeldet. Der hatte von diesem Fehler bislang noch nie gehört. Ich habe diese Eigenart aber schon von einem andern Brutefir-Anwender gehört, welcher mit ähnlichen Konfigurationen wie ich arbeitet. Auf Anfrage von Anders Toger hin habe ein bisschen vertiefteres Debugging gemacht und ihm die entsprechenden Resultate gemeldet. Ich möchte Dir meine bisherigen Erkenntnisse nicht vorenthalten:

Meine Konfigurationen sehen z.B. folgendermassen aus:
2 Kanäle in -> 2 Filter -> 10 Filter -> 10 Kanäle out (Stereo-Mehrweglautsprecher mit Über-alles-Korrektur)
oder
2 Kanäle in -> 5 Filter -> Filter-into-2-Kanäle (10 Wege) -> 2 Kanäle out (FLOW-Versuche mittels Brutefir)

In's und Out's gehen über ALSA HW:0, d.h. über die Soundkarte.

Ich habe testweise in einer Schlaufe Brutefir etwas mehr als 1000 Mal gestartet. Falls Brutefir fehlerhaft aufstartete und die CLI einen positiven Wert ausgab, wurde Brutefir sofort gestoppt und neu gestartet (so ist der Schutz nun auch auf meinem Alltags-Heimsystem implementiert). Für den Schleifen-Test wurde Brutefir überdies dann beendet und neu gestartet, nachdem Brutefir 1s lang korrekt gearbeitet hatte.

Bei diesem Test (mit der FLOW-Konfiguration) verhielt sich Brutefir erwartungsgemäss meistens mustergültig, bis auf folgende Ausnahmen (Readout der CLI):

0/2/+967.81 1/0/-128.93 kam einmal vor
0/2/+961.44 1/0/-128.93 kam 8 mal vor
0/751/+48.16 1/0/-128.93 kam 25 mal vor

Eigenartig, dass es bloss drei fehlerhafte Pegel-Varianten gab (+48.16dB, +961.44dB und +967.81dB).

Ein zweiter Test bestand darin, dass Brutefir im Falle eines Fehlers weiter lief, um zu sehen, wie es sich weiter verhielt. Dabei ist z.B. folgendes herausgekommen.
CONSOLE hat geschrieben:
...
...
...

BruteFIR v1.0m (November 2013) (c) Anders Torger

Internal resolution is 64 bit floating point.
SSE2 capability detected -- optimisation enabled.
Creating 4 FFTW plans of size 16384...finished.
Loading 6 coefficient sets...finished.
Dither table size is 882001 bytes.
Generating random numbers...finished.
Realtime priorities are min = 2, usermax = 1, mid = 3 and max = 4.
Estimated CPU clock rate is 1994.985 MHz. CPU count is 2.
Filters in process 0: 0 2 4 6 8
Filters in process 1: 1 3 5 7 9
Warning: not allowed to set realtime priority. Will run with default priority
instead, which is less reliable (underflow may occur).
Fixed I/O-delay is 16384 samples
Audio processing starts now

Welcome to BruteFIR, type "help" for help. > peak: 0/0/-Inf 1/0/-Inf
Welcome to BruteFIR, type "help" for help. > peak: 0/0/-128.93 1/0/-128.93
Welcome to BruteFIR, type "help" for help. > peak: 0/0/-128.93 1/0/-128.93
Welcome to BruteFIR, type "help" for help. > peak: 0/0/-128.93 1/0/-128.93
Welcome to BruteFIR, type "help" for help. > peak: 0/0/-128.93 1/0/-128.93
Welcome to BruteFIR, type "help" for help. > peak: 0/2/+967.77 1/0/-128.93
Welcome to BruteFIR, type "help" for help. > peak: 0/2/+967.77 1/0/-128.93

peak: 0/4/+967.77 1/0/-128.93

Welcome to BruteFIR, type "help" for help. > peak: 0/4/+967.77 1/0/-128.93
Welcome to BruteFIR, type "help" for help. > peak: 0/4/+967.77 1/0/-128.93
Welcome to BruteFIR, type "help" for help. > peak: 0/4/+967.77 1/0/-128.93
Welcome to BruteFIR, type "help" for help. > peak: 0/4/+967.77 1/0/-128.93
Welcome to BruteFIR, type "help" for help. > peak: 0/4/+967.77 1/0/-128.93
Welcome to BruteFIR, type "help" for help. > peak: 0/4/+967.77 1/0/-128.93
Welcome to BruteFIR, type "help" for help. > peak: 0/4/+967.77 1/1/+967.77
Welcome to BruteFIR, type "help" for help. > peak: 0/4/+967.77 1/1/+967.77
Welcome to BruteFIR, type "help" for help. > peak: 0/4/+967.77 1/1/+967.77
Welcome to BruteFIR, type "help" for help. > peak: 0/4/+967.77 1/1/+967.77

peak: 0/4/+967.77 1/1/+967.77

Welcome to BruteFIR, type "help" for help. > peak: 0/4/+967.77 1/1/+967.77
Welcome to BruteFIR, type "help" for help. > peak: 0/4/+967.77 1/1/+967.77
Welcome to BruteFIR, type "help" for help. > peak: 0/4/+967.77 1/1/+967.77
Welcome to BruteFIR, type "help" for help. > peak: 0/4/+967.77 1/1/+967.77
Welcome to BruteFIR, type "help" for help. > peak: 0/4/+967.77 1/1/+967.77
Welcome to BruteFIR, type "help" for help. > peak: 0/4/+967.77 1/1/+967.77

rti: 0.076

Welcome to BruteFIR, type "help" for help. > peak: 0/4/+967.77 1/1/+967.77

...
...
...

// CONSOLE READOUT END //
Dieser Test wurde mit der Mehrwege-Konfiguration gemacht. Eine Schleife dauert ca. 0.1 Sekunde. Wie man sieht, scheint Brutefir offenbar während ca. 0.5s unauffällig zu funktionieren. Danach jedoch kippt zunächst der erste Kanal in besagten Fehler, und nach weiteren ca. 0.5s kippt auch der andere Kanal ins grosse Kreischen.

Ich hoffe sehr, dass Anders Torger den Fehler finden wird.

Simon
Bild
frankl
Aktiver Hörer
Beiträge: 486
Registriert: 20.01.2013, 01:43
Wohnort: Aachen

Beitrag von frankl »

Daihedz hat geschrieben: Brutefir produziert bei mir auf verschiedenen Rechnern reproduzierbar, aber rein zufällig ein eigenartiges Verhalten beim Starten. Brutefir produziert auf allen Kanälen kurz nach dem Starten ein schmerzhaft lautes, furchtbares Kreischen, während die CLI Pegelwerte von bis zu +900dB meldet (!?). Dies, ohne jegliches Signal am Eingang. Zum Glück habe ich keinen Gehörschaden erlitten, aber dafür ist mir einmal ein (nicht ganz billiger) Hochtöner abgeraucht. Deshalb hatte ich so meine Zweifel an der Präzision des Outputs von Brutefir.
[...]

Meine Konfigurationen sehen z.B. folgendermassen aus:
2 Kanäle in -> 2 Filter -> 10 Filter -> 10 Kanäle out (Stereo-Mehrweglautsprecher mit Über-alles-Korrektur)
oder
2 Kanäle in -> 5 Filter -> Filter-into-2-Kanäle (10 Wege) -> 2 Kanäle out (FLOW-Versuche mittels Brutefir)

In's und Out's gehen über ALSA HW:0, d.h. über die Soundkarte.
Hallo Simon,

danke für den genaueren Bericht über Dein Problem mit brutefir. Jetzt verstehe ich, warum Du in Deinen Setup mit brutefir nicht zufrieden bist.

So, wie Du Dein Testsetup beschreibst, bei dem das Problem gelegentlich in einer langen Testschleife auftaucht, würde ich als Erstes checken, ob der ALSA Input von der Soundkarte das Problem ist. Hast Du Deinen Test auch mal mit Input aus einer Datei oder aus Standardinput (lautlos, also mit lauter Nullen) probiert?

Viele Grüße,
Frank
Bild
Antworten