Raumkorrektur unter Linux (und Windows sowie Mac)

marco93

Shnitzled in the Negev
Ich habe jetzt endlich DRC zum Laufen bekommen und das Ergebnis ist mindestens genauso gut wie Sonarworks :) :


Wenn Interesse besteht, kann ich demnächst eine kurze Anleitung schreiben. Muß aber vorher noch etwas testen und verstehen.
 
Mit dem von dir verlinkten Programm kann ich ja nur den Faltungs-Filter ausrechnen, aber nicht ins System einklinken. Mich würde primär interessieren, was man machen muss, dass alles unter Linux über nen Faltungshall rausgehaun wird. Aber auch den Rest fänd ich interessant.

Ich hab seit fast 15 Jahren nen vollparametrischen EQ vor den Monitoren, mit dem senke ich bei den zwei zwei fießesten Resonanzen im Bassbereich soweit ab, dass sich das an meiner Hörposition einigermaßen ausgewogen anhört. Mir hilft das schon enorm, wär aber sehr interessiert, ob da noch mehr geht.

In der Praxis funktioniert sowas bei mir nur, wenn das n separates Gerät macht (also nicht der Computer, mit dem ich gerade arbeite), aber kleine Computer für Spezialzwecke sind heute ja auch nicht mehr sooooo teuer.
 
Hilft alles nur bedingt. Gerade bei viel zu langen Nachhallzeiten, wie sie sehr oft das Problem sind, helfen EQs vor der Abhöre nur bedingt bis gar nicht. Bei Auslöschungen durch ungünstige Reflexionen ebenfalls nicht.

Man sollte das Geld und vor allem die Zeit lieber direkt in Raumakustik investieren. Das bringt erheblich bessere Ergebnisse.

Ein EQ vor der Abhöre für das günstig grobe oder den letzten Feinschliff ist allerdings nicht zu verachten. Man sollte hier allerdings ein Auge mehr auf die Güte des Gerätes legen - je nach Anwendungsfall und persönlichen Anspruch natürlich.
 
Zuletzt bearbeitet von einem Moderator:
teufelszeug ! pfui pfui

hab das auch mal ausprobiert. Sonarworks und auch ein deq2496

wobei ich den deq als metering gerät ja gerne mag :)
 
Zuletzt bearbeitet:
Wenn Interesse besteht, kann ich demnächst eine kurze Anleitung schreiben. Muß aber vorher noch etwas testen und verstehen.
ja kurze Anleitung wäre interessant, auch unvollständig mit Lücken.
Das verlinkte Dokument beinhaltet auch schon interessante Details z.b. preecho-truncation, ERB-Skala und so.
 
Mit dem von dir verlinkten Programm kann ich ja nur den Faltungs-Filter ausrechnen, aber nicht ins System einklinken. Mich würde primär interessieren, was man machen muss, dass alles unter Linux über nen Faltungshall rausgehaun wird. Aber auch den Rest fänd ich interessant.

Ich hab seit fast 15 Jahren nen vollparametrischen EQ vor den Monitoren, mit dem senke ich bei den zwei zwei fießesten Resonanzen im Bassbereich soweit ab, dass sich das an meiner Hörposition einigermaßen ausgewogen anhört. Mir hilft das schon enorm, wär aber sehr interessiert, ob da noch mehr geht.

In der Praxis funktioniert sowas bei mir nur, wenn das n separates Gerät macht (also nicht der Computer, mit dem ich gerade arbeite), aber kleine Computer für Spezialzwecke sind heute ja auch nicht mehr sooooo teuer.

Im Prinzip ist es recht simpel, aber DRC hat Unmengen an Parametern und ich habe mich noch nicht überall durchgetestet. Mit den default Settings habe ich aber ein Ergebnis, was mit SW vergbleichbar ist und deutlich besser ist, als wenn ich nur unter 200 Hz mit einem EQ die Überhöhungen rausnehme. Vor alle die Monomitte klingt viel mehr mono mit DRC. was wohl an der Phasenkorrektur liegt, die man mit einem simplen EQ nicht hat.

Als erstes braucht man ein IR file, was man mit REW aufnehmen kann. Dazu REW installieren und einen Sweep aufnehmen von ca. 20 Hz - 20000 Hz (bei mir waren es 30 -20000 Hz). Lautstärke sollte ausreichend hoch sein, also etwa 75 dB - 85 dB.

REW_Messung.png

Micro muß natürlich an der Hörposition sein und gleichen Abstand zu beiden Monitoren haben, was auch dem Monitor - Monitor - Abstand entspricht (Stereodreieck). Das ganze macht man einmal für den linken und rechten Monitor. Den IR kann man sich auch anschauen und er sollte mindestens 1 s lang sein (bei mir sind es z.B. 2 s):

IR_filtered.png

Danach exportiert man sich beide Messungen und benennt sie jeweils mit z.B. rew_ir_left.wav und rew_ir_right.wav. Wichtig ist hier 32 bit zu wählen und das Signal zu normalisieren.

Export_IR.png


Um nun mit DRC die Filter zu erzeugen muß man die wavs zu pcm Dateien konvertieren, was mit SOX geht.

Code:
sox rew_ir_left.wav -t f32 -r 48000 -c 1  rew_ir_48_left.pcm                                                                                                                                                                                            
sox rew_ir_right.wav -t f32 -r 48000 -c 1 rew_ir_48_right.pcm

