BAYFT (Brutefir At Your Fingertips) Addon

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

BAYFT (Brutefir At Your Fingertips) Addon

Beitrag von Daihedz »

Grüsseuch Forenten

Ich habe ein bash-script geschrieben und es bayft (Brutefir At Your Fingertips) genannt, welches als Brutefir-Addon gedacht ist.

bayft ermöglicht ein

- Komfortables Umschalten zwischen verschiedenen Brutefir-Konfigurationen und Filterbänken
Bsp:
# bayft /+ schaltet automatisch von einer Konfiguration zur Nächsten und in Gegenrichtung ( # bayft /- )
# bayft /home/privat/worksets/drc_4 stellt die entsprechende Konfiguration direkt ein

- Wechseln der Samplingrate
Bsp:
# bayft 96000
# bayft 44100

- Einstellen des Pegels auf allen Kanälen
# bayft 45.2 stellt den Pegel von -45.2 ein

bayft schwatzt bei Bedarf haufenweise Brutefir-Setup-Fehlermeldungen vor sich hin und erlaubt Optionen wie z.B. ein konfigurierbarer Übersteuerungsschutz gegen potenzielles intersample clipping. Bayft beinhaltet auch einige Sicherheitsfunktionen, z.B. falls Brutefir mal schräg und kreischend aufstartet, dann wird es gleich abgewürgt und neu gestartet, etc. etc.)

All das ist nicht ganz gratis. Das Brutefir-Setup muss (leicht) an die Bedürfnisse von bayft angepasst werden (z.B. sollten die Filter die samplingrate im Dateinamen enthalten - z.B. filter_xyz_48000_blabla), und Linux- sowie Englischkenntnisse (wegen des Manuals) sind vorteilhaft. Das aufgesetzte linux muss selbverständlich sciptfähig (bash) sein.

Bei mir funktioniert das script auf verschiedenen Testrechnern ganz prima. Da ich aber noch daran bin, das script weiter zu verändern und zu verbessern, gilt jeder, der es ausprobieren will, ganz unbarmherzig als Alpha-tester. Um sich vor dem Ausprobieren ein besseres Bild von bayft zu machen, sollten zumindesten die ersten Seiten des Manuals (bash.pdf) gelesen werden.

Kommentare sind willkommen.

Grüsse
Simon
Bild
Udor
Aktiver Hörer
Beiträge: 389
Registriert: 02.09.2010, 00:17

Beitrag von Udor »

Hallo Simon

Würde mich gerne als Alpha-Tester zur verfügung stellen. Da ich gerade einen neuen Audio-PC fertiggestellt habe kommt mir soetwas genau richtig.

Als Linux Distribution läuft bei mir ein Debian Squeeze 6.03 mit XFCE Oberfläche.
Hardware Core2duo U7700 2GB Ram mit RME9632.

Ich warte ja immernoch auf einen Player der all das miteinander vereint...

Was für einen Player favorisierst du? Oder ist das primär für reine Faltungsmaschinen wie sie mit Ulis SPB Linux realisiert werden gedacht?

Gruß Udo
Bild
Daihedz
Aktiver Hörer
Beiträge: 793
Registriert: 25.06.2010, 15:09

Beitrag von Daihedz »

Hallo Udo

Das script implementiert etwas Geschäftslogik für Brutefir-Anwendungen; es betrifft somit ausschliesslich den Faltungsteil eines Audio-PC.

Du kannst das script im Acourate-Forum herunterladen:

http://tech.groups.yahoo.com/group/acou ... yft.tar.gz

Simon
Bild
Udor
Aktiver Hörer
Beiträge: 389
Registriert: 02.09.2010, 00:17

Beitrag von Udor »

Hallo Simon

Habs mal überflogen das ganze. Es scheint als wenn da eine menge arbeit drin steckt. Hut ab. :cheers:

Als ich noch mein 8 kanal Setup am laufen hatte hab ich das Problem der SR Umschaltung mit 4 verschiedenen Startskripten gelöst. Heisst wenn man eine Datei mit 96khz abspielen wollte wird ein Skript gestartet welches erst mal die laufenden Programme stoppt und dann mit der neuen Konfig(SR) startet.

Da ich aber den PC als Player und Convolver nutze musste dazu noch Jack und eben der Player neugestartet werden(das hatte mein skript halt auch mit gemacht).

Wäre es denn nicht möglich zusätzlich zu Brutefir noch Jack und z.b. MPD oder Aqualung mit zu überwachen ?
Wie gesagt ich suche immernoch nach etwas was abhängig vom Quellmaterial die Samplerate mit aller Konsequenz umschaltet(also mit Neustart von Brutefir/Jack/Aqualung oder MPD? etc.)

Gruß Udo
Bild
Daihedz
Aktiver Hörer
Beiträge: 793
Registriert: 25.06.2010, 15:09

Beitrag von Daihedz »

Hallo Udo
Udor hat geschrieben: Wäre es denn nicht möglich zusätzlich zu Brutefir noch Jack und z.b. MPD oder Aqualung mit zu überwachen ?
Wie gesagt ich suche immernoch nach etwas was abhängig vom Quellmaterial die Samplerate mit aller Konsequenz umschaltet(also mit Neustart von Brutefir/Jack/Aqualung oder MPD? etc.)
Genau das sollte mit bayft auf einfache Weise möglich werden.

Ich habe bayft mit Absicht nur um Brutefir herum gestrickt, damit es als Brutefir-Interface universell verwendbar ist und das Konzept einfach erweiterbar bleibt. Genau dieser Ansatz kommt nun beispielhaft Deinem Bedürfnis entgegen: Um das zu leisten, was Du Dir gerne wünschen würdest, wäre ein kleines zusätzliches script (im Folgenden udoscript genannt) notwendig, z.B. so etwas wie

#!/bin/bash
# udoscript
# parameter $1: 44100 48000 96000 192000
...
jackd $1 # oder ähnlich, mit weiteren jack-Parametern
mpd $1 # oder ähnlich, mit weiteren mpd-Parametern
aqualung $1 # oder ähnlich, mit weiteren aqualung-Parametern
/home/udovolver/bayft/bayft $1
...

Aufgerufen würde das Script z.B. mit
/home/udovolver/udoscript 96000

Falls das udoscript als UI für alle bayft-Funktionen dienen sollte, müsste ggf. noch etwas ergänzt werden

#!/bin/bash
# udoscript
# Parameters: any
...
if [[ "$1" = 44100 || "$1" = 48000 || "$1" = 96000 || "$1" = 192000 ]] ; then
# damit jackd, mpd, aqualung & co nur die Parameter für die samplerate abkriegen
killall jackd
jackd $1 # oder ähnlich, mit weiteren jack-Parametern
killall mpd
mpd $1 # oder ähnlich, mit weiteren mpd-Parametern
killall aqualung
aqualung $1 # oder ähnlich, mit weiteren aqualung-Parametern
fi
# an bayft hingegen kann sowohl die samplerate, als auch alles andere als Parameter durchgereicht werden
/home/udovolver/bayft/bayft $1
...

PS: Ich habe eine revidierte Fassung 0.1.1 von bayft hochgeladen. Die bisherige Version konnte je nach setup der directories bei der Soundkarten-Initialisierung in einer Schlaufe hängenbleiben.

Gruss
Simon
Bild
Udor
Aktiver Hörer
Beiträge: 389
Registriert: 02.09.2010, 00:17

Beitrag von Udor »

Hallo Simon
Genau das sollte mit bayft auf einfache Weise möglich werden.
Das wäre schön :cheers:

Leider tut es das Skript im moment noch gar nicht das was es soll(das udoskript mal ganz außen vor gelassen).

Habe mal ein ganz einfaches Setup gebastelt mit 2 Filter(L+R) in jeweils 44,48 und 96khz.
Wenn ich das richtig verstanden hab muss in einem Worksetverzeichnis ein BCF die zugehörigen Filter und event. ein Soundcardconfigfile vorhanden sein korrekt ? Den Pfad hab ich angepasst die entsprechenden Rechte habe ich vergeben.

Wenn ich jetzt bayft starte bekomme ich das als Ausgabe(ein kleiner auszug):

Code: Alles auswählen

/home/udo/audio/bayft/bayft starting... 

/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 49: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
find: Fehlendes Argument für "-name".
/home/udo/audio/bayft/bayft: Zeile 52: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 58: /home/udo/audio/bayft/: Ist ein Verzeichnis
/home/udo/audio/bayft/bayft: Zeile 59: /home/udo/audio/bayft/: Ist ein Verzeichnis
find: Fehlendes Argument für "-name".
/home/udo/audio/bayft/bayft: Zeile 62: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 68: /home/udo/audio/bayft/: Ist ein Verzeichnis
/home/udo/audio/bayft/bayft: Zeile 69: /home/udo/audio/bayft/: Ist ein Verzeichnis
find: Fehlendes Argument für "-name".
/home/udo/audio/bayft/bayft: Zeile 72: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 78: /home/udo/audio/bayft/: Ist ein Verzeichnis
/home/udo/audio/bayft/bayft: Zeile 79: /home/udo/audio/bayft/: Ist ein Verzeichnis
/home/udo/audio/bayft/bayft: Zeile 84: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 86: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 87: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 88: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft: Zeile 572: /home/udo/audio/bayft/: Ist ein Verzeichnis
sed: Kann /home/udo/audio/bayft/ nicht bearbeiten: Dies ist keine normale Datei
/home/udo/audio/bayft/bayft: Zeile 584: /home/udo/audio/bayft/: Ist ein Verzeichnis
udo@udo-streamer:~/audio/bayft/utils$ 
/home/udo/audio/bayft/bayft_loop starting... 

