Brutefir - Audioconvolution und Delay

bastelixx · „wie bastelixx zum aktiven Hören kam“
Aktiver Hörer
Beiträge: 398
Registriert: 08.11.2015
„wie bastelixx zum aktiven Hören kam“

Beitrag von bastelixx »

Buschel hat geschrieben: 08.01.2025, 11:51 Moin,

das Prinzip ist in etwa so:

Code: Alles auswählen

## your_input > roomcorr > eq > your_output

filter "eq" {
   from_filters: "roomcorr";
   to_outputs: "your_output";
   coeff: "roomcorr_coeff";
};

filter "roomcorr" {
   from_inputs: "your_input";
   to_filters: "eq";
   coeff: "eq_coeff";
};
Grüße,
Andree

Hallo Andree,

es gibt noch Option z.B:

Code: Alles auswählen

filter "roomcorr" {
   from_filters: "your_X-Over";
   to_filters: "eq";
   coeff: "eq_coeff";
};
oder wie auch immer :cheers:

VG, Stanislaw
frankl · „wie frankl zum aktiven Hören kam“
Aktiver Hörer
Beiträge: 516
Registriert: 20.01.2013
Wohnort: Aachen
„wie frankl zum aktiven Hören kam“

Beitrag von frankl »

Hallo Georg,

eine vollständige brutefir Konfigurationsdatei (auf die hier im Forum auch schon an anderer Stelle verwiesen wurde) ist hier zu finden. Dort werden auch Kanäle gemischt und wieder entmischt (MS-Kodierung).

Die brutefir Dokumentation ist auch sehr genau und erklärt alles.

Viele Grüße,
Frank
fftransformation · „wie fftransformation zum aktiven Hören kam“
Aktiver Hörer
Beiträge: 85
Registriert: 30.10.2012
Wohnort: nähe Karlsruhe/ Landau
„wie fftransformation zum aktiven Hören kam“

Beitrag von fftransformation »

Danke euch für die Anregungen, da ich nicht so gut englisch und auch nicht so das Backgoundwissen habe ist die Brutefirdoku schon schwer verständlich für mich.

Ist das so korrekt?:

Code: Alles auswählen

# weiche
filter "ht_Filter" {								
	from_inputs: "in_1";		#input					
	to_outputs: "room_filter";	#Output zu der raumkorrektur					
	coeff: "ht_coeff";							
};

# raumkorrektur
filter "room_filter" {								
	from_inputs: "ht_filter";	#input von der weiche					
	to_outputs: "out_1";		#output					
	coeff: "room_coff";							
};
fftransformation · „wie fftransformation zum aktiven Hören kam“
Aktiver Hörer
Beiträge: 85
Registriert: 30.10.2012
Wohnort: nähe Karlsruhe/ Landau
„wie fftransformation zum aktiven Hören kam“

Beitrag von fftransformation »

Code: Alles auswählen

# weiche
filter "ht_Filter" {								
	from_inputs: "in_1";		#input					
	to_outputs: "room_filter";	#Output zu der raumkorrektur					
	coeff: "room_coff";		#bei Dir vertauscht				
};

# raumkorrektur
filter "room_filter" {								
	from_inputs: "ht_filter";	#input von der weiche					
	to_outputs: "out_1";		#output					
	coeff: "ht_coeff";              #bei Dir vertauscht					
};
Die Reihenfolge der beiden Blöcke an sich sollte ja keine Rolle spielen, also dass der Input "unten" steht
Aber ich habe auch nicht verstanden was bei Dir filter "eq" bedeutet, daher ist die Ableitung für mich etwas schwierig
Buschel · „wie Buschel zum aktiven Hören kam“
Aktiver Hörer
Beiträge: 1038
Registriert: 12.12.2013
Wohnort: Raum Karlsruhe
„wie Buschel zum aktiven Hören kam“

Beitrag von Buschel »

  1. Die Reihenfolge ist entscheidend. Wie soll das zweite Filter wissen, das sein output erst später definiert wird?
  2. "eq" ist nur ein Beispiel, in deinem Fall ist das die Weiche.
  3. Du musst input/output korrigieren -- wie im Beispiel, nicht von deinem Setup kopieren.
Das Beispiel zeigt das alles. Im besten Fall ersetzt du nur die Namen für die Filter, Input, Outputs und Koeffizienten.
fftransformation · „wie fftransformation zum aktiven Hören kam“
Aktiver Hörer
Beiträge: 85
Registriert: 30.10.2012
Wohnort: nähe Karlsruhe/ Landau
„wie fftransformation zum aktiven Hören kam“

