Update 01-05Jeg har kodet lidt videre på scriptet til at automatisere DRC, så målinger osv. bliver foretaget automatisk. Hvis du ligger inde med en mikrofon og har lyst til at prøve - så smid mig en mail så skal jeg gerne sende projektet.
Det skulle ikke tage mange minutter eller kræve noget særlig viden at få lavet korrektions-filen.
------------------------------------------------------------ ----
Jeg har længe gået og kigget lidt på de forskellige muligheder for rum-korrektion. Som studerende er de fleste muligheder dog i en prisklasse, hvor jeg slet ikke kan være med. Jeg har derfor forsøgt mig med den gratis software DRC:
http://drc-fir.sourceforge.net/
Ulempen er, at det kræver noget mere tid og viden end de færdige produkter. Det skulle dog virke særdeles godt og vigtigst af alt, så er det gratis.
Selve DRC bruges kun til at lave et impuls-response om til de filtre der skal bruges i forbindelse med en afspiller eller hvor man nu indlæser filtrene.
Der er derfor lidt arbejde med at finde et program til at lave sweeps, afspille, optage, lave impuls-respons osv. Der er dog nogle små programmer i selve DRC som kan bruges. Hvis man aldrig før har leget med programmer der styres vha. et par kommandoer fra kommando-prompt, kan de være lidt svære at komme i gang med.
Da jeg selv begyndte på at automatisere hele processen så meget som muligt, tænkte jeg, at der måske var andre der kunne have glæde af at have lidt at "kigge efter" - eller måske bare kopiere det hele, så der kan laves målinger og filter korrigering uden det store besvær.
Som det er lige pt. er det lavet som en lille batch-fil hvor jeg med min opsætning teoretisk set kan starte filen, vente nogle minutter, og derefter have de færdige filtre. Der bliver altså automatisk afspillet, optaget, lavet impuls-response, lavet filtre via DRC og til sidst konverteret fra PCM til .wav som blandt andet skal bruges ved foobar og convolver.
Alternativt kan man bruge de små programmer der følger med DRC til først at lave sweeps, optage vha eksternt program, og derefter lade resten blive gjort automatisk. Det står i bunden af batch-filen.
I første omgang smider jeg det bare op som det er, men hvis nogle rent faktisk bruger det skal jeg gerne skrive lidt mere detaljeret om opsætningen osv.
Det er holdt i engelsk, men mon ikke det går

Af programmer er der brugt:
rec_imp (Downloades fra DRC wiki)
DRC
Eventuelt:
glsweep (følger med DRC)
lsconv (følger med DRC)
SOX
For at lave lidt delay har jeg snydt og brugt en lille exe-fil - det var dejlig nemt

