Brutefir - Ausfall wegen Energiesparoptionen Linux

bastelixx
Aktiver Hörer
Beiträge: 376
Registriert: 08.11.2015, 17:31

Beitrag von bastelixx »

??
Bild
Buschel
Aktiver Hörer
Beiträge: 1036
Registriert: 12.12.2013, 20:12
Wohnort: Raum Karlsruhe

Beitrag von Buschel »

Moin,
bastelixx hat geschrieben: 11.01.2025, 16:37??
Sieht du in der config auch erstmal kein Problem? Bis auf das Erlauben vom poll-Mode, das aber keine von den berichteten Auffälligkeiten zur Folge haben sollte, sieht das für mich ok aus. Die Prozessprioritäten kann man zwar noch höher drehen, aber die sind eigentlich schon hoch genug.

Macht es evtl. Sinn eigene alsa-devices für Input und Output zu definieren, um die Puffergrößen gezielt setzen zu können?

Grüße,
Andree
Bild
bastelixx
Aktiver Hörer
Beiträge: 376
Registriert: 08.11.2015, 17:31

Beitrag von bastelixx »

Hallo Andree,

ich sehe bei brutefir kein Problem, bei mir vor Jahren habe ich als Lösung genommen - das System auf meinem Multimedia PC immer mit Vollpower zu fahren, keine Energieeinsparungen zulassen. Bei Systemstart per CPU Power schon alle Kerne auf Performance zu schalten.

VG, Stanislaw
Bild
fftransformation
Aktiver Hörer
Beiträge: 80
Registriert: 30.10.2012, 19:09
Wohnort: nähe Karlsruhe/ Landau

Beitrag von fftransformation »

Hallo Zusammen,

Ich hab für mich noch komische Dinge in der Konfig, ob die ein Problem sind weiß ich nicht:
Brutefir ist auf 64Bit konfiguriert, Filter sind auch 64Bit und die Soundkarte liefert nur mit 32Bit.

Was meint ihr damit? :
Buschel hat geschrieben: 11.01.2025, 17:31 Macht es evtl. Sinn eigene alsa-devices für Input und Output zu definieren, um die Puffergrößen gezielt setzen zu können?

Und was sagt ihr hierzu? :
fftransformation hat geschrieben: 11.01.2025, 07:34 Was mir in dem Zuge noch eingefallen ist, Brutefir kann man ja die Prozesse vorgeben.
Wenn man in Brutefir die Prozesse festlegt, sollten ja alle die auf einem Prozessorkern liegen, die miteinander vernetzt sind. - so stehts in der Brutefir Doku.

In Moment habe ich ja nur Inputs die ich doppelt verwende für Hochtöner und Mitteltöner, diese habe ich mal einem Kern zugewiesen.
Dem Input und Output Prozess kann ich ja nicht wo explizit zuweisen, falls das relevant wäre.
Und dann gibt es ja auch noch was mit Shared Memory, ich meine bei EQ Sachen, das verstehe ich aber auch nicht.
Grüße Georg
Bild
Buschel
Aktiver Hörer
Beiträge: 1036
Registriert: 12.12.2013, 20:12
Wohnort: Raum Karlsruhe

Beitrag von Buschel »

