Hallo Simon,
meine problematische brutefir config sieht wie folgt 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: 512,128; # length of filters: 65536 = 512 * 128
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: true; # pause filtering when input is zero
lock_memory: true; # try to lock memory if realtime prio is set
##
## LOGIC
##
logic: "cli" { port: 3000; };
##
## OUTPUT
##
output "out_left", "out_right" {
device: "alsa" { device: "usbaudio"; ignore_xrun: true;};
sample: "S32_LE";
channels: 18/0,1;
delay: 0,0;
maxdelay: -1;
individual_maxdelay: -1,-1;
mute: false,false;
dither: false;
};
##
## INPUT
##
input "in_left", "in_right" {
device: "alsa" { device: "usbaudio"; ignore_xrun: true;};
sample: "S32_LE";
channels: 18/4,5; # number of open channels / each channel
};
##
## FILTER definition
##
coeff "drc_left" {
filename: "./sink_6dB_boost_1dB/Cor1L48.dbl";
format: "FLOAT64_LE"; # file format
};
coeff "drc_right" {
filename: "./sink_6dB_boost_1dB/Cor1R48.dbl";
format: "FLOAT64_LE"; # file format
};
##
## FILTER application
##
filter "main_left" {
from_inputs: "in_left";
to_outputs: "out_left";
process: -1;
coeff: "drc_left";
delay: 0;
crossfade: false;
};
filter "main_right" {
from_inputs: "in_right";
to_outputs: "out_right";
process: -1;
coeff: "drc_right";
delay: 0;
crossfade: false;
};
Das alsa device "usbaudio" ist wie folgt definiert:
Code: Alles auswählen
#
# USB audio
#
pcm.usbaudio {
type hw
card 2
device 0
format S32_LE
channels 18
rate 48000
}
Soweit ich das beurteilen kann ist das ziemlich straight forward, ohne dither und andere Spielereien. Sobald ich die config wieder auf
setze -- damit höre ich jetzt gerade -- läuft die Wiedergabe soweit ich beurteilen kann problemlos.
Der Versuch mit der Pipe zeigt das gleiche Verhalten. Auch wenn ich nicht mehr von der Soundkarte lese, sondern nur noch von einer Datei lese. Sobald double precision benutzt wird, treten die Störgeräusche auf...
Viele Grüße,
Andree
PS: Habe heute nochmal die Focusrite 2i2 angeschlossen. Dort tritt das Phänomen genauso auf.
PPS: Deine Idee mit der Pipe hat mich darauf gebracht, dass ich einfach mal die gesamte USB-Audiointerface-Mimik ausblende. Ich habe als Input für brutefir eine Datei genommen, den Output habe ich wiederum in eine Datei geschrieben. Und siehe da: Der Fehler tritt weiterhin auf! Damit ist wohl klar, dass das Problem irgendwo innerhalb der double precision Verarbeitung selbst liegt... Als Schmankerl hier mal Screenshots der Spektrogramme des Outputs bei single und double precision. Die Unterschiede sind deutlich sichtbar (und hörbar).
single precision
double precision
Und nu?