Recording Impulse Responses for Speaker Virtualization
Jun 11, 2020 at 4:45 AM Post #331 of 1,816
I have bougth a simple measure mic and want to start with room measurements. I want to compensate some mesurements using only a single center channel for the complete measurement. First try is just to put the mic at the center postion of my head.

After reading the instructions I'm asking if there is a special command and sweep for the room measurement in impulcifer? Should I use "sweep-seg-FL-mono-6.15s-48000Hz-32bit-2.93Hz-24000Hz" and rename the output to "room.wav" ? In the readme there is a average option but how do I do repeated measurements with impulcifer? Is there a command option that repeats the sweep several times?

If I don't choose any speaker target is then equalized to a flat response?
 
Jun 12, 2020 at 3:03 AM Post #332 of 1,816
I don't believe there is multiple room measurements available - I guess if you're not going to be able to accurately place it to where your L/R ears were a spatial averaging makes sense. Jaakko will be able to tell if that's a good idea in a headphone context.

I believe Impulcifer keeps the native room response if no target is supplied.

My own notes on how to run measurements:

Yep - in your case you'd rename to room.

For anyone doing it on the left and right ears with proper surround setups I've saved these commands for my own setup.

Default device to headphones
python recorder.py --play="data/sweep-seg-FL,FR-stereo-6.15s-48000Hz-32bit-2.93Hz-24000Hz.wav" --record="data/my_hrir/headphones-AurvanaSE.wav"

Default device to AVR - binural recording
python recorder.py --play="data/sweep-seg-FL,FC,FR,SR,BR,BL,SL-7.1-6.15s-48000Hz-32bit-2.93Hz-24000Hz.wav" --record="data/my_hrir/FL,FC,FR,SR,BR,BL,SL.wav"

Default device to AVR - UMIK-1 recording
python recorder.py --channels=1 --play="data/sweep-seg-FL,FC,FR,SR,BR,BL,SL-7.1-6.15s-48000Hz-32bit-2.93Hz-24000Hz.wav" --record="data/my_hrir/room-FL,FC,FR,SR,BR,BL,SL-left.wav"
python recorder.py --channels=1 --play="data/sweep-seg-FL,FC,FR,SR,BR,BL,SL-7.1-6.15s-48000Hz-32bit-2.93Hz-24000Hz.wav" --record="data/my_hrir/room-FL,FC,FR,SR,BR,BL,SL-right.wav"
 
Last edited:
Jun 12, 2020 at 5:41 AM Post #333 of 1,816
I can place the mic to L/R ears but I want to compare the results with the central placement. As I use only one speaker I have to place the mic 14 times for the measurements and I have to estimate the position which resutls in a misplacement of 1-2cm. We are talking about 10-12cm difference to the cnetral position and I hope that thisdoes not have such a huge impact when using only one speaker for the measurement.
 
Jun 13, 2020 at 4:34 AM Post #334 of 1,816
I have bougth a simple measure mic and want to start with room measurements. I want to compensate some mesurements using only a single center channel for the complete measurement. First try is just to put the mic at the center postion of my head.

After reading the instructions I'm asking if there is a special command and sweep for the room measurement in impulcifer? Should I use "sweep-seg-FL-mono-6.15s-48000Hz-32bit-2.93Hz-24000Hz" and rename the output to "room.wav" ? In the readme there is a average option but how do I do repeated measurements with impulcifer? Is there a command option that repeats the sweep several times?

If I don't choose any speaker target is then equalized to a flat response?
You can do multiple room measurements and save them all to a same file called room.wav:
Code:
python recorder.py --play="data/sweep-seg-FL,FR-stereo-6.15s-48000Hz-32bit-2.93Hz-24000Hz.wav" --record="data/my_hrir/room-FL,FR-left.wav" --input_device="Umik-1" --channels=1 --append
The --append parameter adds a new track to an existing file so you can repeat this same command as many times as you like.

This assumes you want to use speaker which is connected to front left terminal in the amplifier. If you intend to use speaker connected to a center channel terminal, you need to generate a new sweep sequence with impulse response estimator:
Code:
python impulse_response_estimator.py --dir_path="data" --fs=48000 --speakers="FC" --tracks="7.1"

See
Code:
python recorder.py --help
and
Code:
python impulse_response_estimator.py --help
for more details.
 
Jun 13, 2020 at 2:49 PM Post #335 of 1,816
Ok, I have 14 single files in the following format in the folder (room-BL-left,room-BL-right,room-FC-left,.....). Are all files processed for the room correction when I use
following code?
Code:
python impulcifer.py --test_signal="data/sweep-6.15s-48000Hz-32bit-2.93Hz-24000Hz.pkl"  --fr_combination_method=conservative --room_target="data/harman-in-room-loudspeaker-target.csv" --specific_limit=9000 --generic_limit=2000 --channel_balance=trend --dir_path="data/my_hrir"

I hear only a very small difference when I use the code with a single file "room.wav. " I'm wondering if I'm doing something wrong even though it sounds ok?
 
Jun 14, 2020 at 2:44 AM Post #336 of 1,816
Ok, I have 14 single files in the following format in the folder (room-BL-left,room-BL-right,room-FC-left,.....). Are all files processed for the room correction when I use
following code?
Code:
python impulcifer.py --test_signal="data/sweep-6.15s-48000Hz-32bit-2.93Hz-24000Hz.pkl"  --fr_combination_method=conservative --room_target="data/harman-in-room-loudspeaker-target.csv" --specific_limit=9000 --generic_limit=2000 --channel_balance=trend --dir_path="data/my_hrir"