/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 522: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
find: Fehlendes Argument für "-name".
/home/udo/audio/bayft/bayft_loop: Zeile 525: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 531: /home/udo/audio/bayft/: Ist ein Verzeichnis
/home/udo/audio/bayft/bayft_loop: Zeile 532: /home/udo/audio/bayft/: Ist ein Verzeichnis
find: Fehlendes Argument für "-name".
/home/udo/audio/bayft/bayft_loop: Zeile 535: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 541: /home/udo/audio/bayft/: Ist ein Verzeichnis
/home/udo/audio/bayft/bayft_loop: Zeile 542: /home/udo/audio/bayft/: Ist ein Verzeichnis
find: Fehlendes Argument für "-name".
/home/udo/audio/bayft/bayft_loop: Zeile 545: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 551: /home/udo/audio/bayft/: Ist ein Verzeichnis
/home/udo/audio/bayft/bayft_loop: Zeile 552: /home/udo/audio/bayft/: Ist ein Verzeichnis
/home/udo/audio/bayft/bayft_loop: Zeile 557: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 559: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 560: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
/home/udo/audio/bayft/bayft_loop: Zeile 561: declare: -g: Ungültige Option
declare: Gebrauch: declare [-aAfFilrtux] [-p] [name[=value] ...]
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
sed: Kann /home/udo/audio/bayft/ nicht bearbeiten: Dies ist keine normale Datei
/home/udo/audio/bayft/bayft_loop: Zeile 2486: /home/udo/audio/bayft/: Ist ein Verzeichnis
localhost [127.0.0.1] 3000 (?) : Connection refused
find: Fehlendes Argument für "-name".
find: Fehlendes Argument für "-name".
sed: Kann /home/udo/audio/bayft/ nicht bearbeiten: Dies ist keine normale Datei

WARNING: There are no functional worksets

