Hallo,
Filter habe ich nun erstellt und auch schon mit Hilfe von Daphile geprüft. Nun würde ich diese gerne in brutefir einbinden. Ich habe auch schon einige Internetquellen studiert, aber so ganz schlau bin ich daraus nicht geworden. Liegt vielleicht daran, dass die meisten Beispiele, die ich gefunden habe, nicht nur falten (wenn überhaupt) sondern digitale Frequenzweichen sind und damit böhmische Dörfer für mich.
Ich zitiere mich mal, so sieht meine brutefir_config aus:
Code: Alles auswählen
float_bits: 32; # internal floating point precision
sampling_rate: 96000; # sampling rate in Hz of audio interfaces
filter_length: 4096,16; # 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: false; # allow use of input poll mode
modules_path: "."; # extra path where to find BruteFIR modules
monitor_rate: false; # monitor sample rate
convolver_config: "~/.brutefir_convolver"; # location of convolver config file
logic: "cli" { port: 3000; };
## INPUT OUTPUT ##
input "left-in", "right-in" {
device: "file" {path: "/dev/stdin";};
sample: "S32_LE";
channels: 2/0,1;
};
output "left-out", "right-out" {
device: "alsa" {device: "hw:1"; ignore_xrun: true;};
#device: "file" {path:"/dev/stdout"; };
sample: "S32_LE";
channels: 2/0,1;
dither: false;
};
## FILTER DEFAULTS ##
filter "l_filter" {
from_inputs: "left-in"/2.0;
to_outputs: "left-out"/0.0;
process: 0; # process index to run in (-1 means auto)
coeff: -1; # -1 means "copy"
delay: 0; # predelay, in blocks
crossfade: false; # crossfade when coefficient is changed
};
filter "r_filter" {
from_inputs: "right-in"/2.0;
to_outputs: "right-out"/0.0;
process: 0; # process index to run in (-1 means auto)
coeff: -1;
delay: 0; # predelay, in blocks
crossfade: false; # crossfade when coefficient is changed
};
So sieht meine brutefir_config datei zur Zeit aus
Würde das zum Einbinden der Filter funktionieren?:
Code: Alles auswählen
float_bits: 32; # internal floating point precision
sampling_rate: 96000; # sampling rate in Hz of audio interfaces
filter_length: 4096,16; # 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: false; # allow use of input poll mode
modules_path: "."; # extra path where to find BruteFIR modules
monitor_rate: false; # monitor sample rate
convolver_config: "~/.brutefir_convolver"; # location of convolver config file
logic: "cli" { port: 3000; };
## COEFFICIENTS ##
coeff "linker_kanal" {
filename: "/home/filter/Dateiname_filter.dbl"; # .dbl? Trotz Google hab ich nicht verstanden, was das für ein Format ist, auf der brutefir Seite seht .txt also eine Text Datei?
format: "FLOAT_LE";
attenuation: 2.5; # mein jetziges Filter übersteuert ein wenig ich schwäche um 2,5 dB ab
};
coeff "rechter_kanal" {
filename: "/home/filter/Dateiname_filter.dbl"; # .dbl? Trotz Google hab ich nicht verstanden, was das für ein Format ist, auf der brutefir Seite seht .txt also eine Text Datei?
format: "FLOAT_LE";
attenuation: 2.5; # mein jetziges Filter übersteuert ein wenig ich schwäche um 2,5 dB ab
};
## INPUT OUTPUT ##
input "left-in", "right-in" {
device: "file" {path: "/dev/stdin";};
sample: "S32_LE";
channels: 2/0,1;
};
output "left-out", "right-out" {
device: "alsa" {device: "hw:1"; ignore_xrun: true;};
#device: "file" {path:"/dev/stdout"; };
sample: "S32_LE";
channels: 2/0,1;
dither: false;
};
## FILTER DEFAULTS ##
filter "l_filter" {
from_inputs: "left-in";
to_outputs: "left-out";
process: 0; # process index to run in (-1 means auto)
[b] coeff: "linker_kanal"; [/b]
delay: 0; # predelay, in blocks
crossfade: false; # crossfade when coefficient is changed
};
filter "r_filter" {
from_inputs: "right-in";
to_outputs: "right-out";
process: 0; # process index to run in (-1 means auto)
[b]coeff: "rechter_kanal";[/b]
delay: 0; # predelay, in blocks
crossfade: false; # crossfade when coefficient is changed
};
Jetzt habe ich meine Filter mühselig ins .wav Format gebracht und jetzt soll ich sie in Text umwandeln? Wenn ja, wie?
Oder geht das auch:
Code: Alles auswählen
float_bits: 32; # internal floating point precision
sampling_rate: 96000; # sampling rate in Hz of audio interfaces
filter_length: 4096,16; # 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: false; # allow use of input poll mode
modules_path: "."; # extra path where to find BruteFIR modules
monitor_rate: false; # monitor sample rate
convolver_config: "~/.brutefir_convolver"; # location of convolver config file
logic: "cli" { port: 3000; };
## COEFFICIENTS ##
coeff "linker_kanal" {
filename: "/home/filter/Dateiname_filter.wav";
format: "FLOAT_LE" | "wave"; # oder "wav"?
attenuation: 2.5; # mein jetziges Filter übersteuert ein wenig ich schwäche um 2,5 dB ab
};
coeff "rechter_kanal" {
filename: "/home/filter/Dateiname_filter.wav";
format: "FLOAT_LE"; | "wave"; # oder "wav"?
[b]attenuation: 2.5; # mein jetziges Filter übersteuert ein wenig ich schwäche um 2,5 dB ab
};
## INPUT OUTPUT ##
input "left-in", "right-in" {
device: "file" {path: "/dev/stdin";};
sample: "S32_LE";
channels: 2/0,1;
};
output "left-out", "right-out" {
device: "alsa" {device: "hw:1"; ignore_xrun: true;};
#device: "file" {path:"/dev/stdout"; };
sample: "S32_LE";
channels: 2/0,1;
dither: false;
};
## FILTER DEFAULTS ##
filter "l_filter" {
from_inputs: "left-in";
to_outputs: "left-out";
process: 0; # process index to run in (-1 means auto)
[b] coeff: "linker_kanal"; [/b]
delay: 0; # predelay, in blocks
crossfade: false; # crossfade when coefficient is changed
};
filter "r_filter" {
from_inputs: "right-in";
to_outputs: "right-out";
process: 0; # process index to run in (-1 means auto)
[b]coeff: "rechter_kanal";[/b]
delay: 0; # predelay, in blocks
crossfade: false; # crossfade when coefficient is changed
};
Wenn ich es richtig verstanden habe weist die Zahl hinter "process:" in den FILTER DEFAULTS" dem Filter einen Prozessor zu. Da mein C1 ein Vier-Kern rechner ist, könnte ich den einen Filter auf dem 1. Kern (process: 0;) und den anderen auf dem zweiten Kern (process: 1;) laufen lassen? Das sähe dann so aus:
Code: Alles auswählen
float_bits: 32; # internal floating point precision
sampling_rate: 96000; # sampling rate in Hz of audio interfaces
filter_length: 4096,16; # 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: false; # allow use of input poll mode
modules_path: "."; # extra path where to find BruteFIR modules
monitor_rate: false; # monitor sample rate
convolver_config: "~/.brutefir_convolver"; # location of convolver config file
logic: "cli" { port: 3000; };
## COEFFICIENTS ##
coeff "linker_kanal" {
filename: "/home/filter/Dateiname_filter.wav";
format: "FLOAT_LE" | "wave"; # oder "wav"?
attenuation: 2.5; # mein jetziges Filter übersteuert ein wenig ich schwäche um 2,5 dB ab
};
coeff "rechter_kanal" {
filename: "/home/filter/Dateiname_filter.wav";
format: "FLOAT_LE"; | "wave"; # oder "wav"?
attenuation: 2.5; # mein jetziges Filter übersteuert ein wenig ich schwäche um 2,5 dB ab
};
## INPUT OUTPUT ##
input "left-in", "right-in" {
device: "file" {path: "/dev/stdin";};
sample: "S32_LE";
channels: 2/0,1;
};
output "left-out", "right-out" {
device: "alsa" {device: "hw:1"; ignore_xrun: true;};
#device: "file" {path:"/dev/stdout"; };
sample: "S32_LE";
channels: 2/0,1;
dither: false;
};
## FILTER DEFAULTS ##
filter "l_filter" {
from_inputs: "left-in";
to_outputs: "left-out";
process: 0; # process index to run in (-1 means auto)
[b] coeff: "linker_kanal"; [/b]
delay: 0; # predelay, in blocks
crossfade: false; # crossfade when coefficient is changed
};
filter "r_filter" {
from_inputs: "right-in";
to_outputs: "right-out";
process: 1; # process index to run in (-1 means auto)
[b]coeff: "rechter_kanal";[/b]
delay: 0; # predelay, in blocks
crossfade: false; # crossfade when coefficient is changed
};
Oder wäre die Angabe -1 in beiden Fällen (die Aufgaben werden automatisch verteilt) die bessere Lösung?
Noch eine Frage hätte ich, was hat die Angabe filter_length: 4096,16; zu bedeuten? 4096 sind tabs? Ist das die Anzahl der Stützstellen? Was bedeutet die 16?
Vielen Dank für Eure Kommentare
Gruß
Uwe