BruteFir Fehlermeldung; Ich weiß nicht weiter :(

Hank
Aktiver Hörer
Beiträge: 17
Registriert: 06.04.2014, 20:36

BruteFir Fehlermeldung; Ich weiß nicht weiter :(

Beitrag von Hank »

Hallo,

wie an anderer Stelle dieses Forums angekündigt, möchte ich auch mal ein bischen mit BruteFir fummeln. Leider hat zwar die Installation geklappt, aber beim starten des Programms mit dem Befehl "brutfir" bekomme ich immer folgende Fehlermeldung

Code: Alles auswählen

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

Parse error on line 6 in file "/home/stefan/.brutefir_config":
  cannot set config_file setting in this file.
Meine Config sieht so aus

Code: Alles auswählen

## DEFAULT GENERAL SETTINGS ##

float_bits: 64;             # internal floating point precision
sampling_rate: 48000;       # sampling rate in Hz of audio interfaces
filter_length: 4096,16;       # length of filters
config_file: "~/brutefir_config"; # standard location of main config file
overflow_warnings: true;    # echo warnings to stderr if overflow occurs
show_progress: false;        # echo filtering progress to stderr
max_dither_table_size: 0;   # maximum size in bytes of precalculated dither
allow_poll_mode: false;     # allow use of input poll mode
modules_path: ".";          # extra path where to find BruteFIR modules
monitor_rate: false;        # monitor sample rate
powersave: false;           # pause filtering when input is zero
lock_memory: true;          # try to lock memory if realtime prio is set
sdf_length: -1;             # subsample filter half length in samples
safety_limit: -0.01;           # if non-zero max dB in output before aborting
convolver_config: "~/.brutefir_convolver"; # location of convolver config file



## COEFF DEFAULTS ##

coeff "c-l" {
   filename: "/root/brutefir/filter/XO1L48.dbl";
   format: "FLOAT64_LE";
};

coeff "c-r" {
   filename: "/root/brutefir/filter/XO1R48.dbl";
   format: "FLOAT64_LE";
};


## INPUT DEFAULTS ##

input "leftin","rightin" {
   device: "alsa" { device: "hw:1"; ignore_xrun: true; };	# module and parameters to get audio
   sample: "S16_LE";	# sample format
   channels: 2/0,1;    	# number of open channels / which to use
   delay: 0,0;         	# delay in samples for each channel
   maxdelay: -1;       	# max delay for variable delays
   subdelay: 0,0;      	# subsample delay in 1/100th sample for each channel
   mute: false,false;  	# mute active on startup for each channel
};



## OUTPUT analog
#
output  "leftout", "rightout"  {
   device: "alsa" { device: "hw:1"; ignore_xrun: true; };
   sample: "S16_LE";  
   channels: 2;
   dither: false;
};

## FILTER DEFAULTS ##

filter "drc_l" {
   from_inputs: "leftin";
   to_outputs: "leftout";
   coeff: "c-l";
};

filter "drc_r" {
   from_inputs: "rightin";
   to_outputs: "rightout";
   coeff: "c-r";
};

Zeile 6 ist dann dementsprechend "config_file: "~/brutefir_config"; # standard location of main config file"

Ich weiß nicht mehr weiter, was das Problem ist. Ehrlich gesagt bin ich mir auch nicht sicher, ob der Rest richtig ist, aber dann wäre doch eine andere Fehlermeldung gekommen. Oder?

Im Übrigen habe ich http://brutefir.sourcearchive.com/docum ... ource.html gefunden. So ziemlich in der Mitte ist ein passender Eintrag, der mir leider nicht weiter hilft...

Meine Frage nun, was ist das Problem bzw. was mache ich falsch. Vielleicht kann mir Jemand hier helfen. Wäre echt klasse :)

Danke und Gruß

Hank
Bild
uli.brueggemann
Aktiver Hersteller
Beiträge: 4665
Registriert: 23.03.2009, 15:58
Wohnort: 33649
Kontaktdaten:

Beitrag von uli.brueggemann »

Hank,

Code: Alles auswählen

Parse error on line 6 in file "/home/stefan/.brutefir_config":
Prinzipiell benötigst Du die Zeile nicht, so denn in der aktuellen config alle Angaben drin stehen. Lässt sich ja schnell mit einem # am Anfang der Zeile testen.

Grüsse
Uli
Bild
Melomane
Aktiver Hörer
Beiträge: 3139
Registriert: 14.10.2011, 18:30

Beitrag von Melomane »

Hallo Hank,

einmal hast du einen Punkt vor dem brutefir_config, beim anderen Mal nicht.

Gruß

Jochen
Bild
Hank
Aktiver Hörer
Beiträge: 17
Registriert: 06.04.2014, 20:36

Beitrag von Hank »

Hallo,

und vielen Dank für die schnellen Antworten.

Uli, das wars. Ich habs auskommentiert und es klappt. Nun kommt der nächste Fehler, aber da versuche ich es erstmal allein.

Danke euch

Hank
Bild
Hank
Aktiver Hörer
Beiträge: 17
Registriert: 06.04.2014, 20:36

Beitrag von Hank »

Hah, wie kanns auch anders sein :)