Auf die pcm files kann man nun DRC anwenden. In meinem Fall schaut das derzeit so aus :

Code:
drc --BCInFile=/home/marco/DRC_room_correction/rew_ir_48_left.pcm --PSOutFile=/home/marco/DRC_room_correction/filter_48_left.pcm --PSPointsFile="/usr/share/drc/target/48.0 kHz/pa-48.0.txt" --MCFilterType=M --MCPointsFile=/home/marco/DRC_room_correction/35R586_cal_0degree.txt    --PLMaxGain=1.2  --PSNormFactor=0.7 "/usr/share/drc/config/48.0 kHz/erb-48.0.drc"

drc --BCInFile=/home/marco/DRC_room_correction/rew_ir_48_right.pcm --PSOutFile=/home/marco/DRC_room_correction/filter_48_right.pcm --PSPointsFile="/usr/share/drc/target/48.0 kHz/pa-48.0.txt" --MCFilterType=M --MCPointsFile=/home/marco/DRC_room_correction/35R586_cal_0degree.txt  --PLMaxGain=1.2  --PSNormFactor=0.7 "/usr/share/drc/config/48.0 kHz/erb-48.0.drc"

Man braucht:

1. input file: rew_ir_48_left.pcm
2. output file, was erzeugen werden soll: filter_48_left.pcm
3. das Target (hier pa-48.0.txt = default Target): pa-48.0.txt (findet sich im drc Ordner)
4. MCFilterType=M setzen, um Mic Kalibrierung zu verwenden, ansonsten MCFilterType=N wählen. Ich musste bei meinem Sonarworkskorrekturfile (35R586_cal_0degree.txt) noch zwei Zeilen ergänzen, damit es funktioniert hat (siehe hier: https://sourceforge.net/p/drc-fir/mailman/message/4180436/).

0 0 in der ersten Zeile (jeweils Frequenz und dB Korrektur

Ausserdem habe ich den letzten dB Wert bei 20000 Hz (= X) nochmals genommen und in der letzten Zeile dann

24000 X ergänzt. Bei einer Samplerate muß dann hier (vermutlich) 22050 stehen, also samplerate / 2.

Ich glaube nicht, dass die Mikrokorrektur kritisch ist, da die Abweichung erst bei hohen Frequenzen größer wird (~4-5 dB bei meinem Mic).

5. PLMaxGain=1.2 gibt an, wie stark geboosted werden darf. Ich habe einen eher kleinen Wert gewählt (siehe Manual). Kleinster Wert ist 1, 0 gibt Grütze.

6. PSNormFactor=0.7 gibt an wie stark die Lautstärke nach dem Filter reduziert wird. Da ja etwas geboostet wird, kann es vorkommen, dass man über 0 dBFS kommt. Ich habe das durch Trial and Error ausprobiert und jeweils die Lautstärke vor und nach dem Filter geprüft. Bei 0.7 ist Eingang nahezu Ausgang. Bei 0.6 verliere ich ca. 2 dB.

7. Config file: erb-48.0.drc (siehe Manual)

Wichtig: Man muß immer konsistent auf die Files der richtigen Samplerate (im jeweiligen Ordner) verweisen, d.h. entweder 48 kHz oder 44.1 kHz. Der Sweep sollte entsprechend auch mit der richtigen Rate aufgenommen sein.

Das ganze erzeugt nun wieder zwei filter pcm files, die man - um sie mit einem Convolver zu verwenden - wieder in WAVs konvertieren muß:

Code:
sox -t f32 -r 48000 -c 1 filter_48_left.pcm filter_48_left.wav
sox -t f32 -r 48000 -c 1 filter_48_right.pcm filter_48_right.wav

Die beiden filter files kann man nun in z.B. jconvolver laden. Hierzu habe ich folgendes config file (jc.config) gemacht:

Code:
# This file is for use at 48 kHz.
#
#
# Verzeichnis wo die Filter files sind:
#
#/cd /home/
#
#                        in  out   partition    maxsize
# ---------------------------------------------------------------
/convolver/new    2    2        1024        65536
#
#               in out  gain  delay  offset  length  chan      file
# --------------------------------------------------------------------------
#/impulse/read    1   1    0.6      0      0       0    1     filter_48_left.wav
#/impulse/read    2   2    0.6      0      0       0    1     filter_48_right.wav
/impulse/read    1   1    1.0      0      0       0    1     filter_48_left.wav
/impulse/read    2   2    1.0      0      0       0    1     filter_48_right.wav

Anmerkung: Den gain kann man nachträglich auch in jconvolver etwas reduzieren, aber ich habe gleich den filter entsprechend erzeugt.

jconvolver rufe ich dann über ein Terminal mit "jconvolver jc.config" auf.

Für das Routing verwende ich Carla, hier z.B. mit zwei Metern um vor und nach dem Filter zu messen:

SEjQssi.png


Wenn ich jetzt pink noise durch den Filter schicke, dann schaut mein Signal danach so aus (gelb nach, rot vor dem Filter):
fQX7aEg.png


Das schaut auch gut aus: https://github.com/HEnquist/camilladsp, habe ich aber noch nicht ausprobiert. Das könnte man auch als Convolver nehmen.
 
Zuletzt bearbeitet:


Neueste Beiträge

News

Zurück
Oben