- og her er koden/kommandoerne der er brugt:
EDIT: Jeg har opdateret en del i "koden" så alle værdier osv. meget nemt kan ændres i starten eller bliver forklaret i løbet af processen. Smid en PM - så sender jeg nyeste version.(Forældet script)
:Define home-directory:
:----------------------------------------------------------- --------------
Set HOME=C:\DRC
:If you wanna use the rec_imp program just leave it as it is. If you prefere to create a sin sweep :and record it with another program, please see the buttom for commands to glsweep and lsconv.
Pause - Hit a random buttom and (if you want) get out of the room. The sweep will be played in 20 seconds.
sleep 20 seconds - Protect your ears and keep the environment as quiet as possible. Recording right channel.
: Rec_imp
:----------------------------------------------------------- ---------------
%HOME%\rec_imp\rec_imp %HOME%\Output\Impulse\RightSpeakerImpulseResponse.pcm 44100 10 21000 45 1:1 1:1
sleep 2 seconds - Now recording sin sweep from left channel
%HOME%\rec_imp\rec_imp %HOME%\Output\Impulse\LeftSpeakerImpulseResponse.pcm 44100 10 21000 45 0:1 1:1
pause The impulse responses has now been created, and we will go on to DRC
:----------------------------------------------------------- -----------------
cd %HOME%
cd drc
cd project
: DRC processing
:----------------------------------------------------------- ---------------
:DRC processing left channel
drc.exe --BCInFile=%HOME%\Output\Impulse\LeftSpeakerImpulseResponse. pcm --PSOutFile=%HOME%\Output\FiltersFromDrc\LeftSpeaker.pcm --RTStartFreq=10 --BCDLEndFreq=21000 Normal.drc
pause Left channel has been processed.
:DRC processing right channel
drc.exe --BCInFile=%HOME%\Output\Impulse\RightSpeakerImpulseResponse .pcm --PSOutFile=%HOME%\Output\FiltersFromDrc\RightSpeaker.pcm --RTStartFreq=10 --BCDLEndFreq=21000 Normal.drc
Pause DRC has now done its job! In case you need the .pcm files to be converted you can continue to let SOX convert the files. The pcm-files is placed in output\FiltersFromDRC
:Her er filtrene allerede dannet. Det nedenstående er kun hvis fil-formatet skal ændres, :eller (i bunden) hvis man vil bruge glsweep og lsconv i stedet for rec_imp.
: In case the 2 .pcm files needs to be converted to a stereo .wav file the following script can be used with SOX
:----------------------------------------------------------- ----------------
: -s Allow slack overlapping of DFT windows. This can, in some cases, increase image sharpness and give greater adherence to the -x value, but at the expense of a little spectral loss.
: -f4 IEEE
: - s1, s2, s3, and s4 indicate 1, 2, 3, and 4-byte signed integer PCM respectively
: http://www.tarind.com/brutefir_drc.html
:Converts right filter to .wav
%HOME%\SOX\sox -t raw -r 44100 -c 1 -f4 %HOME%\Output\FiltersFromDrc\RightSpeaker.pcm -t wav -c 1 -s2 %HOME%\Output\SoxOutput\Monowave\rightspeaker.wav
:Converts left filter to .wav
%HOME%\SOX\sox -t raw -r 44100 -c 1 -f4 %HOME%\Output\FiltersFromDrc\LeftSpeaker.pcm -t wav -c 1 -s2 %HOME%\Output\SoxOutput\Monowave\leftspeaker.wav
:Combine right and left .wav (filter) to a stereo .wav file containing the right and left ouput filter in a stereo .wav format
%HOME%\SOX\sox -M %HOME%\Output\SoxOutput\Monowave\leftspeaker.wav %HOME%\Output\SoxOutput\Monowave\rightspeaker.wav %HOME%\Output\SoxOutput\stereo.wav
pause - And that should be about it. Now check the filter in output\SoxOutput\stereo.wav
------------------------------------------------------------ ------------------
In case you wanna use glsweep and lsconv: Create the log sweep using glsweep (Included in the DRC download - see under sample)
------------------------------------------------------------ --------------
:usage (Taken from the DRC help file) Usage: glsweep rate amplitude hzstart hzend duration silence leadin leadout sweepfile inversefile
:Parameters:
: sweepfile: sweep file name
: inversefile: inverse sweep file name
: outfile: output impulse response file
: refsweep: reference channel sweep file name
: mingain: min gain for reference channel inversion
: dlstart: dip limiting start for reference channel inversion
: The generated log sweep is the one that needs to be played and recorded - you can use any programs, but preferable a program that's able to handle
:32 bit floating point .pcm files to avoid converting from .pcm to .wav and the other way around afterwards.
: The inverse sweep will be used later with LSConv to generate the impulse-response
: A good idea is to make a soundcard loop aswell to compensate for the soundcards artifacts. The LSConv is able to handle that aswell
:cd %HOME%
:cd generateSweep
:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:- :-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-
:%HOME%\GenerateSweep\glsweep 44100 0.8 10 21000 45 2 0.05 0.005 %HOME%\Output\sweep\sweep.pcm %HOME%\Output\sweep\inverse.pcm
:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:- :-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-
:pause Now Rec sweep. play: "sweep.pcm" Save as "RecSweepLeft" and "RecSweepRight". Save ref channel as "refchannel.pcm"
:Now here is the part where you actually have to do something if you are using glsweep and lsconv. Play the sweep and record it (if you want to compoensate for the soundcard remember the loopback recording)
:----------------------------------------------------------- ---------------
:Normally I would recommend Audacity, but due to the fact that it doesn't support ASIO in the versions you can download (you have to compile it yourself if you want ASIO support), I would recommend another program
:to perform the task.
:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:- :-:-:-:-:-
:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:- :-:-:-:-:-
:-:
:-: File to play: %HOME%\output\sweep\sweep.pcm
:-: Save Left rec: %HOME%\output\sweep\RecSweepLeft.pcm
:-: Save Right rec: %HOME%\output\sweep\RecSweepRight.pcm
:-: Save loopback rec: %HOME%\output\sweep\refchannel.pcm
:-: :-:-
:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:- :-:-:-:-:-
:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:- :-:-:-:-:-
: Processing the recorded sin sweep and inverse sin sweep to make the impulse-response using LSConv
:----------------------------------------------------------- ---------------
:usage (Taken form the DRC help file) Usage: LSConv sweepfile inversefile outfile [refsweep mingain [dlstart]]
:Parameters:
: sweepfile: sweep file name
: inversefile: inverse sweep file name
: outfile: output impulse response file
: refsweep: reference channel sweep file name
: mingain: min gain for reference channel inversion
: dlstart: dip limiting start for reference channel inversion
: Processing Left channel
:%HOME%\generateSweep\LSConv %HOME%\Output\sweep\RecSweepLeft.pcm %HOME%\Output\sweep\inverse.pcm %HOME%\Output\sweep\impulseLeft.pcm %HOME%\Output\sweep\refchannel.pcm
:Processing Right channel
:%HOME%\generateSweep\LSConv %HOME%\Output\sweep\RecSweepRight.pcm %HOME%\Output\sweep\inverse.pcm %HOME%\Output\sweep\impulseRight.pcm %HOME%\Output\sweep\refchannel.pcm
:pause The impulse respond has now been created and DRC can calculate the filters. Please see .bat file or DRC config file in order to make changes.
: Open the folder where DRC is placed
:----------------------------------------------------------- ---------------
__________________
Dennisfrie.dk