Kaum hab ich gepostet fiel mir noch was ein und schwups funktioniert es grds. Ich habe auf "S24_LE" gestellt.

Ich Fummel weiter, vielen Dank euch!

Hank
Bild
Hank
Aktiver Hörer
Beiträge: 17
Registriert: 06.04.2014, 20:36

Beitrag von Hank »

So, wie gesagt, es läuft. Fein, ich freu mich :)

Aber ich habe mal eine grundsätzliche Frage.

Wenn ich mit Acourate einen Filter erstelle, erstell ich ihn in einer Samplefrequenz x, nehmen wir mal an 192kHz. Wird dann die Soundkarte von BruteFir automatisch auf 192kHz gestellt? Oder wie muss ich mir das vorstellen?

Was passiert, wenn ich von einer Datei aus abspiele, also nicht von einem externen Gerät, sondern einer internen Software, welche meinetwegen eine Samplefrequenz von 44,1kHz hat und der Filter aber auf 192kHz eingestellt ist?

Für beide Beispiele gilt die Frage auf umgekehrt, also wenn der Filter 44,1kHz hat und das Signal 192kHz.

Danke euch sehr

Hank
Bild
uli.brueggemann
Aktiver Hersteller
Beiträge: 4665
Registriert: 23.03.2009, 15:58
Wohnort: 33649
Kontaktdaten:

Beitrag von uli.brueggemann »

Hank hat geschrieben:Aber ich habe mal eine grundsätzliche Frage.

Wenn ich mit Acourate einen Filter erstelle, erstell ich ihn in einer Samplefrequenz x, nehmen wir mal an 192kHz. Wird dann die Soundkarte von BruteFir automatisch auf 192kHz gestellt? Oder wie muss ich mir das vorstellen?

Was passiert, wenn ich von einer Datei aus abspiele, also nicht von einem externen Gerät, sondern einer internen Software, welche meinetwegen eine Samplefrequenz von 44,1kHz hat und der Filter aber auf 192kHz eingestellt ist?

Für beide Beispiele gilt die Frage auf umgekehrt, also wenn der Filter 44,1kHz hat und das Signal 192kHz.
Hank,

nun wird es tatsächlich spannend.
Mit der aktuellen Abtastrate muss das Filter umgeschaltet werden. Was voraussetzt, dass man die Abtastrate des aktuellen Tracks bzw. des digitalen Eingangs erst einmal mitbekommt. Wenn sich die dann ändert muss Brutefir beendet werden und dann mit neuer passender config wieder gestartet werden.
Dazu müssen dann die Linux-Freaks hier im Forum mehr sagen, ich hab mich da seit längerem ausgekoppelt.

Grüsse
Uli
Bild
Hank
Aktiver Hörer
Beiträge: 17
Registriert: 06.04.2014, 20:36

Beitrag von Hank »

Uli,

verstehe ich es also richtig, dass die Samplerate des Korrekturfilters und dementsprechend der brutefir_config mit der Samplerate am digitalen Eingang der Soundkarte bzw. der Samplerate der Datei/der Mediasoftware übereinstimmen muss?