Beitrag von fftransformation »

Alter Schwede, manchmal filtert mein Gehirn sachen einfach weg und ich sehe dann das was ich schon kenne :D
from Filter, to filters ist nicht das gleiche wie from inputs, to output

so müsste es dann passen:

Code: Alles auswählen

filter "HTweiche" {
   from_inputs: "in_1";
   to_filters: "roomcorr";
   coeff: "HTweiche_coeff";
};

filter "roomcorr" {
   from_filters: "HTweiche";
   to_outputs: "out_1";
   coeff: "roomcorrfilters_coeff";
};
bastelixx · „wie bastelixx zum aktiven Hören kam“
Aktiver Hörer
Beiträge: 398
Registriert: 08.11.2015
„wie bastelixx zum aktiven Hören kam“

Beitrag von bastelixx »

fftransformation hat geschrieben: 09.01.2025, 14:56 Alter Schwede, manchmal filtert mein Gehirn sachen einfach weg und ich sehe dann das was ich schon kenne :D
from Filter, to filters ist nicht das gleiche wie from inputs, to output

so müsste es dann passen:

Code: Alles auswählen

filter "HTweiche" {
   from_inputs: "in_1";
   to_filters: "roomcorr";
   coeff: "HTweiche_coeff";
};

filter "roomcorr" {
   from_filters: "HTweiche";
   to_outputs: "out_1";
   coeff: "roomcorrfilters_coeff";
};

Starte brutefir im Terminal, der wird schon meckern, wenn was nicht stimmt
bastelixx · „wie bastelixx zum aktiven Hören kam“
Aktiver Hörer
Beiträge: 398
Registriert: 08.11.2015
„wie bastelixx zum aktiven Hören kam“

Beitrag von bastelixx »

fftransformation hat geschrieben: 09.01.2025, 14:56 Alter Schwede, manchmal filtert mein Gehirn sachen einfach weg und ich sehe dann das was ich schon kenne :D
from Filter, to filters ist nicht das gleiche wie from inputs, to output

Noch besser brutefir mit Jack Soundserver zu nutzen, die Priorität der Soundprozesse kann man auf -96 schrauben und somit allem Software in den Arsch treten. So läuft brutefir bei mir mit Prio -91
bastelixx · „wie bastelixx zum aktiven Hören kam“
Aktiver Hörer
Beiträge: 398
Registriert: 08.11.2015
„wie bastelixx zum aktiven Hören kam“

Beitrag von bastelixx »

bastelixx hat geschrieben: 20.04.2025, 10:01
bastelixx hat geschrieben: 07.01.2025, 11:47
Denkfehler besteht bei Meisten Acourate Nutzern, da die Linearisierung für separate Filter angewendet wird, was gigantisch große Filter entstehen lässt.
Brutefir ist hochflexibel und ermöglicht eine serielle Schaltung von mehreren Filtern, EQs für jeden einzelnen Kanal.
Man erzeugt minimal kleine X-Over Filter zur Frequenztrennung, falls ein Aktivsystem betrieben wird. Bei Passivsystemen/Boxen alles noch viel einfacher.
Die Messung macht man am Hörplatz mit vollem Setup für Links, dann für Rechts - so wie die Ohren sind. Ich messe mit REW über den Gesamtfrequenzbereich, exportiere Filter Impulse response als WAV für Rechts und für Links => starte Linearisierung Software PORC mit 131000 Taps Auflösung bei 48 KHz => entstandene linearisierte WAV Dateien umwandle mit SOX zu PCM Dateien => die PCM linearisirte Dateien implementire ich im brutefir als serielle Filter für jeden einzelnen Weg, oder bei Stereo als Eingangfilter für Rechts und für Links.
Wie schon geschrieben, die Latenzzeit meines System an 10 Kanälen und Matrix für Trinaurale Wiedergabe betrifft nur 30 ms.
30 ms nicht 300 ms :cheers:

VG, Stanislaw
BRUTEFIR Delay Auflösung liegt bei 1/100 Sample (subdelay Option bei brutefir), was bei 48 KHz 0,0000002 Sekunden, oder 0,0002 ms, oder 0,2 µs entspricht

Niedrige Latenzen können NUR bei Umwandlung der Lineariesierungsdatei aus WAV in PCM Format erreicht werden
Antworten