WARNING: No worksets available of found
WARNING: Workset /home/udo/audio/bayft/worksets/9632_Skyline_2 not applyable
sed: Kann /home/udo/audio/bayft/ nicht bearbeiten: Dies ist keine normale Datei
/home/udo/audio/bayft/bayft_loop: Zeile 2522: /home/udo/audio/bayft/: Ist ein Verzeichnis
/home/udo/audio/bayft/bayft_loop: Zeile 2035: [: =: Einstelliger (unärer) Operator erwartet.
/home/udo/audio/bayft/bayft_loop: Zeile 2041: [: Zu viele Argumente.
sed: Kann /home/udo/audio/bayft/ nicht bearbeiten: Dies ist keine normale Datei
/home/udo/audio/bayft/bayft_loop: Zeile 1166: /home/udo/audio/bayft/: Ist ein Verzeichnis
sed: Kann /home/udo/audio/bayft/ nicht bearbeiten: Dies ist keine normale Datei
/home/udo/audio/bayft/bayft_loop: Zeile 1189: /home/udo/audio/bayft/: Ist ein Verzeichnis
sed: Kann /home/udo/audio/bayft/ nicht bearbeiten: Dies ist keine normale Datei
/home/udo/audio/bayft/bayft_loop: Zeile 1212: /home/udo/audio/bayft/: Ist ein Verzeichnis
sed: Kann /home/udo/audio/bayft/ nicht bearbeiten: Dies ist keine normale Datei
/home/udo/audio/bayft/bayft_loop: Zeile 1235: /home/udo/audio/bayft/: Ist ein Verzeichnis
find: Der Pfad muß vor dem Suchkriterium stehen: 1
Aufruf: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [Pfad...] [Suchkriterium]
find: Der Pfad muß vor dem Suchkriterium stehen: 1
Aufruf: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [Pfad...] [Suchkriterium]
find: Der Pfad muß vor dem Suchkriterium stehen: 1
Aufruf: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [Pfad...] [Suchkriterium]

INFO: No soundcard configuration file(s) found

INFO: Candidate Workset: /home/udo/audio/bayft/worksets/9632_Skyline_2
INFO: Candidate Workset Samplerates Available: Hz
INFO: Candidate Brutefir Configuration File:
INFO: Candidate Samplerate: 44100 48000 96000Hz
su: Muss von einem Terminal gestartet werden.
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
Im localhost hängt er dann in einer Schleife. Abrechen geht nur über ein zweites Terminal mit einem killall bayft_loop...

Im Logfile steht das Brutefir nicht installiert sei. Dazu muss ich sagen das ich Brutefir immer selber compiliere welches dann natürlich im usr/local/bin liegt und nicht im usr/bin. Weiss nicht ob das daran liegen könnte.

Starte ich Jack/Aqualung und anschließend Brutefir läuft Brutefir ganz normal so wie es soll. Es geht also grundsätzlich (ohne bayft).

Ich lad mir mal die aktuelle Version runter und checke noch mal alle Pfade und die Config von bayft.

Frage, muss ein Soundcardconfigfile vorhanden sein ? Eigentlich brauch ich für meinen Fall da keine amixer kommandos da als input ja der Player gewählt wird.

Anbei noch die bayft_config von mir:

Code: Alles auswählen

#########################################################
# volver_config
# Konfigurationsfile der Lautsprecher-FIR-Filteranwendung
#########################################################
#
# Simon
# 8.3.2012 / 00:00
#


### Dynamic settings ###
### Override of these settings occurs during convolver runtime by same parameters set within status file ###

## Volver Runtime Settings

# Volver Convolver Settings
VolverGain=43
VolverGainMin=200
VolverSamplerate=44100 48000 96000
VolverWorksetName=/home/udo/audio/bayft/worksets/9632_Skyline_2

WorksetsAvailable=/home/udo/audio/bayft/worksets/9632_Skyline_2



### Static settings ###

## Brutefir

# Init
BrutefirStartparameters=-nodefault -daemon

# Brutefir Configuration file
BrutefirConfigWorksetDirectoryTag=<workset>
BrutefirConfigWorkspaceDirectoryTag=<workspace>

# Brutefir Gain Mode
BrutefirGainSplit=off


## Hardware

# Soundcard
SoundcardMatrixInputs=12
SoundcardMatrixOutputs=12
SoundcardMatrixResetOnStart=off


## Worksets

# Worksets Optional Directories
#WorksetsOptionalRoot=/media/PENDRIVE/bayft
#WorksetsOptionalRoot=/home/filters
#WorksetsOptionalRoot=/home/goggeli


## Volver Runtime Settings

# Volver Convolver Settings
VolverGainIscpShift=0

# Display, Logging and Program Behavior
VolverInfosDebugMode=off
VolverInfosLogging=on
VolverInfosLoggingCumulation=off

# Loop Behavior
VolverLoopingCycle=off
VolverLoopingCycleBrutefirKill=off


## Volver Environment

# Convolver Files and Directories
BrutefirConfigfile=brutefir_config
SoundcardConfigfile=soundcard_config
VolverConfigfile=bayft_config
VolverInitfile=bayft_init
VolverLogfile=bayft_log
VolverStatusfile=bayft_status
So sieht das Workset Verzeichnis aus:

Code: Alles auswählen

udo@udo-streamer:~/audio/bayft/worksets/9632_Skyline_2$ ls
brutefir_config        Cor2L_44100.dbl  Cor2L_96000.dbl  Cor2R_48000.dbl
brutefir_config_96000  Cor2L_48000.dbl  Cor2R_44100.dbl  Cor2R_96000.dbl
Für die 96khz muss ja eine gesondertes BCF erstellt werden wegen der Kanalreduzierung, richtig?

Gruß Udo
Bild
Daihedz
Aktiver Hörer
Beiträge: 793
Registriert: 25.06.2010, 15:09

Beitrag von Daihedz »

Grüssdich Udo
declare -g
Die Funktion declare dient in bayft dazu, alle Variablen einzulesen. Dies geschieht in einer Funktion. Damit die Variablen mitsamt der Attrubute für alle Funktionen sichtbar werden, muss die Deklaration global erfolglen, d.h. ich habe dies mit dem Parameter -g bewerkstelligt. Diesen Parameter -g scheint in der Bash ab V.4.2 implementiert zu sein und ist in meinem Fedora 16 funktional, offenbar in Deiner (eigentlich auch sehr aktuellen) Distro nicht.

Könntest Du mal schauen, welche Version Deine Bash hat? Etwa 4.1? Dann würden bayft sämtliche Parameter fehlen ... mit einem ganzen Wusch von negativen Konsequenzen.

Ich könnte einen Workaround scripten, falls Du Bash 4.1 hättest und nicht auf 4.2 aktualisieren könntest.
Brutefir not found...
Hat mit der fehlenden Variablen aus dem vorherigen Problem zu tun.
Frage, muss ein Soundcardconfigfile vorhanden sein ? Eigentlich brauch ich für meinen Fall da keine amixer kommandos da als input ja der Player gewählt wird.
Soundcardconfigfiles sind optional.
Für die 96khz muss ja eine gesondertes BCF erstellt werden wegen der Kanalreduzierung, richtig?
Ja. Immer wenn durch den Wechsel der Samplerate andere Parameter der Brutefirconfig mit beeinfluss werden; z.B. bei Mehrwegesysteme z.B. auch die Verzögerung (in samples) zwischen den verschiedenen Chassis.
VolverSamplerate=44100 48000 96000
VolverWorksetName=/home/udo/audio/bayft/worksets/9632_Skyline_2
WorksetsAvailable=/home/udo/audio/bayft/worksets/9632_Skyline_2
Die VolverSamplerate=nnnn darf als Attribut in der VolverConfig nur einen einzigen Wert haben.
WorksetsAvailable=xyz braucht es in der VolverConfig nicht. Diese Werte werden automatisch durch bayft erhoben und in der VolverStatusfile niedergelegt. ... aber wenns keine Paramer hat, funktioniert auch dies nicht (siehe config -g - Problem)

Zusammenfassend also: Schau doch, ob Du eine Bash 4.2 auf Dein System bekommst, oder, falls Du eine solche bereits hättest, sag mir bitte, ob ich das Workaround schreiben soll.

Beste Grüsse
Simon
Bild
Udor
Aktiver Hörer
Beiträge: 389
Registriert: 02.09.2010, 00:17

Beitrag von Udor »

Hallo Simon

Ok, Debian 6.04(Squeeze) arbeitet noch mit der 4.1 :roll: .
Gestern abend hab ich ein Dist-upgrade auf Wheezy gemacht und darf mich jetzt einer Bash 4.2 erfreuen.
Naja Debian war schon immer recht konservativ wie auch immer jetzt sieht das schon anders aus.

Um erst mal Jack und Aqualung als Fehlerquelle auszuschließen(da komm ich gleich noch drauf) hab ich ein "standard" Setup gebastelt mit SPDIF in und analog Out mit Filtern für 44,48 und 96khz.

So sieht die Ausgabe dann aus:

Code: Alles auswählen

root@udo-streamer:/home/udo# 
/home/udo/audio/bayft/bayft_loop starting... 

localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused

INFO: Worksets available: /home/udo/audio/bayft/worksets/9632_Skyline_2 44100 48000 96000

INFO: No soundcard configuration file(s) found

INFO: Candidate Workset: /home/udo/audio/bayft/worksets/9632_Skyline_2
INFO: Candidate Workset Samplerates Available: 44100 48000 96000 Hz
INFO: Candidate Workset Brutefir Configuration Files Available: brutefir_config_96000 brutefir_config
INFO: Candidate Brutefir Configuration File: brutefir_config
INFO: Candidate Samplerate: 48000Hz
stdin: is not a tty

BruteFIR v1.0k (March 2009)                                   (c) Anders Torger

localhost [127.0.0.1] 3000 (?) : Connection refused
Internal resolution is 64 bit floating point.
SSE2 capability detected -- optimisation enabled.
Creating 4 FFTW plans of size 8192...finished.
Loading 2 coefficient sets...finished.
Realtime priorities are min = 2, usermax = 1, mid = 3 and max = 4.
localhost [127.0.0.1] 3000 (?) : Connection refused
Estimated CPU clock rate is 1329.993 MHz. CPU count is 2.
Filters in process 0: 0 
Filters in process 1: 1 
localhost [127.0.0.1] 3000 (?) : Connection refused
Realtime priority 1 set for cli process (pid 3158)
Realtime priority 3 set for input process (pid 3150)
Realtime priority 4 set for filter process (pid 3157)
Realtime priority 4 set for filter process (pid 3156)
Realtime priority 3 set for output process (pid 3159)
Fixed I/O-delay is 8192 samples
Audio processing starts now

INFO: Brutefir is functional

INFO: Checked Workset: /home/udo/audio/bayft/worksets/9632_Skyline_2
INFO: Checked Workset samplerates: 44100 48000 96000

INFO: Convolver Workset: /home/udo/audio/bayft/worksets/9632_Skyline_2
INFO: Convolver Brutefir Configuration: brutefir_config
INFO: Convolver Samplerate: 48000Hz

INFO: Convolver Gain: -43.0dB

INFO: Convolver Gain: -20.0dB

INFO: Convolver Gain: -40.0dB

INFO: Convolver Gain: -10.0dB

INFO: Convolver Gain: -11.0dB

INFO: Convolver Gain: -200.0dB
stdin: is not a tty
localhost [127.0.0.1] 3000 (?) : Connection refused

INFO: Brutefir is off - has been completely killed

INFO: Brutefir startloop stopped
^C
root@udo-streamer:/home/udo# 
Sampleratenumschaltung geht und gain funkt auch :cheers:
Soweit so gut.
Bei Jack und Aqualung hab ich das Problem das scheinbar alles unter dem gleichen Benutzer laufen muss.
Starte ich bayft als root(als Benutzer startet brutefir nicht) klappt die verbindung zu jack nicht.

Ist es möglich das bayft auch als normaler Benutzer zu starten ? Wie gesagt wenn ich das mache scheitert es immer daran das er Brutefir nicht gestartet bekommt:

Code: Alles auswählen

udo@udo-streamer:~$ 
/home/udo/audio/bayft/bayft_loop starting... 

localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused

INFO: Worksets available: /home/udo/audio/bayft/worksets/9632_Skyline_2 44100 48000 96000

INFO: No soundcard configuration file(s) found

INFO: Candidate Workset: /home/udo/audio/bayft/worksets/9632_Skyline_2
INFO: Candidate Workset Samplerates Available: 44100 48000 96000 Hz
INFO: Candidate Workset Brutefir Configuration Files Available: brutefir_config_96000 brutefir_config
INFO: Candidate Brutefir Configuration File: brutefir_config
INFO: Candidate Samplerate: 48000Hz
su: Muss von einem Terminal gestartet werden
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
Alle Programme jetzt als root laufen zu lassen wollte ich eigentlich nicht.

Gruß Udo
Bild
Udor
Aktiver Hörer
Beiträge: 389
Registriert: 02.09.2010, 00:17

Beitrag von Udor »

Hat sich erledigt, habe einfach im bayft_loop skript root auf udo geändert sodass brutefir nicht als root sondern als Benutzer udo gestartet/gestopt wird damit klapts jetzt auch mit jack :cheers:.

Jetzt werd ich mir mal das "udo-skript" ansehen...

Gruß Udo
Bild
Daihedz
Aktiver Hörer
Beiträge: 793
Registriert: 25.06.2010, 15:09

Beitrag von Daihedz »

Hallo Udo

Sehr schön, Du scheinst auf der Zielgaraden, was mich sehr freut, zumal Du der Erste (und bislang der Einzige) bist, von welchem ich weiss, dass Du mit bayft experimentierst.

Frage zur Fehlermeldung "localhost [127.0.0.1] 3000 (?) : Connection refused"

Weisst Du, woher diese kommt? Welche Funktion, resp. welcher Aufruf innerhalb des Scripts generiert diese? Könntest Du einmal den DebugMode in der volver_config auf 1 oder on schalten? Dann wirst Du auf der Konsole haufenweise Meldungen zum Stand des Scripts erhalten, welche Funktion gerade abgearbeitet wird. Mit dieser Info wirst Du auch die entsprechenden Fehlermeldungen den Funktionen zuordnen können.

Beste Grüsse
Simon
Bild
Udor
Aktiver Hörer
Beiträge: 389
Registriert: 02.09.2010, 00:17

Beitrag von Udor »

Daihedz hat geschrieben:Hallo Udo

Sehr schön, Du scheinst auf der Zielgaraden, was mich sehr freut, zumal Du der Erste (und bislang der Einzige) bist, von welchem ich weiss, dass Du mit bayft experimentierst.
Das ist schade da solche Skripte sehr rar sind. Eigentlich ist doch unter Linux alles vorhanden was man zum konfortablen Convolven und Musikhören braucht. Was fehlt ist ein Programm was alles unter einen Hut bring.
Also Player>Convolver>Soundkarte + eine Oberfläche um alles komfortabel zu bedienen mit der Möglichkeit Filter manuell (für Hörvergleiche) und automatisch (für verschiede SRs) umzuschalten bzw. schalten zu lassen...
Brutefir ist m.M.n immernoch unerreicht was die Konfigurationsmöglichkleiten und Qualität angeht im Vergleich mit dem VST-Convolver oder aktuell der neue Convolver von Jriver.
Ich bilde mir auch ein(im moment lässt meine LS Konfig noch keine wirklichen hörvergleiche zu) das die Kombination Linux+Aqualung besser klingt als WinXP+Jriver.

Daihedz hat geschrieben:
Frage zur Fehlermeldung "localhost [127.0.0.1] 3000 (?) : Connection refused"

Weisst Du, woher diese kommt? Welche Funktion, resp. welcher Aufruf innerhalb des Scripts generiert diese? Könntest Du einmal den DebugMode in der volver_config auf 1 oder on schalten? Dann wirst Du auf der Konsole haufenweise Meldungen zum Stand des Scripts erhalten, welche Funktion gerade abgearbeitet wird. Mit dieser Info wirst Du auch die entsprechenden Fehlermeldungen den Funktionen zuordnen können.
Ich habe den Debugmodus mal eingeschaltet:

Code: Alles auswählen

root@udo-streamer:/home/udo# 
/home/udo/audio/bayft/bayft_loop starting... 

loopinits_loop_pre
loopinits_loop_pre -> brutefir_on_or_off_set
localhost [127.0.0.1] 3000 (?) : Connection refused
loopinits_loop_pre -- brutefir_on_or_off_set -> brutefir_transit
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
loopinits_loop_pre -- brutefir_on_or_off_set <- brutefir_transit
loopinits_loop_pre -- brutefir_on_or_off_set -- continue --
localhost [127.0.0.1] 3000 (?) : Connection refused
loopinits_loop_pre -- brutefir_on_or_off_set -> brutefir_kill
loopinits_loop_pre -- brutefir_on_or_off_set -- brutefir_kill -> brutefir_transit
localhost [127.0.0.1] 3000 (?) : Connection refused
loopinits_loop_pre -- brutefir_on_or_off_set -- brutefir_kill <- brutefir_transit
loopinits_loop_pre -- brutefir_on_or_off_set -- brutefir_kill -- continue --
localhost [127.0.0.1] 3000 (?) : Connection refused

/home/udo/audio/bayft/bayft_loop  brutefir_kill  22:35:19
INFO: Brutefir is off - but there are residual processes
loopinits_loop_pre -- brutefir_on_or_off_set <- brutefir_kill
loopinits_loop_pre -- brutefir_on_or_off_set -- continue --
loopinits_loop_pre <- brutefir_on_or_off_set
loopinits_loop_pre -- continue --
localhost [127.0.0.1] 3000 (?) : Connection refused
loopinits_loop_pre -> brutefir_kill
loopinits_loop_pre -- brutefir_kill -> brutefir_transit
localhost [127.0.0.1] 3000 (?) : Connection refused
loopinits_loop_pre -- brutefir_kill <- brutefir_transit
loopinits_loop_pre -- brutefir_kill -- continue --
localhost [127.0.0.1] 3000 (?) : Connection refused

/home/udo/audio/bayft/bayft_loop  brutefir_kill  22:35:19
INFO: Brutefir is off - but there are residual processes
loopinits_loop_pre <- brutefir_kill
loopinits_loop_pre -- continue --
loopinits_loop_pre -> fileparam_volverfiles_get
loopinits_loop_pre <- fileparam_volverfiles_get
loopinits_loop_pre -- continue --
loopinits_loop_pre
localhost [127.0.0.1] 3000 (?) : Connection refused
loopinits_brutefir_prestart
loopinits_brutefir_prestart -> fileparam_volverfile_init_checknfix
loopinits_brutefir_prestart -- fileparam_volverfile_init_checknfix -> fileparam_volverfiles_get
loopinits_brutefir_prestart -- fileparam_volverfile_init_checknfix <- fileparam_volverfiles_get
loopinits_brutefir_prestart -- fileparam_volverfile_init_checknfix -- continue --
loopinits_brutefir_prestart <- fileparam_volverfile_init_checknfix
loopinits_brutefir_prestart -- continue --
loopinits_brutefir_prestart -> worksets_scan
loopinits_brutefir_prestart -- worksets_scan -> workset_consistency_check
loopinits_brutefir_prestart -- worksets_scan -- workset_consistency_check -> fileparam_brutefirconfig_get
loopinits_brutefir_prestart -- worksets_scan -- workset_consistency_check <- fileparam_brutefirconfig_get
loopinits_brutefir_prestart -- worksets_scan -- workset_consistency_check -- continue --
loopinits_brutefir_prestart -- worksets_scan <- workset_consistency_check
loopinits_brutefir_prestart -- worksets_scan -- continue --

/home/udo/audio/bayft/bayft_loop  worksets_scan  22:35:20
INFO: Worksets available: /home/udo/audio/bayft/worksets/9632_Skyline_2 44100 48000 96000
loopinits_brutefir_prestart <- worksets_scan
loopinits_brutefir_prestart -- continue --
loopinits_brutefir_prestart -> fileparam_volverfiles_get
loopinits_brutefir_prestart <- fileparam_volverfiles_get
loopinits_brutefir_prestart -- continue --
loopinits_brutefir_prestart -> workset_check
loopinits_brutefir_prestart <- workset_check
loopinits_brutefir_prestart -- continue --
loopinits_brutefir_prestart -> workset_brutefirconfigs_scan
loopinits_brutefir_prestart <- workset_brutefirconfigs_scan
loopinits_brutefir_prestart -- continue --
loopinits_brutefir_prestart -> fileparam_volverfiles_get
loopinits_brutefir_prestart <- fileparam_volverfiles_get
loopinits_brutefir_prestart -- continue --
loopinits_brutefir_prestart -> fileparam_brutefirconfig_get
loopinits_brutefir_prestart <- fileparam_brutefirconfig_get
loopinits_brutefir_prestart -- continue --
loopinits_brutefir_prestart -> fileparam_volverfile_init_set
loopinits_brutefir_prestart -- fileparam_volverfile_init_set -> fileparam_volverfiles_get
loopinits_brutefir_prestart -- fileparam_volverfile_init_set <- fileparam_volverfiles_get
loopinits_brutefir_prestart -- fileparam_volverfile_init_set -- continue --
loopinits_brutefir_prestart -- fileparam_volverfile_init_set -> fileparam_volverfile_init_checknfix
loopinits_brutefir_prestart -- fileparam_volverfile_init_set -- fileparam_volverfile_init_checknfix -> fileparam_volverfiles_get
loopinits_brutefir_prestart -- fileparam_volverfile_init_set -- fileparam_volverfile_init_checknfix <- fileparam_volverfiles_get
loopinits_brutefir_prestart -- fileparam_volverfile_init_set -- fileparam_volverfile_init_checknfix -- continue --
loopinits_brutefir_prestart -- fileparam_volverfile_init_set -- fileparam_volverfile_init_checknfix -> fileparam_volverfiles_get
loopinits_brutefir_prestart -- fileparam_volverfile_init_set -- fileparam_volverfile_init_checknfix <- fileparam_volverfiles_get
loopinits_brutefir_prestart -- fileparam_volverfile_init_set -- fileparam_volverfile_init_checknfix -- continue --
loopinits_brutefir_prestart -- fileparam_volverfile_init_set -- fileparam_volverfile_init_checknfix -> workset_check
loopinits_brutefir_prestart -- fileparam_volverfile_init_set -- fileparam_volverfile_init_checknfix <- workset_check
loopinits_brutefir_prestart -- fileparam_volverfile_init_set -- fileparam_volverfile_init_checknfix -- continue --
loopinits_brutefir_prestart -- fileparam_volverfile_init_set -- fileparam_volverfile_init_checknfix -> fileparam_volverfiles_get
loopinits_brutefir_prestart -- fileparam_volverfile_init_set -- fileparam_volverfile_init_checknfix <- fileparam_volverfiles_get
loopinits_brutefir_prestart -- fileparam_volverfile_init_set -- fileparam_volverfile_init_checknfix -- continue --
loopinits_brutefir_prestart -- fileparam_volverfile_init_set -- fileparam_volverfile_init_checknfix -> workset_check
loopinits_brutefir_prestart -- fileparam_volverfile_init_set -- fileparam_volverfile_init_checknfix <- workset_check
loopinits_brutefir_prestart -- fileparam_volverfile_init_set -- fileparam_volverfile_init_checknfix -- continue --
loopinits_brutefir_prestart -- fileparam_volverfile_init_set <- fileparam_volverfile_init_checknfix
loopinits_brutefir_prestart -- fileparam_volverfile_init_set -- continue --
loopinits_brutefir_prestart <- fileparam_volverfile_init_set
loopinits_brutefir_prestart -- continue --
loopinits_brutefir_prestart -> soundcard_amixercontrols_set

/home/udo/audio/bayft/bayft_loop  soundcard_amixercontrols_set  22:35:21
INFO: No soundcard configuration file(s) found
loopinits_brutefir_prestart <- soundcard_amixercontrols_set
loopinits_brutefir_prestart -- continue --

/home/udo/audio/bayft/bayft_loop  loopinits_brutefir_prestart  22:35:21
INFO: Candidate Workset: /home/udo/audio/bayft/worksets/9632_Skyline_2
/home/udo/audio/bayft/bayft_loop  loopinits_brutefir_prestart  22:35:21
INFO: Candidate Workset Samplerates Available: 44100 48000 96000 Hz
/home/udo/audio/bayft/bayft_loop  loopinits_brutefir_prestart  22:35:21
INFO: Candidate Workset Brutefir Configuration Files Available: brutefir_config_96000 brutefir_config
/home/udo/audio/bayft/bayft_loop  loopinits_brutefir_prestart  22:35:21
INFO: Candidate Brutefir Configuration File: brutefir_config
/home/udo/audio/bayft/bayft_loop  loopinits_brutefir_prestart  22:35:21
INFO: Candidate Samplerate: 48000Hz
loopinits_brutefir_prestart
loopinits_brutefir_start
loopinits_brutefir_start -> brutefir_kill
loopinits_brutefir_start -- brutefir_kill -> brutefir_transit
localhost [127.0.0.1] 3000 (?) : Connection refused
loopinits_brutefir_start -- brutefir_kill <- brutefir_transit
loopinits_brutefir_start -- brutefir_kill -- continue --
localhost [127.0.0.1] 3000 (?) : Connection refused

/home/udo/audio/bayft/bayft_loop  brutefir_kill  22:35:22
INFO: Brutefir is off - but there are residual processes
loopinits_brutefir_start <- brutefir_kill
loopinits_brutefir_start -- continue --
loopinits_brutefir_start -> fileparam_brutefirconvolverconfig_delete
loopinits_brutefir_start -- fileparam_brutefirconvolverconfig_delete -> fileparam_volverfiles_get
loopinits_brutefir_start -- fileparam_brutefirconvolverconfig_delete <- fileparam_volverfiles_get
loopinits_brutefir_start -- fileparam_brutefirconvolverconfig_delete -- continue --
loopinits_brutefir_start -- fileparam_brutefirconvolverconfig_delete -> fileparam_brutefirconfig_get
loopinits_brutefir_start -- fileparam_brutefirconvolverconfig_delete <- fileparam_brutefirconfig_get
loopinits_brutefir_start -- fileparam_brutefirconvolverconfig_delete -- continue --
loopinits_brutefir_start <- fileparam_brutefirconvolverconfig_delete
loopinits_brutefir_start -- continue --
loopinits_brutefir_start -> fileparam_volverfiles_get
loopinits_brutefir_start <- fileparam_volverfiles_get
loopinits_brutefir_start -- continue --

BruteFIR v1.0k (March 2009)                                   (c) Anders Torger

Internal resolution is 64 bit floating point.
SSE2 capability detected -- optimisation enabled.
Creating 4 FFTW plans of size 8192...loopinits_brutefir_start -> brutefir_transit
finished.
Loading 2 coefficient sets...localhost [127.0.0.1] 3000 (?) : Connection refused
finished.
JACK I/O: Warning: JACK is not running with SCHED_FIFO or SCHED_RR (realtime).
Realtime priorities are min = 14, usermax = 13, mid = 15 and max = 16.
Estimated CPU clock rate is 1330.033 MHz. CPU count is 2.
Filters in process 0: 0 
Filters in process 1: 1 
localhost [127.0.0.1] 3000 (?) : Connection refused
Realtime priority 15 set for callback process (pid 20314)
Realtime priority 13 set for cli process (pid 20323)
Realtime priority 16 set for filter process (pid 20321)
Realtime priority 16 set for filter process (pid 20322)
Audio processing starts now
loopinits_brutefir_start <- brutefir_transit
loopinits_brutefir_start -- continue --
loopinits_brutefir_start -> brutefir_on_or_off_set

/home/udo/audio/bayft/bayft_loop  brutefir_on_or_off_set  22:35:22
INFO: Brutefir is functional
loopinits_brutefir_start <- brutefir_on_or_off_set
loopinits_brutefir_start -- continue --
loopinits_brutefir_start
loopinits_brutefir_poststart
loopinits_brutefir_poststart -> fileparam_volverfiles_get
loopinits_brutefir_poststart <- fileparam_volverfiles_get
loopinits_brutefir_poststart -- continue --
loopinits_brutefir_poststart -> brutefir_cli_gain_set
loopinits_brutefir_poststart -- brutefir_cli_gain_set -> brutefir_on_or_off_set
loopinits_brutefir_poststart -- brutefir_cli_gain_set <- brutefir_on_or_off_set
loopinits_brutefir_poststart -- brutefir_cli_gain_set -- continue --
loopinits_brutefir_poststart <- brutefir_cli_gain_set
loopinits_brutefir_poststart -- continue --
loopinits_brutefir_poststart -> fileparam_volverfiles_get
loopinits_brutefir_poststart <- fileparam_volverfiles_get
loopinits_brutefir_poststart -- continue --
loopinits_brutefir_poststart -> fileparam_volverfiles_get
loopinits_brutefir_poststart <- fileparam_volverfiles_get
loopinits_brutefir_poststart -- continue --
loopinits_brutefir_poststart -> workset_check

/home/udo/audio/bayft/bayft_loop  workset_check  22:35:23
INFO: Checked Workset: /home/udo/audio/bayft/worksets/9632_Skyline_2
/home/udo/audio/bayft/bayft_loop  workset_check  22:35:23
INFO: Checked Workset samplerates: 44100 48000 96000
loopinits_brutefir_poststart <- workset_check
loopinits_brutefir_poststart -- continue --
loopinits_brutefir_poststart -> fileparam_brutefirconfig_get
loopinits_brutefir_poststart <- fileparam_brutefirconfig_get
loopinits_brutefir_poststart -- continue --
loopinits_brutefir_poststart -> brutefir_cli_gain_get
loopinits_brutefir_poststart <- brutefir_cli_gain_get
loopinits_brutefir_poststart -- continue --

/home/udo/audio/bayft/bayft_loop  info_volver_status  22:35:25
INFO: Convolver Workset: /home/udo/audio/bayft/worksets/9632_Skyline_2
/home/udo/audio/bayft/bayft_loop  info_volver_status  22:35:25
INFO: Convolver Brutefir Configuration: brutefir_config
/home/udo/audio/bayft/bayft_loop  info_volver_status  22:35:25
INFO: Convolver Samplerate: 48000Hz

loopinits_brutefir_poststart -- info_volver_status -> info_gain
/home/udo/audio/bayft/bayft_loop  info_gain  22:35:25
INFO: Convolvr Gain: 0dB
loopinits_brutefir_poststart -- info_volver_status <- info_gain
loopinits_brutefir_poststart -- info_volver_status -- continue --
loopinits_brutefir_poststart
loopinits_loop_bottom
loopinits_loop_bottom -> fileparam_volverfile_init_checknfix
loopinits_loop_bottom -- fileparam_volverfile_init_checknfix -> fileparam_volverfiles_get
loopinits_loop_bottom -- fileparam_volverfile_init_checknfix <- fileparam_volverfiles_get
loopinits_loop_bottom -- fileparam_volverfile_init_checknfix -- continue --
loopinits_loop_bottom <- fileparam_volverfile_init_checknfix
loopinits_loop_bottom -- continue --
loopinits_loop_bottom -> fileparam_volverfiles_get
loopinits_loop_bottom <- fileparam_volverfiles_get
loopinits_loop_bottom -- continue --
loopinits_loop_bottom -> fileparam_volverfiles_get
loopinits_loop_bottom <- fileparam_volverfiles_get
loopinits_loop_bottom -- continue --
loopinits_loop_bottom
loopinits_loop_post
loopinits_loop_post -> brutefir_kill
loopinits_loop_post -- brutefir_kill -> brutefir_transit
localhost [127.0.0.1] 3000 (?) : Connection refused
loopinits_loop_post -- brutefir_kill <- brutefir_transit
loopinits_loop_post -- brutefir_kill -- continue --
localhost [127.0.0.1] 3000 (?) : Connection refused

/home/udo/audio/bayft/bayft_loop  brutefir_kill  22:35:26
INFO: Brutefir is off - but there are residual processes
loopinits_loop_post <- brutefir_kill
loopinits_loop_post -- continue --

/home/udo/audio/bayft/bayft_loop  loopinits_loop_post  22:35:26
INFO: Brutefir startloop stopped
Die Funktion brutefir_on_off_set scheint der Übeltäter zu sein. Brutefir wird erst eine ganze weile später gestartet.
Wenn ich das richtig verstanden hab schaut das Skript nach ob schon ein Brutefir Prozess läuft und das scheint nicht so richtig zu funktionieren.

Mich würde mal interessieren wie dein Setup genau aussieht bzw. wie du das Skript genau einsetzt. Regelst du die Lautstärke auch rein über das Skript oder ist da noch eine analoge LS Regelung vorhanden ? Schaltet das Skript die Filter(bzw. Configs) bei wechselnder SR automatisch um sofern autosync z.b. am SPDIF Eingang aktiviert ist ?

Ich muss auch dazu sagen das ich von Bashskripting wenig bis keine Ahnung habe. Wäre schon wenn du mir noch mal Erläutern könntest wie du das mit der Einbeziehung von Jack und Aqualung genau meinst.

Mein "Startskript" was ich sonst benutzt habe sah bis dato wie folgt aus:

Code: Alles auswählen

!/bin/bash

### alte Instanzen beenden ###
killall jackd 
killall aqualung

### Amixer Kommandos für Soundkarte 
hdsp-analog_44
sleep 1

### jackd im RT-Modus und passender Samplerate starten
/usr/bin/jackd -R -P20 -d alsa -dhw:3 -r44100 -p256 -n2 -H & 
sleep 2

### Aqualung ohne Jackverbindungen starten ###
aqualung -o jack &  
sleep 2

### start von Brutefir mit passender Konfig im seperaten X-Term Fenster zur Überwachung ####
xterm -title BruteFIR -geometry 80x6-0+30 -e /usr/local/bin/brutefir -nodefault /home/udo/audiovero/brutefir/configs/play/conf_hdsp-analog_f0_44
Damit startet Jack,Aqualung und Brutefir im 44khz Modus. Davon hab ich mir dann entsprechende Skripte für jeweils 44,48,88 und 96khz gebastelt die über einen Schnellstarter in der Leiste gestertet werden.

Mal sehen wenn man das ganze in verbindung mit deinem Skript noch etwas komfortabler gestalten könnte wäre das toll.

P.S. Hast du zufällig eine Ahnung warum jackd scheinbar nicht im RT-Modus startet ? Komischerweise seit dem Distupgrade. Brutefir meckert jetzt immer das jack nicht im rt-modus läuft...

In der /etc/security/limits.d/audio.conf ist eigentlich alles nötige dafür eingetragen:

Code: Alles auswählen

# Provided by the jackd package.
#
# Changes to this file will be preserved.
#
# If you want to enable/disable realtime permissions, run
#
#    dpkg-reconfigure -p high jackd

@audio   -  rtprio     99 
@audio   -  memlock    1549122
@audio   -  nice      -19
Gruß Udo
Bild
Daihedz
Aktiver Hörer
Beiträge: 793
Registriert: 25.06.2010, 15:09

Beitrag von Daihedz »

Grüssdich Udo
Udor hat geschrieben:
Ich habe den Debugmodus mal eingeschaltet:

Code: Alles auswählen

root@udo-streamer:/home/udo# 
/home/udo/audio/bayft/bayft_loop starting... 

loopinits_loop_pre
loopinits_loop_pre -> brutefir_on_or_off_set
localhost [127.0.0.1] 3000 (?) : Connection refused
loopinits_loop_pre -- brutefir_on_or_off_set -> brutefir_transit
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
...
loopinits_loop_pre -- brutefir_on_or_off_set <- brutefir_transit
loopinits_loop_pre -- brutefir_on_or_off_set -- continue --
localhost [127.0.0.1] 3000 (?) : Connection refused
...
Die Funktion brutefir_on_off_set scheint der Übeltäter zu sein. Brutefir wird erst eine ganze weile später gestartet.
Wenn ich das richtig verstanden hab schaut das Skript nach ob schon ein Brutefir Prozess läuft und das scheint nicht so richtig zu funktionieren.
bayft kontrolliert wiederholt den Funktionsstatus von Brutefir und bedient sich dabei des CLI (common language interface) von Brutefir, welches defaultmässig über den Port 3000 läuft, z.B. unter anderem innerhalb einer Schleife in der Funktion brutefir_transit (diese stellt sicher, dass beim Start Brutefir vollständig funktional, oder aber beim Stop Brutefir vollständig heruntergefahren ist, bevor das Script weiterläuft, um instabil-transitorische Zustände auszuschliessen).

Offenbar ist es auf Deinem System nicht möglich, das CLI über den Port 3000 anzusprechen, da
localhost [127.0.0.1] 3000 (?) : Connection refused. Deshalb loop'd brutefir_transit so lange und beinahe ewig vor sich hin, bis die voreingestellte grosszügig bemessene maxloop-default-Zeit von 10'' erreicht ist.

Als nächsten Schritt müsstest Du also sicherstellen,dass auf Deinem System der Aufruf des CLI über den Port 3000 möglich wird.
Udor hat geschrieben: Mich würde mal interessieren wie dein Setup genau aussieht bzw. wie du das Skript genau einsetzt. Regelst du die Lautstärke auch rein über das Skript oder ist da noch eine analoge LS Regelung vorhanden ? Schaltet das Skript die Filter(bzw. Configs) bei wechselnder SR automatisch um sofern autosync z.b. am SPDIF Eingang aktiviert ist ?
Meine aktuelle Brutefir Config:

Code: Alles auswählen

#############################################
## brutefirconfig
## Filterlänge 64k
## 4-Weg-Frequenzweiche Horbach-Keele
## Soundcard: RME Hammerfall DSP Muliface (I)
## Analog inputs 1-2
#############################################
 

float_bits: 64;             # internal floating point precision
sampling_rate: 44100;       # sampling rate in Hz of audio interfaces
#filter_length: 32768,2;
#filter_length: 16384,4;
filter_length: 8192,8;
#filter_length: 4096,16;
#
allow_poll_mode: true;      # allow use of input poll mode
lock_memory: false;         # try to lock memory if realtime prio is set - set to false, dafür keine systemweite SWAP-file
max_dither_table_size: 0;   # maximum size in bytes of precalculated dither
powersave: false;            # pause filtering when input is zero - nur sinnvoll für Leistungsmessungen ohne Eingangssignal
sdf_length: 0;              # subsample filter half length in samples
#
overflow_warnings: true;    # echo warnings to stderr if overflow occurs
monitor_rate: true;         # monitor sample rate
show_progress: true;        # echo filtering progress to stderr
#
convolver_config: "/home/privat/bayft/brutefir_convolver"; # location of convolver config file
#config_file: "/home/privat/bayft/brutefir_config"; # standard location of main config file
#modules_path: "/usr/lib/brutefir"; # extra path where to find BruteFIR modules
modules_path: "/home/privat/bayft";

 
## LOGIC ##

logic: "cli" { port: 3000; };


## COEFFS ##
 
#coeff <STRING: name | NUMBER: index> {
#	filename: <STRING: filename>; | <NUMBER: shmid>/<NUMBER: offset>/<NUMBER: blocks>[,...];
#	format: <STRING: sample format string | "text" | "processed">;
#	attenuation: <NUMBER: attenuation in dB>;
#	blocks: <NUMBER: length in blocks>;
#	skip: <NUMBER: bytes to skip in beginning of file>;
#	shared_mem: <BOOLEAN: allocate in shared mem>
#};

coeff "Coeff_Overall_L" {
	filename: "/home/privat/bayft_worksets/Stuttgart_AD/PRCcorr_44100_L.dbl";
	format: "FLOAT64_LE";
	attenuation: 0.0;
	blocks: -1;
	skip: 0;
	shared_mem: false;
};

coeff "Coeff_Overall_R" {
	filename: "/home/privat/bayft_worksets/Stuttgart_AD/PRCcorr_44100_R.dbl";
	format: "FLOAT64_LE";
	attenuation: 0.0;
	blocks: -1;
	skip: 0;
	shared_mem: false;
};

coeff "Coeff_T29MF" {
	filename: "/home/privat/bayft_worksets/Stuttgart_AD/XOcorr_T29_44100.dbl";
	format: "FLOAT64_LE";
	attenuation: 14.0;
	blocks: -1;
	skip: 0;
	shared_mem: false;
};

coeff "Coeff_W12CY" {
	filename: "/home/privat/bayft_worksets/Stuttgart_AD/XOcorr_W12_44100.dbl";
	format: "FLOAT64_LE";
	attenuation: 15.0;
	blocks: -1;
	skip: 0;
	shared_mem: false;
};

coeff "Coeff_L18RNX" {
	filename: "/home/privat/bayft_worksets/Stuttgart_AD/XOcorr_L18_44100.dbl";
	format: "FLOAT64_LE";
	attenuation: 9.3;
	blocks: -1;
	skip: 0;
	shared_mem: false;
};

coeff "Coeff_XXLS12" {
	filename: "/home/privat/bayft_worksets/Stuttgart_AD/XOcorr_XXLS_44100.dbl";
	format: "FLOAT64_LE";
	attenuation: 0.0;
	blocks: -1;
	skip: 0;
	shared_mem: false;
};


## INPUT ##

#input <STRING: name | NUMBER: index>[, ...] {
#       device: <STRING: I/O module name> { <I/O module settings>> };
#       sample: <STRING: sample format>;
#       channels: <NUMBER: open channels>[/<NUMBER: channel index>[, ...]];
#	delay: <NUMBER: delay in samples>[, ...];
#	subdelay: <NUMBER: additional delay in 1/100th samples (valid range -99 - 99)>[, ...];
#	maxdelay: <NUMBER: maximum delay for dynamic changes>;
#	individual_maxdelay: <NUMBER: maximum delay for dynamic changes>[, ...];;
#	mute: <BOOLEAN: mute channel>[, ...];
#	mapping: <NUMBER: channel index>[, ...];
#};

input "In_L", "In_R" {
	device: "alsa" { device: "hw:0";  }; 		# ALSA in
	sample: "S24_4LE";

#	CHANNELSOPTIONS
#	channels: 18/0,1;			# Analog inputs 1-2
#	channels: 18/16,17;			# SPDIF input

	channels: 18/0,1;

	delay: 0,0;
#	subdelay: 0,0;
#	maxdelay: -1;
#	individual_maxdelay: 0,0;
	mute: false, false;
};


## OUTPUT ##

#output <STRING: name | NUMBER: index>[, ...] {
#	device: <same syntax as for the input structure>;
#	sample: <same syntax as for the input structure>;
#	channels: <same syntax as for the input structure>;
#	delay: <same syntax as for the input structure>;
#	subdelay: <NUMBER: additional delay in 1/100th samples (valid range -99 - 99)>[, ...];
#	maxdelay: <same syntax as for the input structure>;
#	individual_maxdelay: <same syntax as for the input structure>;
#	mute: <same syntax as for the input structure>;
#	mapping: <same syntax as for the input structure>;
#	dither: <BOOLEAN: apply dither>;
#	merge: <BOOLEAN: merge discontinuities at coeff change>;
#};

output 	"Out_T29MF_L","Out_W12CY_L","Out_L18RNX_L","Out_XXLS12_L","Out_T29MF_R","Out_W12CY_R","Out_L18RNX_R","Out_XXLS12_R" {
	device: "alsa" { device: "hw:0,0"; };
	sample: "S24_4LE";
	channels: 18/0,1,2,3,4,5,6,7;
	delay: 12,3,2,0,12,3,2,0;
#	maxdelay: -1;
#	individual_maxdelay: 0,0,0,0,0,0,0,0;
	mute: false,false,false,false,false,false,false,false;
	dither: true;
};
 

## FILTERS ##
 
#filter <STRING: name | NUMBER: index> {
#	from_inputs: <STRING: name | NUMBER: index>[/<NUMBER:attenuation in dB>][/<NUMBER:multiplier>][, ...];
#	from_filters: <same syntax as from_inputs field>;
#	200 <same syntax as from_inputs field>;
#	to_filters: <STRING: name | NUMBER: index>[, ...];
#	process: <NUMBER: process index>;
#	coeff: <STRING: name | NUMBER: index>;
#	delay: <NUMBER: pre-delay in blocks>;
#	crossfade: <BOOLEAN: cross-fade when coefficient is changed>;
#};

filter 	"Filt_Overall_L" {
        from_inputs: "In_L"/0.0;
        to_filters: "Filt_T29MF_L", "Filt_W12CY_L", "Filt_L18RNX_L", "Filt_XXLS12_L" ;
        process: -1;
	coeff: "Coeff_Overall_L";
#	coeff: -1;
	delay: 0;
	crossfade: false;
};

filter 	"Filt_Overall_R" {
        from_inputs: "In_R"/0.0;
        to_filters: "Filt_T29MF_R", "Filt_W12CY_R", "Filt_L18RNX_R", "Filt_XXLS12_R" ;
        process: -1;
	coeff: "Coeff_Overall_R";
#	coeff: -1;
	delay: 0;
	crossfade: false;
};

filter 	"Filt_T29MF_L" {
        from_filters: "Filt_Overall_L"/0.0;
        to_outputs: "Out_T29MF_L"/200;
        process: -1;
	coeff: "Coeff_T29MF";
#	coeff: -1;
	delay: 0;
	crossfade: false;
};

filter 	"Filt_T29MF_R" {
        from_filters: "Filt_Overall_R"/0.0;
        to_outputs: "Out_T29MF_R"/200;
        process: -1;
	coeff: "Coeff_T29MF";
#	coeff: -1;
	delay: 0;
	crossfade: false;
};

filter 	"Filt_W12CY_L" {
        from_filters: "Filt_Overall_L"/0.0;
        to_outputs: "Out_W12CY_L"/200;
        process: -1;
	coeff: "Coeff_W12CY";
#	coeff: -1;
	delay: 0;
	crossfade: false;
};

filter 	"Filt_W12CY_R" {
        from_filters: "Filt_Overall_R"/0.0;
        to_outputs: "Out_W12CY_R"/200;
        process: -1;
	coeff: "Coeff_W12CY";
#	coeff: -1;
	delay: 0;
	crossfade: false;
};

filter 	"Filt_L18RNX_L" {
	from_filters: "Filt_Overall_L"/0.0;
        to_outputs: "Out_L18RNX_L"/200;
	process: -1;
	coeff: "Coeff_L18RNX";
#	coeff: -1;
	delay: 0;
	crossfade: false;
};

filter 	"Filt_L18RNX_R" {
	from_filters: "Filt_Overall_R"/0.0;
        to_outputs: "Out_L18RNX_R"/200;
	process: -1;
	coeff: "Coeff_L18RNX";
#	coeff: -1;
	delay: 0;
	crossfade: false;
};

filter 	"Filt_XXLS12_L" {
        from_filters: "Filt_Overall_L"/0.0;
        to_outputs: "Out_XXLS12_L"/200;
        process: -1;
	coeff: "Coeff_XXLS12";
#	coeff: -1;
	delay: 0;
	crossfade: false;
};

filter 	"Filt_XXLS12_R" {
        from_filters: "Filt_Overall_R"/0.0;
        to_outputs: "Out_XXLS12_R"/200;
        process: -1;
	coeff: "Coeff_XXLS12";
#	coeff: -1;
	delay: 0;
	crossfade: false;
};

Die Lautstärke regle ich ausschliesslich mittels des bayft interfaces, z.B. :
# bayft 23.6
ergibt einen Pegel von -23.6dB auf allen Kanälen.

Für die automatische Umschaltung der Samplerate bedarf es einer Erfassung der SR, welche am SPDIF-Eingang der Soundkarte ansteht. Ich habe derzeit eine solche Lösung für ein RME HDSP Multiface I implementiert, welche den Status der Karte aus /proc/asound/card0/hdsp ausliest. Falls das Script nicht für Deine (HDSP) Karte funktionieren sollte, wäre es ein einfaches, es gemäss dem readout von
# cat /proc/asound/card0/hdsp
umzuschreiben.
Udor hat geschrieben: ... mal Erläutern könntest wie du das mit der Einbeziehung von Jack und Aqualung genau meinst ....
... Jack,Aqualung und Brutefir im 44khz Modus. Davon hab ich mir dann entsprechende Skripte für jeweils 44,48,88 und 96khz gebastelt ...
Ich benutze aktuell weder Jack, noch Aqualung. Da eine Streaming-Lösung jedoch von allgemeinem Interesse sein könnte, werde ich versuchsweise ein Aqualung-Jack-Brutefir-bayft-bash-script (mit hoffentlich automatischer Umschaltung der SR) basteln. ... Denmächst in diesem Theater ...

Warum Jackd bei Dir seit dem Debian-Update nicht mehr im RT-Modul läuft, kann ich nicht beantworten.

Beste Grüsse
Simon
Bild
Udor
Aktiver Hörer
Beiträge: 389
Registriert: 02.09.2010, 00:17

Beitrag von Udor »

Hallo Simon
bayft kontrolliert wiederholt den Funktionsstatus von Brutefir und bedient sich dabei des CLI (common language interface) von Brutefir, welches defaultmässig über den Port 3000 läuft, z.B. unter anderem innerhalb einer Schleife in der Funktion brutefir_transit (diese stellt sicher, dass beim Start Brutefir vollständig funktional, oder aber beim Stop Brutefir vollständig heruntergefahren ist, bevor das Script weiterläuft, um instabil-transitorische Zustände auszuschliessen).

Offenbar ist es auf Deinem System nicht möglich, das CLI über den Port 3000 anzusprechen, da
localhost [127.0.0.1] 3000 (?) : Connection refused. Deshalb loop'd brutefir_transit so lange und beinahe ewig vor sich hin, bis die voreingestellte grosszügig bemessene maxloop-default-Zeit von 10'' erreicht ist.
Ne ne, der "looped" nur so lange for sich hin bis Brutefir gestartet ist was ja(wenn du mal ein stück runter scrollst) auch passiert. Dann ist ruhe und Bayft wartet schön ruhig auf eine Eingabe. Es lassen sich Die Filter umstellen, Lautstärke verändern etc. Somit muss doch die Verbindung per CLI auch klappen.
Die Frage ist warum der erst 5 sek Fehlermeldungen auspuckt und dann erst Brutefir startet.

Oder ist das so gedacht das Brutefir vor Bayft gestartet werden muss ?
Ich bin jetzt davon ausgegangen das Bayft schaut ob Brutefir schon läuft und wenn nicht es eben gestartet wird.

Was immer mal wieder auftaucht das "kill_brutefir" schon mal meldet das noch risiduale Prozesse" von Brutefir laufen...

Vielleicht noch mal als Hinweis Brutefir/Jack/Aqualung wird als Benutzer "udo" gestartet bayft selbst muss aber als root gestartet werden sonst bekomme ich immer:
"su: muss von einem Terminal gestartet werden"

Alternativ könnte ich noch mal versuchen alle Programme als root laufen zu lassen nicht das hier noch was probleme macht.
Daihedz hat geschrieben:Für die automatische Umschaltung der Samplerate bedarf es einer Erfassung der SR, welche am SPDIF-Eingang der Soundkarte ansteht. Ich habe derzeit eine solche Lösung für ein RME HDSP Multiface I implementiert, welche den Status der Karte aus /proc/asound/card0/hdsp ausliest. Falls das Script nicht für Deine (HDSP) Karte funktionieren sollte, wäre es ein einfaches, es gemäss dem readout von
# cat /proc/asound/card0/hdsp
umzuschreiben.
Interessant, arbeitest du nicht auch mit der 9632 ? Die Frage ist nur wie man intern sowas abfängt. Es steht ja dann kein Signal am SPDIF an sondern die Software muss die SR vorgeben. Dazu kommt das Aqualung fest auf die SR von Alsa bzw Jack eingestellt ist. Es ist so ausgelgt das beim abspielen von Files die nicht der eingestellten SR entsprechen automatisch ein resampling vornimmt. Das lässt sich meines Wissens auch nicht abstellen.
Eigentlich müsste es genau andersrum laufen Aqualung also der Player gibt die SR vor und der rest passt sich an.
Bei mpd sieht das m.w. ähnlich aus bin mir da aber nicht ganz sicher. Hatte mal kurz ein mpd Setup installiert bin dann aber wieder auf Aqualung zurück.
Daihedz hat geschrieben:Ich benutze aktuell weder Jack, noch Aqualung. Da eine Streaming-Lösung jedoch von allgemeinem Interesse sein könnte, werde ich versuchsweise ein Aqualung-Jack-Brutefir-bayft-bash-script (mit hoffentlich automatischer Umschaltung der SR) basteln. ... Denmächst in diesem Theater ...
Ja bitte ich bin der erste der das testet :cheers:

Gruß Udo

P.S. Wie schaltest du eigentlich die Filter(innerhalb von einer SR) um ? Switcht du dafür auch komplett auf ein anderes Workspace ?
Bild
Daihedz
Aktiver Hörer
Beiträge: 793
Registriert: 25.06.2010, 15:09

Beitrag von Daihedz »

Grüssdich Udo
Udor hat geschrieben: Es lassen sich Die Filter umstellen, Lautstärke verändern etc. Somit muss doch die Verbindung per CLI auch klappen.
Das ist erfreulich, und Deine Folgerung stimmt.
Udor hat geschrieben: Die Frage ist warum der erst 5 sek Fehlermeldungen auspuckt und dann erst Brutefir startet.
Die Fehlermeldung scheint also eher ein Schönheitsproblem zu sein und die Funktion von bayft nicht zu beeinflussen. Dem gehe ich aber dennoch nach.
Udor hat geschrieben: Oder ist das so gedacht das Brutefir vor Bayft gestartet werden muss? Ich bin jetzt davon ausgegangen das Bayft schaut ob Brutefir schon läuft und wenn nicht es eben gestartet wird.
Bayft kümmert sich autonom und die Start-/Stop-Vorgänge von Brutefir. Falls bereits ein Brutefir beim Start der bayft loop werkelt, wird dieses sogar per killall brutefir abgeschossen.
Udor hat geschrieben: Was immer mal wieder auftaucht das "kill_brutefir" schon mal meldet das noch risiduale Prozesse" von Brutefir laufen...
Dies scheint ein Programmfehler zu sein. Gehe dem nach.
Udor hat geschrieben: Vielleicht noch mal als Hinweis Brutefir/Jack/Aqualung wird als Benutzer "udo" gestartet bayft selbst muss aber als root gestartet werden sonst bekomme ich immer:
"su: muss von einem Terminal gestartet werden"
Alternativ könnte ich noch mal versuchen alle Programme als root laufen zu lassen nicht das hier noch was probleme macht.
Ja, bitte versuche das. Bei der Rechtevergabe kenne ich nicht einmal die Sättel (soll eine Steigerungsform von "... bin nicht sattelfest" sein). Bayft wurde deshalb im Sinne einer Firmware für eine reine Faltungskiste gescriptet (wie z.B. bei einer Waschmaschine, wo es keine x User mit unterschiedlichen Rechtevergaben gibt). Deshalb wurden von mir keine anderen Setups getestet, als die Verwendung von bayft als root. Das Argument der dedizierten Firmware ist also zugegebenermassen so etwas wie aus einer Not eine Tugend gemacht...

Udor hat geschrieben: Interessant, arbeitest du nicht auch mit der 9632 ?
Doch, die stecken aber in einer produktiven Kiste, welche ich erst dann disassembliere, wenn bayft felsenfest ist und die periphere Software (Fernsteuerung, Gerätekontrolle) dazu implementiert ist.
Udor hat geschrieben: Die Frage ist nur wie man intern sowas (Samplerate) abfängt. Es steht ja dann kein Signal am SPDIF an sondern die Software muss die SR vorgeben. Dazu kommt das Aqualung fest auf die SR von Alsa bzw Jack eingestellt ist. Es ist so ausgelgt das beim abspielen von Files die nicht der eingestellten SR entsprechen automatisch ein resampling vornimmt. Das lässt sich meines Wissens auch nicht abstellen.
Eigentlich müsste es genau andersrum laufen Aqualung also der Player gibt die SR vor und der rest passt sich an.
Ich habe bayft zunächst als reine Faltungskiste für physikalische Inputs (SPDIF und/oder AD-in) implementiert. Die Werte der SR bei SPDIF in stehen auf ALSA-Niveau beim HDSP-Treibrer, beim DIGI 96-Treiber und beim AES32-Treiber in Dateien unter /proc/asound/... zur Verfügung.

Bei Streamern ist dies wohl etwas anders. Da müsste die SR wie Du sagtst zuerst direkt aus dem Streaming Client ausgelesen werden können, um dann die Soundkarte damit zu konfigurieren, und dann Jackd, und dann Brutefir.
Udor hat geschrieben: P.S. Wie schaltest du eigentlich die Filter(innerhalb von einer SR) um ? Switcht du dafür auch komplett auf ein anderes Workspace ?
Ja, bayft übernimmt das, nicht das CLI.

Grüsse
Simon

PS und Frage: Sollte unser Dialog vielleicht nicht über PN erfolgen - vielleicht nerven oder langweilen sich die anderen Forenten.
Bild
Daihedz
Aktiver Hörer
Beiträge: 793
Registriert: 25.06.2010, 15:09

Beitrag von Daihedz »

Hallo Udo

Ich habe Deinen Debug-Log nochmals durchgeschaut:
...
loopinits_loop_pre
loopinits_loop_pre -> brutefir_on_or_off_set
localhost [127.0.0.1] 3000 (?) : Connection refused
loopinits_loop_pre -- brutefir_on_or_off_set -> brutefir_transit
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
localhost [127.0.0.1] 3000 (?) : Connection refused
....
Versuche doch bitte mal auf einer Console folgendes einzugeben, sowohl wenn Brutefir nicht läuft, als auch wenn Brutefir läuft:

$ nc localhost 3000

bayft prüft mittels eines Aufrufs von port 3000, ob die die CLI und somit auch Brutefir funktional sind. Dies erfolgt an mehreren Stellen des Scripts mittels

...
if [ $(echo "ppk; quit" | nc localhost 3000 | wc -w) -ge 1 ] ; then
...
fi
...

Bei meinem Fedora 16 wird auf das "nc localhost 3000" hin nichts geschwatzt, falls Brutefir nicht läuft. Falls bei Dir nun stattdessem eine Fehlermeldung käme, z.B. dass "localhost [127.0.0.1] 3000 (?) : Connection refused", dann würde meine Implementation brav die Wörter zählen (if [ $(echo "ppk; quit" | nc localhost 3000 | wc -w) -ge 1 ] ; then) und annehmen, dass Brutefir laufe, und mit dieser Fehlinfo natürlich einen Haufen Mist bauen (Loopen bis zum Gehtnichtmehr, Annahme von Brutefir-Residualstates etc. etc.)

Bin mal gespannt. Ich werde auf jedenfall in der nächsten Revision vorsichtshalber eine spezifischere Anfrage als das thumbe "wc -w" scripten.

Debuggende Grüsse
Simon
Bild
Antworten