I hear only a very small difference when I use the code with a single file "room.wav. " I'm wondering if I'm doing something wrong even though it sounds ok?
With those files you get separate room correction for each speaker-ear pair and the room.wav does nothing. When you use room.wav instead and have no other room measurement files available, all the frequency responses from room.wav will be combined. There are two combination methods: conservative and average. Conservative only changes the frequencies where all of the frequency responses are on the same side of zero plane and for these it selects the smallest value. This way the conservative correction can never make any additional problems but often results in minor corrections. Correction with room.wav is only effective up to the specified generic limit, which in your case was 2000 Hz. You could try to change the combination method to average and see if that does bigger changes. And of course all depends on the actual room response and how much that changes with listening position. It could be that your room response is not very sensitive to small position changes and so the difference between specific and generic room corrections is small. Or perhaps you're not very sensitive to small frequency response differences.
 
Jun 14, 2020 at 6:08 AM Post #337 of 1,816
And of course all depends on the actual room response and how much that changes with listening position. It could be that your room response is not very sensitive to small position changes and so the difference between specific and generic room corrections is small. Or perhaps you're not very sensitive to small frequency response differences.

I increased the generic limit to 9000Hz but still the the difference is very small. When I look at the room plots they look all very similar.
I guess the reason is that I use only one loudspeaker in center position and that I moved this speaker from the wall into the room for the measurement.
However, the room correction improved the already great results. Your programm is absolut fantastic!
 
Jun 21, 2020 at 9:38 AM Post #338 of 1,816
This week I messed around with my Audssey XT32 room correction on my AVR. I figured out how to basically shoot for a Harman in room target/slope and achieved decent results from measurement and by ear.

So I ran another Impulcifer recording to take advantage of that - this time with no virtual room correction. I just didn't want to faf around with the UMIK 1 mic placement and I figured I'd already done it on my real system. I used the DT990's. After it generated I A vs B'd the real speakers and this is the most convincing realistic one I've done to date. Not messing with the room correction means the frequency response is identical as it can be in the room. But it was crazy how realistic is is.

So for all the headaches of figuring out headphone compensation and how it's really difficult at high frequencies - for me the method just works.

Still amazed by this tool - wish Dolby/DTS would open up their decoding to windows so it's channel based so I could incorporate those.

Edit: I should say the glued ear plugs on the mics has resulted in perfect channel balance with no need to use any of the methods to correct.
 
Last edited:
Jun 22, 2020 at 8:09 AM Post #339 of 1,816
This week I messed around with my Audssey XT32 room correction on my AVR. I figured out how to basically shoot for a Harman in room target/slope and achieved decent results from measurement and by ear.

So I ran another Impulcifer recording to take advantage of that - this time with no virtual room correction. I just didn't want to faf around with the UMIK 1 mic placement and I figured I'd already done it on my real system. I used the DT990's. After it generated I A vs B'd the real speakers and this is the most convincing realistic one I've done to date. Not messing with the room correction means the frequency response is identical as it can be in the room. But it was crazy how realistic is is.

So for all the headaches of figuring out headphone compensation and how it's really difficult at high frequencies - for me the method just works.

Still amazed by this tool - wish Dolby/DTS would open up their decoding to windows so it's channel based so I could incorporate those.

Edit: I should say the glued ear plugs on the mics has resulted in perfect channel balance with no need to use any of the methods to correct.
I've been wondering how Dolby / DTS work / don't work on Windows myself. Can you share your experience?
 
HiBy Stay updated on HiBy at their facebook, website or email (icons below). Stay updated on HiBy at their sponsor profile on Head-Fi.
 
https://www.facebook.com/hibycom https://store.hiby.com/ service@hiby.com
Jun 22, 2020 at 8:35 AM Post #340 of 1,816
All Dolby/DTS codecs work fine in Windows via LAV Decoder, or even natively with Windows 10 now. LAV can passthrough Atmos/DTS:X to an AVR no problem.

Any regular Dolby/DTS also decodes to channels in Windows - so it'll decode to 5.1 or 7.1 if you have an analogue output soundcard or virtual device like with us using HeSuVi with Impulcifer. However, it doesn't decode DTS:X or Atmos's height channels. Windows only has a maximum of 7.1 channels. It does support DTS:X and Atmos via Headphones though with both Dolby and DTS Headphone X. However, the generic HRTF pales in comparison to what Impulcifer can generate.
 
Jun 22, 2020 at 3:57 PM Post #342 of 1,816
Yep - anything played with regular filters and direct show/LAV/MPC won't pass through Atmos.

Has to be using the Windows 10 Films and TV app.

THX recently bought out their headphone surround - it's limited to 7.1 too.
 
Jun 25, 2020 at 2:07 AM Post #343 of 1,816
There's a very good video with an acoustic tech here on room correction:

Headphones take away a lot of the problems with room correction because we are always in the same space. But what I found interesting was that the calibrations for the mic's we're using aren't accurate in the high treble at all. 90 degrees means it attenuates the treble heavily so full range correction, even on Impulcifer is probably not what we should shoot for. The alternative is to point the mic at each speaker. Well worth a watch if you're into any of this.
 
Jun 25, 2020 at 1:30 PM Post #344 of 1,816
But what I found interesting was that the calibrations for the mic's we're using aren't accurate in the high treble at all. 90 degrees means it attenuates the treble heavily so full range correction, even on Impulcifer is probably not what we should shoot for.

Here is a german article which shows some measurements for three measure mics under different angles.

In the graphs you can see the changes due to the angle. Cheap mics like the Behringer EMC800 don't provide any calibration file for 0° or 90°. The mic specs say that they are free field equalized but the the same guy from the article showed that they are more close to diffuse field equalization and provide best results at approx. 60 degree! So using those mics at 0° will result in wrong results for high frequencies. But when you know these drawbacks the cheap mics are very close to profesional measurement mics.
 
Last edited:

Users who are viewing this thread

Back
Top