Wenn ja, muss man also irgendwie gewährleisten, dass man erfährt, wie die Samplerate ist und brutefir_config und die Filter entsprechend umschalten.

Danke

Hank
Bild
uli.brueggemann
Aktiver Hersteller
Beiträge: 4665
Registriert: 23.03.2009, 15:58
Wohnort: 33649
Kontaktdaten:

Beitrag von uli.brueggemann »

Yessir, yes, genauso und exaktemang :P

Grüsse
Uli
Bild
Hank
Aktiver Hörer
Beiträge: 17
Registriert: 06.04.2014, 20:36

Beitrag von Hank »

Oh, ich bin stolz auch mich :)

Danke Dir, lieber Uli


Gruß

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

Beitrag von Daihedz »

Hallo Hank

Es ist spannend und lohnt sich, sich in Linux, Brutefir & Co einzuarbeiten. Mach nur weiter so, und lass Dich von den zwangsweise auftretenden Rückschlägen und Irrungen nicht entmutigen.

Ich gehe mal davon aus, dass im Moment Frank uns allen vormacht, was in Sachen Linux/Brutefir state of the art sein könnte; hier: http://www.aktives-hoeren.de/viewtopic. ... 2&start=15 und hier: http://frank_l.bitbucket.org/stereoutils/player.html

Die von Frank vorgeschlagenen Pipes überzeugen mich vom Konzept her völlig. Ich habe früher mal versucht, mit einem Bash-Script (namens bayft - BrutefirAtYourFingerTips) etwas Komfort in die Bedienung von Brutefir hineinzuprogrammieren. Das hat ganz prima geklappt, aber die dazu notwendige Verzeichnisstruktur mit den unterschiedlichsten brutefir-configs und Filtersätzen haben für mich das Konzept wieder zum Absterben gebracht.

Aktuell habe ich die Präferenz, so wie es Frank vorschlägt, das Material einheitlich umzusamplen (bei mir wäre es auf 96kHz, da meine Soundkarte nicht höher kann) und es dergestalt normalisiert über stdout/stdin Brutefir zuzuführen. Ein Satz Filter, eine Config, that's all.

Und noch zum Abschluss zum X-ten Mal meine Standardwarnung an alle Brutefir-Benützer: Schaltet das Dithering lieber ab, den Hochtönern zu liebe. Brutefir kann bei eingeschaltetem Dithering derart Mist rechnen, dass die Hochtöner mit schrillem Gekreische abrauchen können.

Ermutigende Grüsse
Simon
Bild
Hank
Aktiver Hörer
Beiträge: 17
Registriert: 06.04.2014, 20:36

Beitrag von Hank »

Hallo Simon,

och, wenn ich das ein oder andere Mal etwas Hilfe finde, dann lass ich mich schon nicht entmutigen. Ich warne euch :mrgreen: Ne, Spaß ;)

Witzig, vorhin habe ich Deinen Thread zu bayft gelesen und mich gefragt, wie/ob das weiter gegangen ist.

Vielen Dank für die Links, die muss ich mir später antun. Tja, umsamplen hab ich auch schon gedacht, aber bei Filmen ist das schon doof. Ebenso bei externen Quellen, wenn man sie denn digital anbinden möchte.

Vielen Dank und Gruß

Hank

P.S. Ja, das Dithering habe ich abgeschaltet. Glaub ich jedenfalls. Ist doch "nur" im Ausgangsteil der Config. Oder?
Bild
freezebox
Aktiver Hörer
Beiträge: 576
Registriert: 08.07.2011, 11:42
Wohnort: München

Beitrag von freezebox »

Hallo Hank,

Ich hatte mal folgendes script Namens "go" im "start" Ordner in brutefir implementiert, das die Abfrage der samplerates durchführt, und je nachdem die im Ordner "brutefir" abgelegte conf-datei "ep2corrXX" (XX=samplerate 44, 82, 96 etc) startet, bzw. killt, wenn sich die Samplerate ändert. Diese conf-Dateien weisen dann ja wiederrum auf den Speicherort der Filterdateien hin, die dann im Filterordner unter entsprechender bekannter Nomenklatur (samplerate im Namen) hinterlegt sind.
Du musst also für jede bei dir vorkommende samplerate ein eigenes ep2corrXX schreiben.