Moin,
fftransformation hat geschrieben: 11.01.2025, 21:33 Ich hab für mich noch komische Dinge in der Konfig, ob die ein Problem sind weiß ich nicht:
Brutefir ist auf 64Bit konfiguriert, Filter sind auch 64Bit und die Soundkarte liefert nur mit 32Bit.
Wenn du "float_bits: 64" meinst, ist das die interne Rechengenauigkeit. Die hat nichts mit der Soundkarte zu tun. Alles gut.
Buschel hat geschrieben: 11.01.2025, 17:31 Macht es evtl. Sinn eigene alsa-devices für Input und Output zu definieren, um die Puffergrößen gezielt setzen zu können?
Man kann in alsa eigene devices definieren und dann auf diese anstatt auf die Hardware zugreifen. Hier gibt es ein paar Beispiele (ein device fängt mit "pcm." an), bei denen auch Puffergrößen gesetzt werden: viewtopic.php?t=6377. Aber das würde ich vorerst nicht angehen, kann eine Menge Fummelei werden.
fftransformation hat geschrieben: 11.01.2025, 21:33 Und was sagt ihr hierzu? :
Ich verstehe die Frage möglicherweise nicht. Ich würde brutefir nur mit entsprechender Priorität (die kannst du noch weiter anheben, siehe z.B. viewtopic.php?p=183703&hilit=taskset#p183703) und Affinität (= taskset) starten und gut ist. brutefir started dann seine Prozesse auf dem festgelegten Core mit der entsprechenden relativen Priorität (= relativ zur Priorität, mit der brutefir gestartet wurde).

Grüße,
Andree
Bild
fftransformation
Aktiver Hörer
Beiträge: 80
Registriert: 30.10.2012, 19:09
Wohnort: nähe Karlsruhe/ Landau

Beitrag von fftransformation »

Hi,
Buschel hat geschrieben: 11.01.2025, 22:01 Ich verstehe die Frage möglicherweise nicht.
Ich meinte das hier von der Brutefirconfig
„process: 1;“

filter "right speaker cross path" {
inputs: "left"/6.0;
outputs: "stereo dipole right";
process: 1;
coeff: 1;
};

Hier kann man die Prozessorkerne vorgeben, aber wenn man die Filter verkettet, dann sollten die auf einem Kern liegen.
Eventuell ist da was wenn Ton zwischen den prozessorkernen hin und her verschoben wird, wenn man Brutefir die Lastverteilung automatisch machen lässt.

Und das hier noch, „shared_mem“

## COEFF DEFAULTS ##

coeff {
format: "text"; # file format
attenuation: 0.0; # attenuation in dB
blocks: -1; # how long in blocks
skip: 0; # how many bytes to skip
shared_mem: false; # allocate in shared memory
};


Das Fehlerbild ist nich richtig konstant, wenn Brutefir gerade läuft, ich den beende und gleich wieder starte, kann es sein, dass ich den Fehler provozieren kann. - wie wenn man sagt da ist noch was im ram - sehr komisch.


Was mich wundert, dass niemand solche Probleme in Verbindung mit Brutefir berichtet. Bei allen scheint es zu laufen.

Grüße Georg
Bild
Buschel
Aktiver Hörer
Beiträge: 1036
Registriert: 12.12.2013, 20:12
Wohnort: Raum Karlsruhe

Beitrag von Buschel »

Moin,
fftransformation hat geschrieben: 11.01.2025, 22:30 Ich meinte das hier von der Brutefirconfig
„process: 1;“
[...]
Hier kann man die Prozessorkerne vorgeben, aber wenn man die Filter verkettet, dann sollten die auf einem Kern liegen.
Der Parameter bündelt Filter in einem Prozess, nicht auf einem Kern. Damit kannst du dann offenbar "per Hand" die Lastenverteilung optimieren, habe ich so nicht in Betrieb, habe aber auch nur ein Stereo-System ohne Weiche. In deiner config sehe ich keinen solchen Parameter. Ich glaube nicht, dass du damit dein Problem lösen wirst.
fftransformation hat geschrieben: 11.01.2025, 22:30 Und das hier noch, „shared_mem“
Da geht es nur um die Koeffizienten, das darf keine von dir beobachteten Auswirkung haben.
fftransformation hat geschrieben: 11.01.2025, 22:30 Das Fehlerbild ist nich richtig konstant, wenn Brutefir gerade läuft, ich den beende und gleich wieder starte, kann es sein, dass ich den Fehler provozieren kann. - wie wenn man sagt da ist noch was im ram - sehr komisch.
Das hört sich für mich eher nach timing an, also genau das wonach wir gerade schauen.
fftransformation hat geschrieben: 11.01.2025, 22:30 Was mich wundert, dass niemand solche Probleme in Verbindung mit Brutefir berichtet. Bei allen scheint es zu laufen.
Naja, selbst hier im Forum gibt es dazu viele Threads und Posts. Aber die Lösung ist nicht immer dieselbe.

Eine Frage zu deiner Soundkarte: Lese ich richtig, dass die Karte analog sowie SPDIF I/O hat? Nutzt du gleichzeitig die analogen und SPDIF Ein- und Ausgänge? Wenn ja, kannst du mal probehalber nur die analogen nutzen und die anderen aus deiner brutefir config entfernen?

Grüße,
Andree
Bild
bastelixx
Aktiver Hörer
Beiträge: 376
Registriert: 08.11.2015, 17:31

Beitrag von bastelixx »

Moin,

wieviel Kanäle hat deine Soundkarte?

https://images.thomann.de/pics/prod/midiman_1010.pdf
Wenn es die Karte sein soll, dann 10 input und 10 output

Ich sehe in deine Config eine Diskrepanz

## INPUT analog

input "i_1", "i_2", "i_3", "i_4", "i_5", "i_6", "i_7", "i_8", "i_9", "i_10" {
device: "alsa" { device: "hw:M1010"; ignore_xrun: true; link: false;};
sample: "S32_LE";
channels: 12/0,1,2,3,4,5,6,7,8,9;
};

## OUTPUT analog

output "o_1", "o_2", "o_3", "o_4", "o_5", "o_6", "o_7", "o_8", "o_9", "o_10" {
device: "alsa" { device: "hw:M1010"; ignore_xrun: true; link: false;};
sample: "S32_LE";
channels: 10/0,1,2,3,4,5,6,7,8,9;
delay: 0,0,0,0,0,0,0,0,0,0;
dither: true;
};

VG
Bild
fftransformation
Aktiver Hörer
Beiträge: 80
Registriert: 30.10.2012, 19:09
Wohnort: nähe Karlsruhe/ Landau

Beitrag von fftransformation »

Guten Morgen Zusammen,

erst einmal danke für das sich rein denken und die Anregungen und Antworten!
Buschel hat geschrieben: 11.01.2025, 09:57 Mit welcher Samplingfrequenz läuft deine Soundkartenhardware? Dazu mal "cat /proc/asound/card2/pcm0p/sub0/hw_params" und "cat /proc/asound/card2/pcm0c/sub0/hw_params" auslesen während brutefir läuft. Du musst allerdings die für dich richtige Karte (im Beispiel "card2") und Kanäle (im Beispiel "pcm0") einsetzen. Die Endung "p" und "c" bei den Kanälen steht für playback (Wiedergabe) und capture (Aufnahme).
Im funktionalen Fall und Fehlerfall immer gleich:
Sampling.jpg
Sampling.jpg (17.83 KiB) 216 mal betrachtet
bastelixx hat geschrieben: 12.01.2025, 00:27 Ich sehe in deine Config eine Diskrepanz
Ja es ist die Karte wie bei Thoman
Ich habe mal input und output auf 10 Kanäle gestellt, dann startet brutefir nicht mehr, ich vermute die Karte hat 2 Clockeingänge, diese werden wohl dann den Input auf 12 erhöhen
Buschel hat geschrieben: 11.01.2025, 23:39 Nutzt du gleichzeitig die analogen und SPDIF Ein- und Ausgänge? Wenn ja, kannst du mal probehalber nur die analogen nutzen und die anderen aus deiner brutefir config entfernen?
habe ich gerade gemacht - leider keine Verbesserung



Langsam glaube ich, dass das nichts mit Prio zu tun hat, ich habe mal auf echtzeitprio gesetzt: sudo chrt -f 99 brutefir /config
Brutefir macht das ja auch am Anfang von selbst und versucht diese aufrecht zu erhalten.
Der Prozessor läuft auch auf der höchsten Stufe, zumindest soweit ich das beurteilen kann, weil intel_idle deaktiviert ist.

Somit bleibt für mich eigentlich nur noch ein Treiberproblem oder irgendeine Inkompatibilität, wobei gerade diese alte Soundkarte über PCI angeschlossen am ehesten funktionieren sollte.

Kann ich irgendwie die überprüfen, wie hoch die buffer mit Daten befüllt werden? So dass ich auch im Fehlerfall mir das mal anschauen könnte?

Grüße Georg
Bild
Buschel
Aktiver Hörer
Beiträge: 1036
Registriert: 12.12.2013, 20:12
Wohnort: Raum Karlsruhe

Beitrag von Buschel »

Moin,

Danke für die Fotos. Die 12 Kanäle sieht man auch bei der Ausgabe der hw_params, das scheint laut Reviews, die ich im Netz gefunden habe, ein Stereo Input als "Monitor" zu sein. Das passt so.

Kannst du per aplay oder über ein anderes Programm mal eine Aufnahme und eine Wiedergabe mit 48 kHz starten und dann wieder hw_params auslesen? Mich interessiert, ob hier andere Werte für buffer / period genutzt werden. Ich habe leider nur wenig alte Daten aus meinen Setups, glaube aber, dass üblicherweise buffer size nicht nur 2x period ist.
fftransformation hat geschrieben: 12.01.2025, 08:33 Kann ich irgendwie die überprüfen, wie hoch die buffer mit Daten befüllt werden? So dass ich auch im Fehlerfall mir das mal anschauen könnte?
Ja, das geht. Aber das bringt dich nicht weiter, weil du nur sehen wirst, dass im Fehlerfall nicht genug Daten da sind. Das ist ja gerade der underflow. Lass uns lieber schauen wie wir deine Puffergrößen im alsa device anders gestalten können.

Als Hinweis: Bei meinem Setup macht "sox" das also I/O und brutefir ist per stdio angebunden. Das hat für die Puffergrößen vermutlich ähnliche Auswirkung wie die Nutzung von "jack".

Grüße,
Andree
Bild
bastelixx
Aktiver Hörer
Beiträge: 376
Registriert: 08.11.2015, 17:31

Beitrag von bastelixx »

Guten Morgen,

Die Clocks Ein/Ausgänge sind weder recording noch play. Die Karte hat 10 und 10, deshalb heiss sie auch so.
Ändere auf 10, vielleicht sogar 8, es können auch 10 und 12 nur emulierte sein aber Hardware nur 8 x 8, wie meiste ADAT. Wahrscheinlich mit Software können SPDIF und MIDI Kanäle abwechselnd dazu benutzt werden
Ich würde ausprobieren mit 10 und 12, aber zuweisen nur jeweils 0;1;2;3;4;5;6;7
Wenn nicht läuft, dann nur die letzten 8: 2;3;4;5;6;7;8;9 und 4;5;6;7;8;9;10;11
Mann mus herausfinden nur physikalisch vorhanden. Ich habe RME HDSP lange Zeit für defekt gehalten, da die 12 Kanäle wurden bei ALSA und Jack korrekt angezeigt aber kam kein Ton raus, bis ich den HDSP Mixer installiert habe vomit emuliertes mit physikalisch vorhandenem verbunden war

VG, Stanislaw
Bild
bastelixx
Aktiver Hörer
Beiträge: 376
Registriert: 08.11.2015, 17:31

Beitrag von bastelixx »

Bild
fftransformation
Aktiver Hörer
Beiträge: 80
Registriert: 30.10.2012, 19:09
Wohnort: nähe Karlsruhe/ Landau

Beitrag von fftransformation »

Hallo Zusammen,
Buschel hat geschrieben: 12.01.2025, 10:02 Kannst du per aplay oder über ein anderes Programm mal eine Aufnahme und eine Wiedergabe mit 48 kHz starten
Das tut nicht! Ich bekomme zwar ein Audiofile raus, aber es werden permanent Fehlermeldungen ausgegeben "Überlauf!!!" und ne ms Zeit dahinter.
Ich habe das auch mal mit niedrigeren Samplingraten probiert aber auch die gehen nicht, das einzige was geht ist -r 8000.
Das Audiofile wo mit Fehlern erzeugt wurde hört sich grauenvoll an, total verzerrt.
arecord.jpg
arecord.jpg (120.92 KiB) 102 mal betrachtet
Wenn ich mit dem amixer am output statt quelle PCM einen inputchannel einstelle, dann kommt der ton sauber raus, also die Soundkarte funktioniert an sich, nur der Ton kommt nicht sauber im Linux an.

Leider habe ich nicht probiert das einmal mit sudo auszuprobieren, ich meine da war was mit Audioberechtigungen bei Linux... :x

Das Verhalten mit arecord kenne ich so nicht als ich früher mal mit den Inputs rumprobiert habe, aber ich habe auch später nochmal ein neueres Linux genommen und auch somit einen anderen rt-patch. -Eventuell ist da was faul.
bastelixx hat geschrieben: 12.01.2025, 11:13 Ändere auf 10, vielleicht sogar 8, es können auch 10 und 12 nur emulierte sein aber Hardware nur 8 x 8, wie meiste ADAT. Wahrscheinlich mit Software können SPDIF und MIDI Kanäle abwechselnd dazu benutzt werden
Ich würde ausprobieren mit 10 und 12, aber zuweisen nur jeweils 0;1;2;3;4;5;6;7
Wenn nicht läuft, dann nur die letzten 8: 2;3;4;5;6;7;8;9 und 4;5;6;7;8;9;10;11
Auch das habe ich alles mal probiert, das tut ebenso nicht. Ich habe mal die I/O neu (hatte ich früher schon mal mit dem älteren Linux gemacht) ausgeben lassen:

amixer contents > 1.txt:

Code: Alles auswählen

numid=41,iface=CARD,name='ICE1712 EEPROM'
  ; type=BYTES,access=r-------,values=52
  : values=0xd6,0x30,0x14,0x12,0x1d,0x01,0x1f,0x80,0x01,0x03,0x22,0xd0,0xdd,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0xd0,0x00,0x00,0x00,0xdd,0x00,0x00,0x00
numid=29,iface=MIXER,name='IEC958 Multi Capture Switch'
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=30,iface=MIXER,name='IEC958 Multi Capture Switch',index=1
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=39,iface=MIXER,name='IEC958 Multi Capture Volume'
  ; type=INTEGER,access=rw------,values=2,min=0,max=96,step=0
  : values=0,0
numid=40,iface=MIXER,name='IEC958 Multi Capture Volume',index=1
  ; type=INTEGER,access=rw------,values=2,min=0,max=96,step=0
  : values=0,0
numid=54,iface=MIXER,name='IEC958 Playback Route'
  ; type=ENUMERATED,access=rw------,values=1,items=12
  ; Item #0 'PCM Out'
  ; Item #1 'H/W In 0'
  ; Item #2 'H/W In 1'
  ; Item #3 'H/W In 2'
  ; Item #4 'H/W In 3'
  ; Item #5 'H/W In 4'
  ; Item #6 'H/W In 5'
  ; Item #7 'H/W In 6'
  ; Item #8 'H/W In 7'
  ; Item #9 'IEC958 In L'
  ; Item #10 'IEC958 In R'
  ; Item #11 'Digital Mixer'
  : values=0
numid=55,iface=MIXER,name='IEC958 Playback Route',index=1
  ; type=ENUMERATED,access=rw------,values=1,items=12
  ; Item #0 'PCM Out'
  ; Item #1 'H/W In 0'
  ; Item #2 'H/W In 1'
  ; Item #3 'H/W In 2'
  ; Item #4 'H/W In 3'
  ; Item #5 'H/W In 4'
  ; Item #6 'H/W In 5'
  ; Item #7 'H/W In 6'
  ; Item #8 'H/W In 7'
  ; Item #9 'IEC958 In L'
  ; Item #10 'IEC958 In R'
  ; Item #11 'Digital Mixer'
  : values=0
numid=64,iface=MIXER,name='Delta IEC958 Input Status'
  ; type=BOOLEAN,access=r--v----,values=1
  : values=off
numid=21,iface=MIXER,name='H/W Multi Capture Switch'
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=22,iface=MIXER,name='H/W Multi Capture Switch',index=1
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=23,iface=MIXER,name='H/W Multi Capture Switch',index=2
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=24,iface=MIXER,name='H/W Multi Capture Switch',index=3
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=25,iface=MIXER,name='H/W Multi Capture Switch',index=4
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=26,iface=MIXER,name='H/W Multi Capture Switch',index=5
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=27,iface=MIXER,name='H/W Multi Capture Switch',index=6
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=28,iface=MIXER,name='H/W Multi Capture Switch',index=7
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=31,iface=MIXER,name='H/W Multi Capture Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=96,step=0
  : values=0,0
  | dBscale-min=-144.00dB,step=1.50dB,mute=0
numid=32,iface=MIXER,name='H/W Multi Capture Volume',index=1
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=96,step=0
  : values=0,0
  | dBscale-min=-144.00dB,step=1.50dB,mute=0
numid=33,iface=MIXER,name='H/W Multi Capture Volume',index=2
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=96,step=0
  : values=0,0
  | dBscale-min=-144.00dB,step=1.50dB,mute=0
numid=34,iface=MIXER,name='H/W Multi Capture Volume',index=3
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=96,step=0
  : values=0,0
  | dBscale-min=-144.00dB,step=1.50dB,mute=0
numid=35,iface=MIXER,name='H/W Multi Capture Volume',index=4
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=96,step=0
  : values=0,0
  | dBscale-min=-144.00dB,step=1.50dB,mute=0
numid=36,iface=MIXER,name='H/W Multi Capture Volume',index=5
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=96,step=0
  : values=0,0
  | dBscale-min=-144.00dB,step=1.50dB,mute=0
numid=37,iface=MIXER,name='H/W Multi Capture Volume',index=6
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=96,step=0
  : values=0,0
  | dBscale-min=-144.00dB,step=1.50dB,mute=0
numid=38,iface=MIXER,name='H/W Multi Capture Volume',index=7
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=96,step=0
  : values=0,0
  | dBscale-min=-144.00dB,step=1.50dB,mute=0
numid=46,iface=MIXER,name='H/W Playback Route'
  ; type=ENUMERATED,access=rw------,values=1,items=12
  ; Item #0 'PCM Out'
  ; Item #1 'H/W In 0'
  ; Item #2 'H/W In 1'
  ; Item #3 'H/W In 2'
  ; Item #4 'H/W In 3'
  ; Item #5 'H/W In 4'
  ; Item #6 'H/W In 5'
  ; Item #7 'H/W In 6'
  ; Item #8 'H/W In 7'
  ; Item #9 'IEC958 In L'
  ; Item #10 'IEC958 In R'
  ; Item #11 'Digital Mixer'
  : values=0
numid=47,iface=MIXER,name='H/W Playback Route',index=1
  ; type=ENUMERATED,access=rw------,values=1,items=12
  ; Item #0 'PCM Out'
  ; Item #1 'H/W In 0'
  ; Item #2 'H/W In 1'
  ; Item #3 'H/W In 2'
  ; Item #4 'H/W In 3'
  ; Item #5 'H/W In 4'
  ; Item #6 'H/W In 5'
  ; Item #7 'H/W In 6'
  ; Item #8 'H/W In 7'
  ; Item #9 'IEC958 In L'
  ; Item #10 'IEC958 In R'
  ; Item #11 'Digital Mixer'
  : values=0
numid=48,iface=MIXER,name='H/W Playback Route',index=2
  ; type=ENUMERATED,access=rw------,values=1,items=11
  ; Item #0 'PCM Out'
  ; Item #1 'H/W In 0'
  ; Item #2 'H/W In 1'
  ; Item #3 'H/W In 2'
  ; Item #4 'H/W In 3'
  ; Item #5 'H/W In 4'
  ; Item #6 'H/W In 5'
  ; Item #7 'H/W In 6'
  ; Item #8 'H/W In 7'
  ; Item #9 'IEC958 In L'
  ; Item #10 'IEC958 In R'
  : values=0
numid=49,iface=MIXER,name='H/W Playback Route',index=3
  ; type=ENUMERATED,access=rw------,values=1,items=11
  ; Item #0 'PCM Out'
  ; Item #1 'H/W In 0'
  ; Item #2 'H/W In 1'
  ; Item #3 'H/W In 2'
  ; Item #4 'H/W In 3'
  ; Item #5 'H/W In 4'
  ; Item #6 'H/W In 5'
  ; Item #7 'H/W In 6'
  ; Item #8 'H/W In 7'
  ; Item #9 'IEC958 In L'
  ; Item #10 'IEC958 In R'
  : values=0
numid=50,iface=MIXER,name='H/W Playback Route',index=4
  ; type=ENUMERATED,access=rw------,values=1,items=11
  ; Item #0 'PCM Out'
  ; Item #1 'H/W In 0'
  ; Item #2 'H/W In 1'
  ; Item #3 'H/W In 2'
  ; Item #4 'H/W In 3'
  ; Item #5 'H/W In 4'
  ; Item #6 'H/W In 5'
  ; Item #7 'H/W In 6'
  ; Item #8 'H/W In 7'
  ; Item #9 'IEC958 In L'
  ; Item #10 'IEC958 In R'
  : values=0
numid=51,iface=MIXER,name='H/W Playback Route',index=5
  ; type=ENUMERATED,access=rw------,values=1,items=11
  ; Item #0 'PCM Out'
  ; Item #1 'H/W In 0'
  ; Item #2 'H/W In 1'
  ; Item #3 'H/W In 2'
  ; Item #4 'H/W In 3'
  ; Item #5 'H/W In 4'
  ; Item #6 'H/W In 5'
  ; Item #7 'H/W In 6'
  ; Item #8 'H/W In 7'
  ; Item #9 'IEC958 In L'
  ; Item #10 'IEC958 In R'
  : values=0
numid=52,iface=MIXER,name='H/W Playback Route',index=6
  ; type=ENUMERATED,access=rw------,values=1,items=11
  ; Item #0 'PCM Out'
  ; Item #1 'H/W In 0'
  ; Item #2 'H/W In 1'
  ; Item #3 'H/W In 2'
  ; Item #4 'H/W In 3'
  ; Item #5 'H/W In 4'
  ; Item #6 'H/W In 5'
  ; Item #7 'H/W In 6'
  ; Item #8 'H/W In 7'
  ; Item #9 'IEC958 In L'
  ; Item #10 'IEC958 In R'
  : values=0
numid=53,iface=MIXER,name='H/W Playback Route',index=7
  ; type=ENUMERATED,access=rw------,values=1,items=11
  ; Item #0 'PCM Out'
  ; Item #1 'H/W In 0'
  ; Item #2 'H/W In 1'
  ; Item #3 'H/W In 2'
  ; Item #4 'H/W In 3'
  ; Item #5 'H/W In 4'
  ; Item #6 'H/W In 5'
  ; Item #7 'H/W In 6'
  ; Item #8 'H/W In 7'
  ; Item #9 'IEC958 In L'
  ; Item #10 'IEC958 In R'
  : values=0
numid=1,iface=MIXER,name='Multi Playback Switch'
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=2,iface=MIXER,name='Multi Playback Switch',index=1
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=3,iface=MIXER,name='Multi Playback Switch',index=2
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=4,iface=MIXER,name='Multi Playback Switch',index=3
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=5,iface=MIXER,name='Multi Playback Switch',index=4
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=6,iface=MIXER,name='Multi Playback Switch',index=5
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=7,iface=MIXER,name='Multi Playback Switch',index=6
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=8,iface=MIXER,name='Multi Playback Switch',index=7
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=9,iface=MIXER,name='Multi Playback Switch',index=8
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=10,iface=MIXER,name='Multi Playback Switch',index=9
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=11,iface=MIXER,name='Multi Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=96,step=0
  : values=0,0
  | dBscale-min=-144.00dB,step=1.50dB,mute=0
numid=12,iface=MIXER,name='Multi Playback Volume',index=1
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=96,step=0
  : values=0,0
  | dBscale-min=-144.00dB,step=1.50dB,mute=0
numid=13,iface=MIXER,name='Multi Playback Volume',index=2
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=96,step=0
  : values=0,0
  | dBscale-min=-144.00dB,step=1.50dB,mute=0
numid=14,iface=MIXER,name='Multi Playback Volume',index=3
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=96,step=0
  : values=0,0
  | dBscale-min=-144.00dB,step=1.50dB,mute=0
numid=15,iface=MIXER,name='Multi Playback Volume',index=4
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=96,step=0
  : values=0,0
  | dBscale-min=-144.00dB,step=1.50dB,mute=0
numid=16,iface=MIXER,name='Multi Playback Volume',index=5
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=96,step=0
  : values=0,0
  | dBscale-min=-144.00dB,step=1.50dB,mute=0
numid=17,iface=MIXER,name='Multi Playback Volume',index=6
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=96,step=0
  : values=0,0
  | dBscale-min=-144.00dB,step=1.50dB,mute=0
numid=18,iface=MIXER,name='Multi Playback Volume',index=7
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=96,step=0
  : values=0,0
  | dBscale-min=-144.00dB,step=1.50dB,mute=0
numid=19,iface=MIXER,name='Multi Playback Volume',index=8
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=96,step=0
  : values=0,0
  | dBscale-min=-144.00dB,step=1.50dB,mute=0
numid=20,iface=MIXER,name='Multi Playback Volume',index=9
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=96,step=0
  : values=0,0
  | dBscale-min=-144.00dB,step=1.50dB,mute=0
numid=42,iface=MIXER,name='Multi Track Internal Clock'
  ; type=ENUMERATED,access=rw------,values=1,items=14
  ; Item #0 '8000'
  ; Item #1 '9600'
  ; Item #2 '11025'
  ; Item #3 '12000'
  ; Item #4 '16000'
  ; Item #5 '22050'
  ; Item #6 '24000'
  ; Item #7 '32000'
  ; Item #8 '44100'
  ; Item #9 '48000'
  ; Item #10 '64000'
  ; Item #11 '88200'
  ; Item #12 '96000'
  ; Item #13 'IEC958 Input'
  : values=9
numid=43,iface=MIXER,name='Multi Track Internal Clock Default'
  ; type=ENUMERATED,access=rw------,values=1,items=13
  ; Item #0 '8000'
  ; Item #1 '9600'
  ; Item #2 '11025'
  ; Item #3 '12000'
  ; Item #4 '16000'
  ; Item #5 '22050'
  ; Item #6 '24000'
  ; Item #7 '32000'
  ; Item #8 '44100'
  ; Item #9 '48000'
  ; Item #10 '64000'
  ; Item #11 '88200'
  ; Item #12 '96000'
  : values=9
numid=44,iface=MIXER,name='Multi Track Rate Locking'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=45,iface=MIXER,name='Multi Track Rate Reset'
  ; type=BOOLEAN,access=rw------,values=1
  : values=on
numid=56,iface=MIXER,name='Multi Track Volume Rate'
  ; type=INTEGER,access=rw------,values=1,min=0,max=255,step=0
  : values=0
numid=59,iface=MIXER,name='Word Clock Status'
  ; type=BOOLEAN,access=r--v----,values=1
  : values=on
numid=58,iface=MIXER,name='Word Clock Sync'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=61,iface=PCM,name='IEC958 Playback Con Mask'
  ; type=IEC958,access=r-------,values=1
  : values=[AES0=0xff AES1=0xff AES2=0xff AES3=0xff]
numid=60,iface=PCM,name='IEC958 Playback Default'
  ; type=IEC958,access=rw------,values=1
  : values=[AES0=0x00 AES1=0x00 AES2=0x00 AES3=0x00]
numid=62,iface=PCM,name='IEC958 Playback Pro Mask'
  ; type=IEC958,access=r-------,values=1
  : values=[AES0=0xff AES1=0xff AES2=0xff AES3=0xff]
numid=57,iface=PCM,name='Multi Track Peak'
  ; type=INTEGER,access=r--v----,values=22,min=0,max=255,step=0
  : values=88,66,87,55,97,91,6,6,138,138,255,100,93,138,21,19,0,0,0,0,0,0
Bevor ich brutefir starte setze ich die folgenden Parameter immer:

Code: Alles auswählen

amixer -D hw:M1010 cset iface=MIXER,name='H/W Playback Route' 0
amixer -D hw:M1010 cset iface=MIXER,name='H/W Playback Route',index=1 0
amixer -D hw:M1010 cset iface=MIXER,name='H/W Playback Route',index=2 0
amixer -D hw:M1010 cset iface=MIXER,name='H/W Playback Route',index=3 0
amixer -D hw:M1010 cset iface=MIXER,name='H/W Playback Route',index=4 0
amixer -D hw:M1010 cset iface=MIXER,name='H/W Playback Route',index=5 0
amixer -D hw:M1010 cset iface=MIXER,name='H/W Playback Route',index=6 0
amixer -D hw:M1010 cset iface=MIXER,name='H/W Playback Route',index=7 0
amixer -D hw:M1010 cset iface=MIXER,name='Multi Track Internal Clock' 9
amixer -D hw:M1010 cset iface=MIXER,name='Multi Track Internal Clock Default' 9
amixer -D hw:M1010 cset iface=MIXER,name='Multi Track Rate Locking' off
Ich denke man sollte das mit arecord erst einmal zum laufen bekommen, ich habe zwar keine Idee wie aber Ihr eventuell.
Achso, ich habe auch mit Buffer 1000000 mal getestet, den kann man bei arecord ja mitgeben - verhalten anders, die Fehlermeldungen kommen schneller hintereinander, aber sonst leider gleich.

Grüße Georg
Bild
bastelixx
Aktiver Hörer
Beiträge: 376
Registriert: 08.11.2015, 17:31

Beitrag von bastelixx »

Hallo Georg,

teste meine Variante aus

Code: Alles auswählen

## MAIN GENERAL SETTINGS ##								
								
float_bits: 64;							# internal floating point precision		
sampling_rate: 48000;						# sampling rate in Hz of audio interfaces		
filter_length: 1024,64;						# length of filters			
overflow_warnings: true;					# echo warnings to stderr if overflow occurs			
show_progress: true;						# echo filtering progress to stderr		
#max_dither_table_size: 0;					# maximum size in bytes of precalculated dither			
#allow_poll_mode: true;						# allow use of input poll mode			
modules_path: "/usr/lib/brutefir";				# extra path where to find BruteFIR modules				
monitor_rate: false;						# monitor sample rate		
powersave: false;						# pause filtering when input is zero		
lock_memory: false;						# try to lock memory if realtime prio is set		
convolver_config: "/home/ui/.brutefir_convolver";		# location of convolver config file						
#"sdf_length: 0;"						# subsample filter half length in samples		
#"benchmark: false;"						# start in benchmark mode (can only be used in main config file)>;"		
#"safety_limit: 0;"						# if non-zero max dB in output before aborting>;"		
								
								
## LOGIC ##								
								
logic: "cli" { port: 3000; };								
		



						
## COEFF Set_0 ##
						
#subwooferl								
coeff "lswcoeff" {								
	filename: "/media/conffltr/filter/48/lp/Cor1L48.dbl";							
	format: "FLOAT64_LE";		
	bloks: -1;
        shared_mem: false;
};
#subwooferr							
coeff "rswcoeff" {								
	filename: "/media/conffltr/filter/48/lp/Cor1R48.dbl";							
	format: "FLOAT64_LE";	
	bloks: -1;
        shared_mem: false;		
};





#links																
coeff "lmtcoeff" {								
	filename: "/media/conffltr/filter/48/lp/Cor2L48.dbl";							
	format: "FLOAT64_LE";			
	bloks: -1;
        shared_mem: false;
};								
								
coeff "lhtcoeff" {								
	filename: "/media/conffltr/filter/48/lp/Cor3L48.dbl";							
	format: "FLOAT64_LE";	
	bloks: -1;
        shared_mem: false;	
};
#rechts															
coeff "rmtcoeff" {								
	filename: "/media/conffltr/filter/48/lp/Cor2R48.dbl";							
	format: "FLOAT64_LE";		
	bloks: -1;
        shared_mem: false;
};								
								
coeff "rhtcoeff" {								
	filename: "/media/conffltr/filter/48/lp/Cor3R48.dbl";							
	format: "FLOAT64_LE";	
	bloks: -1;
        shared_mem: false;	
};





#center								
coeff "cmtcoeff" {								
	filename: "/media/conffltr/filter/48/lp/Cor4L48.dbl";							
	format: "FLOAT64_LE";		
	bloks: -1;
        shared_mem: false;
};								
								
coeff "chtcoeff" {								
	filename: "/media/conffltr/filter/48/lp/Cor5L48.dbl";							
	format: "FLOAT64_LE";		
	bloks: -1;
        shared_mem: false;	
};						
								
	



#surroundl							
coeff "lscoeff" {								
	filename: "/media/conffltr/filter/48/lp/Cor6L48.dbl";							
	format: "FLOAT64_LE";		
	bloks: -1;
        shared_mem: false;						
};		
#sourroundr								
coeff "rscoeff" {								
	filename: "/media/conffltr/filter/48/lp/Cor7R48.dbl";							
	format: "FLOAT64_LE";		
	bloks: -1;
        shared_mem: false;
};



								
## die Restlichen Filtersätze müssen noch angepasst werden!!!!!   COEFF Set_1 ##								
#links								
coeff "l1coeff_1" {								
	filename: "/media/conffltr/filter/48/lp_1/Cor1L48.dbl";							
	format: "FLOAT64_LE";	
	bloks: -1;
        shared_mem: false;	
};								
								
coeff "l2coeff_1" {								
	filename: "/media/conffltr/filter/48/lp_1/Cor2L48.dbl";							
	format: "FLOAT64_LE";	
	bloks: -1;
        shared_mem: false;	
};								
								
coeff "l3coeff_1" {								
	filename: "/media/conffltr/filter/48/lp_1/Cor3L48.dbl";							
	format: "FLOAT64_LE";		
	bloks: -1;
        shared_mem: false;		
};								
								
coeff "l4coeff_1" {								
	filename: "/media/conffltr/filter/48/lp_1/Cor4L48.dbl";							
	format: "FLOAT64_LE";		
	bloks: -1;
        shared_mem: false;
};															
								
#rechts								
coeff "r1coeff_1" {								
	filename: "/media/conffltr/filter/48/lp_1/Cor1R48.dbl";							
	format: "FLOAT64_LE";		
	bloks: -1;
        shared_mem: false;
};								
								
coeff "r2coeff_1" {								
	filename: "/media/conffltr/filter/48/lp_1/Cor2R48.dbl";							
	format: "FLOAT64_LE";		
	bloks: -1;
        shared_mem: false;
};								
								
coeff "r3coeff_1" {								
	filename: "/media/conffltr/filter/48/lp_1/Cor3R48.dbl";							
	format: "FLOAT64_LE";			
	bloks: -1;
        shared_mem: false;
};								
								
coeff "r4coeff_1" {								
	filename: "/media/conffltr/filter/48/lp_1/Cor4R48.dbl";							
	format: "FLOAT64_LE";		
	bloks: -1;
        shared_mem: false;
};							
								
## COEFF Set_2 ##								
#links								
coeff "l1coeff_2" {								
	filename: "/media/conffltr/filter/48/lp_2/Cor1L48.dbl";							
	format: "FLOAT64_LE";		
	bloks: -1;
        shared_mem: false;
};								
								
coeff "l2coeff_2" {								
	filename: "/media/conffltr/filter/48/lp_2/Cor2L48.dbl";							
	format: "FLOAT64_LE";			
	bloks: -1;
        shared_mem: false;
};								
								
coeff "l3coeff_2" {								
	filename: "/media/conffltr/filter/48/lp_2/Cor3L48.dbl";							
	format: "FLOAT64_LE";		
	bloks: -1;
        shared_mem: false;
};								
								
coeff "l4coeff_2" {								
	filename: "/media/conffltr/filter/48/lp_2/Cor4L48.dbl";							
	format: "FLOAT64_LE";		
	bloks: -1;
        shared_mem: false;
};								
								
#rechts								
coeff "r1coeff_2" {								
	filename: "/media/conffltr/filter/48/lp_2/Cor1R48.dbl";							
	format: "FLOAT64_LE";			
	bloks: -1;
        shared_mem: false;
};								
								
coeff "r2coeff_2" {								
	filename: "/media/conffltr/filter/48/lp_2/Cor2R48.dbl";							
	format: "FLOAT64_LE";			
	bloks: -1;
        shared_mem: false;
};								
								
coeff "r3coeff_2" {								
	filename: "/media/conffltr/filter/48/lp_2/Cor3R48.dbl";							
	format: "FLOAT64_LE";			
	bloks: -1;
        shared_mem: false;
};								
								
coeff "r4coeff_2" {								
	filename: "/media/conffltr/filter/48/lp_2/Cor4R48.dbl";							
	format: "FLOAT64_LE";		
	bloks: -1;
        shared_mem: false;
};								
								
								
## COEFF Set_3 ##								
#links								
coeff "l1coeff_3" {								
	filename: "/media/conffltr/filter/48/lp_3/Cor1L48.dbl";							
	format: "FLOAT64_LE";		
	bloks: -1;
        shared_mem: false;
};								
								
coeff "l2coeff_3" {								
	filename: "/media/conffltr/filter/48/lp_3/Cor2L48.dbl";							
	format: "FLOAT64_LE";		
	bloks: -1;
        shared_mem: false;
};								
								
coeff "l3coeff_3" {								
	filename: "/media/conffltr/filter/48/lp_3/Cor3L48.dbl";							
	format: "FLOAT64_LE";		
	bloks: -1;
        shared_mem: false;
};								
								
coeff "l4coeff_3" {								
	filename: "/media/conffltr/filter/48/lp_3/Cor4L48.dbl";							
	format: "FLOAT64_LE";		
	bloks: -1;
        shared_mem: false;
};								
								
#rechts								
coeff "r1coeff_3" {								
	filename: "/media/conffltr/filter/48/lp_3/Cor1R48.dbl";							
	format: "FLOAT64_LE";		
	bloks: -1;
        shared_mem: false;
};								
								
coeff "r2coeff_3" {								
	filename: "/media/conffltr/filter/48/lp_3/Cor2R48.dbl";							
	format: "FLOAT64_LE";		
	bloks: -1;
        shared_mem: false;
};								
								
coeff "r3coeff_3" {								
	filename: "/media/conffltr/filter/48/lp_3/Cor3R48.dbl";							
	format: "FLOAT64_LE";		
	bloks: -1;
        shared_mem: false;
};								
								
coeff "r4coeff_3" {								
	filename: "/media/conffltr/filter/48/lp_3/Cor4R48.dbl";							
	format: "FLOAT64_LE";		
	bloks: -1;
        shared_mem: false;
};


							
## INPUT analog								
								
input "i_1", "i_2", "i_3", "i_4", "i_5", "i_6", "i_7", "i_8", "i_9", "i_10" {								
	device: "alsa" { device: "hw:M1010"; link: false;};							
	sample: "S32_LE";							
	channels: 12/0,1,2,3,4,5,6,7,8,9;							
};								
								
## OUTPUT analog								
								
output "o_1", "o_2", "o_3", "o_4", "o_5", "o_6", "o_7", "o_8", "o_9", "o_10" {								
	device: "alsa" { device: "hw:M1010"; link: false;};							
	sample: "S32_LE";							
	channels: 10/0,1,2,3,4,5,6,7,8,9;							
	#delay: 0,0,0,0,0,0,0,0,0,0;							
	#dither: true;							
};								
								
## FILTERS ##							
filter "lswfilter" {								
	from_inputs: "i_1";							
	to_outputs: "o_9";							
	coeff: "lswcoeff";	
	process: -1;		
};								
								
filter "rswfilter" {								
	from_inputs: "i_1";							
	to_outputs: "o_10";							
	coeff: "rswcoeff";	
	process: -1;		
};								
								
filter "lmtfilter" {								
	from_inputs: "i_2";							
	to_outputs: "o_1";							
	coeff: "lmtcoeff";							
        process: -1;	
};								
								
filter "lhtfilter" {								
	from_inputs: "i_2";							
	to_outputs: "o_2";							
	coeff: "lhtcoeff";	
	process: -1;		
};								
								
filter "rmtfilter" {								
	from_inputs: "i_3";							
	to_outputs: "o_3";							
	coeff: "rmtcoeff";	
	process: -1;	
};								
													
filter "rhtfilter" {								
	from_inputs: "i_3";							
	to_outputs: "o_4";							
	coeff: "rhtcoeff";	
	process: -1;		
};								
								
filter "cmtfilter" {								
	from_inputs: "i_4";							
	to_outputs: "o_5";							
	coeff: "cmtcoeff";	
	process: -1;	
};								
								
filter "chtfilter" {								
	from_inputs: "i_4";							
	to_outputs: "o_6";							
	coeff: "chtcoeff";	
	process: -1;	
};								
								
filter "lsfilter" {								
	from_inputs: "i_5";							
	to_outputs: "o_7";							
	coeff: "lscoeff";	
	process: -1;
};								
								
filter "rsfilter" {								
	from_inputs: "i_6";							
	to_outputs: "o_8";							
	coeff: "rscoeff";	
	process: -1;	
};
VG, Stanislaw
Bild
fftransformation
Aktiver Hörer
Beiträge: 80
Registriert: 30.10.2012, 19:09
Wohnort: nähe Karlsruhe/ Landau

Beitrag von fftransformation »

Hallo Stanislaw,

du meinst der Fehler liegt in meiner brutefir-konfig und ich soll die von Dir modifizierte probieren.
-übrigens danke dafür!

Mir ist noch aufgefallen, dass Du bei den Filters nicht überall shared_mem: false; gesetzt hast, soll ich das noch ergänzen? -oder war das Absicht? Wenn ja musst Du mir das dann erklären.

Was halt schon komisch ist, dass arecord nicht tut und brutefir eigentlich schon, wenn die Software mal läuft.
Meist wenn brutefir abgeschmiert ist und man brutefir nochmal startet läuft die dann durch.

Grüße Georg
Bild
Antworten