Code: Alles auswählen

#!/bin/sh

#load firmware to mface2
hdsploader

echo 4096 > /proc/sys/dev/rtc/max-user-freq
echo 5 > /proc/sys/vm/laptop_mode
echo 1 > /proc/sys/kernel/sched_compat_yield
/jstop > /dev/null 2> /dev/null #kill jconv *old*

# coax digital in, 4 (6)x analog out
ep2_mface

# test for more stable run 30.10.2011
sleep 1
BfirStarted="xxxxx xxxxx xxxxx xxxxx xxxxx"
BfirStartStatus="x"

# define global variable samplerate
samplerate=""

# function to set sample rate
SETSAMPLERATE () {
samplerate=`amixer cget iface=MIXER,name='External Rate' | grep ": values" | cut -d= -f2-`
case "$samplerate" in
 '1')
  echo "Start CorSscript at 44.1 kHz"
  amixer -c 0 cset iface=MIXER,name='Sample Clock Source' 2 >> /alsa_report
 #first set to detected samplerate
  amixer -c 0 cset iface=MIXER,name='Sample Clock Source' 0 >> /alsa_report
 #then switch back to autosync
  schedtool -R -p 97 -e brutefir.rt -nodefault /audiovero/brutefir/ep2corr44 &
  ;;
 '2')
  echo "Start CorSscript at 48 kHz"
  amixer -c 0 cset iface=MIXER,name='Sample Clock Source' 3 >> /alsa_report
 #first set to detected samplerate
  amixer -c 0 cset iface=MIXER,name='Sample Clock Source' 0 >> /alsa_report
 #then switch back to autosync
  schedtool -R -p 97 -e brutefir.rt -nodefault /audiovero/brutefir/ep2corr48 &
  ;;
 '4')
  echo "Start CorSscript at 88.2 kHz"
  amixer -c 0 cset iface=MIXER,name='Sample Clock Source' 5 >> /alsa_report
 #first set to detected samplerate
  amixer -c 0 cset iface=MIXER,name='Sample Clock Source' 0 >> /alsa_report
 #then switch back to autosync
  schedtool -R -p 97 -e brutefir.rt -nodefault /audiovero/brutefir/ep2corr88 &
  ;;
 '5')
  echo "Start CorSscript at 96 kHz"
  amixer -c 0 cset iface=MIXER,name='Sample Clock Source' 6 >> /alsa_report
 #first set to detected samplerate
  amixer -c 0 cset iface=MIXER,name='Sample Clock Source' 0 >> /alsa_report
 #then switch back to autosync
  schedtool -R -p 97 -e brutefir.rt -nodefault /audiovero/brutefir/ep2corr96 &
  ;;
esac
}

# main loop
while true
do
sleep 1
samplerate_new=`amixer cget iface=MIXER,name='External Rate' | grep ": values" | cut -d= -f2-`
if [ "$samplerate_new" != "$samplerate" ] ; then
 echo
 echo
 echo "New samplerate detected, is: "$samplerate_new
 echo "Previous samplerate was:"$samplerate
 killall brutefir.rt > /dev/null 2> /dev/null
 SETSAMPLERATE
 samplerate_new=`amixer cget iface=MIXER,name='External Rate' | grep ": values" | cut -d= -f2-`
 echo "Ssamplerate is set to: "$samplerate_new
 echo
fi
done

Viel Erfolg!

Grüße,
Jörn
Bild
Hank
Aktiver Hörer
Beiträge: 17
Registriert: 06.04.2014, 20:36

Beitrag von Hank »

Hallo Jörn,

wenn ich das Script richtig überflogen habe, funktioniert das aber "nur" mit externen Quellen. Sehe ich das richtig?


Danke Dir

Hank
Bild
freezebox
Aktiver Hörer
Beiträge: 576
Registriert: 08.07.2011, 11:42
Wohnort: München

Beitrag von freezebox »

Ja, es tastet die SR am Eingang der Soundkarte ab. Ob man es auch für die interne Verschaltung nutzen kann, kann ich nicht sagen.

Grüße,
Jörn
Bild
Antworten