Recording Impulse Responses for Speaker Virtualization

Mar 30, 2022 at 11:45 AM Post #1,051 of 2,022
Ouch, sorry it is not ver clear. My idea was that for measurements with impulcifer, for just 2 speakers in stereo, Hesivu off and window playback in stereo. Playback time : , Hesuvi on, using hesuvi.wav has hrir, and window playback device in ..? 2.0 or 7.1..? Am i wrong ?
 
Mar 30, 2022 at 11:58 AM Post #1,052 of 2,022
Ouch, sorry it is not ver clear. My idea was that for measurements with impulcifer, for just 2 speakers in stereo, Hesivu off and window playback in stereo. Playback time : , Hesuvi on, using hesuvi.wav has hrir, and window playback device in ..? 2.0 or 7.1..? Am i wrong ?
I only use Impulcifer for 2 channel stereo music. I did the measurement setup as you described. For playback I have HeSuVi set for "Stereo". I don't use any Windows multi-channel settings. It works just as it should. You can also freely experiment to see what sounds best for your sources. If you move on to more channels in Impulcifer I'll defer to others.
 
Mar 30, 2022 at 1:44 PM Post #1,053 of 2,022
. If i understand well, even in this case i must use hesuvi, but do i have to set my playback device in stereo in Windows, or 7.1 ? Not very clear for on how hesuvi will work regarding stereo or 7.1 incoming. Thanks

Just to clarify, HESUVI is only a gui for EQ-APO. You can use EQ-APO also without HESUVi. For example you can save code as txt file and load it in EQ-APO. This can look like this:

#Common preamp
Preamp: 0 dB
# L=Left ; R=Right C=Center; SUB=LFE; SL=Left Surround; RL=Right Surround, RL=Rear Left; RR=Rear Right
#Create virtual speaker channels
Copy: L0=L R1=L L1=R R0=R C0=C C1=C SUB0=SUB SUB1=SUB SL0=SL SR1=SL SL1=SR SR0=SR RL0=RL RR1=RL RL1=RR RR0=RR
#Mute Input Channels

Copy: L=0 R=0 C=0 SUB=0 RL=0 RR=0 SL=0 SR=0
#virtual channels that are filtered
Channel: L0 R1 L1 R0 C0 C1 SUB0 SUB1 SL0 SR1 SL1 SR0 RL0 RR1 RL1 RR0

# Channel: LL LR RL RR CL CR LFEL LFER SLL SLR SRL SRR BLL BLR BRL BRR
#Folder of Convolution files complete folder name or if files in config "\...."

Convolution: C:\Program Files\EqualizerAPO\config\conVT\210110-A7-M21-FC3-T500(L-R-C-LFE-LS-RS-LB-RB).wav
#Corrections
Channel: C1
#Preamp: 0 db
Filter 1: ON PK Fc 126.5 Hz Gain -1.30 dB Q 3.523
Channel: R0
Preamp: -1db

#RR->LL
Filter 1: ON PK Fc 71.00 Hz Gain -9.00 dB Q 11.519

Copy: L=L0+L1+C0+2*SUB0+SL0+SL1+RL0+RL1 R=R1+R0+C1+2*SUB1+SR1+SR0+RR1+RR0


This way you can even apply filter settings on every (virtual) channel which is not possible with HESUVI. Also that way it would be possible to use internally more than 7.1 channels.
 
Last edited:
Mar 30, 2022 at 3:30 PM Post #1,054 of 2,022
Just to clarify, HESUVI is only a gui for EQ-APO. You can use EQ-APO also without HESUVi. For example you can save code as txt file and load it in EQ-APO. This can look like this:

#Common preamp
Preamp: 0 dB
# L=Left ; R=Right C=Center; SUB=LFE; SL=Left Surround; RL=Rigth Surround, RL=Rear Left; RR=Rear Right
#Create virtual speaker channels
Copy: L0=L R1=L L1=R R0=R C0=C C1=C SUB0=SUB SUB1=SUB SL0=SL SR1=SL SL1=SR SR0=SR RL0=RL RR1=RL RL1=RR RR0=RR
#Mute Input Channels

Copy: L=0 R=0 C=0 SUB=0 RL=0 RR=0 SL=0 SR=0
#virtual channels that are filtered
Channel: L0 R1 L1 R0 C0 C1 SUB0 SUB1 SL0 SR1 SL1 SR0 RL0 RR1 RL1 RR0

# Channel: LL LR RL RR CL CR LFEL LFER SLL SLR SRL SRR BLL BLR BRL BRR
#Folder of Convolution files complete folder name or if files in config "\...."

Convolution: C:\Program Files\EqualizerAPO\config\conVT\210110-A7-M21-FC3-T500(L-R-C-LFE-LS-RS-LB-RB).wav
#Corrections
Channel: C1
#Preamp: 0 db
Filter 1: ON PK Fc 126.5 Hz Gain -1.30 dB Q 3.523
Channel: R0
Preamp: -1db

#RR->LL
Filter 1: ON PK Fc 71.00 Hz Gain -9.00 dB Q 11.519

Copy: L=L0+L1+C0+2*SUB0+SL0+SL1+RL0+RL1 R=R1+R0+C1+2*SUB1+SR1+SR0+RR1+RR0


This way you can even apply filter settings on every (virtual) channel which is not possible with HESUVI. Also that way it would be possible to use internally more than 7.1 channels.
So does is it better to use the measured hrir this way rather than using hesuvi? Also where do I find my file with this text to copy over?
 
Last edited:
Mar 30, 2022 at 3:53 PM Post #1,055 of 2,022
Hi guys, sorry for the newbie question, but at first i will concentrate on simulating my stereo speakers on the headphone (will see for 7.1 later). If i understand well, even in this case i must use hesuvi, but do i have to set my playback device in stereo in Windows, or 7.1 ? Not very clear for on how hesuvi will work regarding stereo or 7.1 incoming. Thanks
follow this guide here https://sourceforge.net/p/hesuvi/discussion/general/thread/ce7c354dd7/

it's the easiest way to get 7.1 working with hesuvi, you can also follow the pictures below
 
Mar 30, 2022 at 5:30 PM Post #1,056 of 2,022
@musicreo: By rewriting/extending that script (if I can call it that) would it be possible to facilitate multiple users each with their own independent virtualization? I mean, use for example output channels L+R for user 1, output channels LB+RB for user 2, and output channels LS+RS for user 3. And connect three headphone amps to those different output pairs.
 
Mar 30, 2022 at 7:09 PM Post #1,057 of 2,022
@musicreo: By rewriting/extending that script (if I can call it that) would it be possible to facilitate multiple users each with their own independent virtualization? I mean, use for example output channels L+R for user 1, output channels LB+RB for user 2, and output channels LS+RS for user 3. And connect three headphone amps to those different output pairs.

For EQ-APO it should be possible. But I think you would need a device that splits the 5.1 or 7.1 output from EQ-APO to three or 4 headphone amplifiers.
 
Mar 31, 2022 at 3:45 AM Post #1,060 of 2,022
I didn't know how to use that text, I figured it out. When I applied it and turned off hesuvi the sound wasn't right was somewhat quieter. Could hear the surround but the front channel was muted.
Oh now I understand. The above example script is not using "hesuvi.wav" files as I don't like the strange channel order. Best is to convert the "hesuvi.wav" to the "normal" channel configuration. A very simple python script that does this is:

import soundfile as sf

folder='C:/Users/pythondata/'
file='hesuvitestfile.wav'
path=folder+file
audiodata,samplerate = sf.read(path)

#hesuvi to normal LS/LB sometimes have to be changed depending on software
newaudiodata=audiodata[:,[0, 1, 8, 7, 6, 13, 6, 13, 2, 3, 10, 9, 4, 5, 12, 11 ]]

#normal to hesuvi
#newaudiodata=audiodata[:,[0, 1, 8, 9, 12, 13, 4, 3, 2, 11, 10, 15, 14, 5 ]]

sf.write('new_file(L-R-C-LFE-LS-RS-LB-RB).wav', newaudiodata, samplerate,'PCM_32')

#[L-l L-r LS-l LS-r LB-l Lb-r C-l R-r R-l RS-r RS-l RB-r RB-l C-r ]%Hesuvi
#[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
#[L-l L-r R-l R-r C-l C-r S-l S-r LS-l LS-r Rs-l Rs-r LB-l Lb-r RB-l RB-r ]%normal



Also I have no idea how the filters work anyway I can import yours to try out?
You should look in the EQ-APO wiki.

You can find my file here:
https://1drv.ms/u/s!AnbO8YLUAW6JjgqUDP9SoWcyP3Qn?e=ofqS19
 
Mar 31, 2022 at 4:29 AM Post #1,061 of 2,022
Oh now I understand. The above example script is not using "hesuvi.wav" files as I don't like the strange channel order. Best is to convert the "hesuvi.wav" to the "normal" channel configuration. A very simple python script that does this is:

import soundfile as sf

folder='C:/Users/pythondata/'
file='hesuvitestfile.wav'
path=folder+file
audiodata,samplerate = sf.read(path)

#hesuvi to normal LS/LB sometimes have to be changed depending on software
newaudiodata=audiodata[:,[0, 1, 8, 7, 6, 13, 6, 13, 2, 3, 10, 9, 4, 5, 12, 11 ]]

#normal to hesuvi
#newaudiodata=audiodata[:,[0, 1, 8, 9, 12, 13, 4, 3, 2, 11, 10, 15, 14, 5 ]]

sf.write('new_file(L-R-C-LFE-LS-RS-LB-RB).wav', newaudiodata, samplerate,'PCM_32')

#[L-l L-r LS-l LS-r LB-l Lb-r C-l R-r R-l RS-r RS-l RB-r RB-l C-r ]%Hesuvi
#[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
#[L-l L-r R-l R-r C-l C-r S-l S-r LS-l LS-r Rs-l Rs-r LB-l Lb-r RB-l RB-r ]%normal




You should look in the EQ-APO wiki.

You can find my file here:
https://1drv.ms/u/s!AnbO8YLUAW6JjgqUDP9SoWcyP3Qn?e=ofqS19
Thanks buddy I’ll give this a try tonight.
 
Mar 31, 2022 at 1:55 PM Post #1,063 of 2,022
can i ask a question? why should you apply filters to the channels? i'm curious on what kind of filters you're using and why
I do some equalizing for channel balance correction. The reason for that you find in post #960. I could merge the equalizing into the wav file now but for testing it was really helpful to have the option to change filters on the fly.
 
Mar 31, 2022 at 3:22 PM Post #1,064 of 2,022
Oh now I understand. The above example script is not using "hesuvi.wav" files as I don't like the strange channel order. Best is to convert the "hesuvi.wav" to the "normal" channel configuration. A very simple python script that does this is:

import soundfile as sf

folder='C:/Users/pythondata/'
file='hesuvitestfile.wav'
path=folder+file
audiodata,samplerate = sf.read(path)

#hesuvi to normal LS/LB sometimes have to be changed depending on software
newaudiodata=audiodata[:,[0, 1, 8, 7, 6, 13, 6, 13, 2, 3, 10, 9, 4, 5, 12, 11 ]]

#normal to hesuvi
#newaudiodata=audiodata[:,[0, 1, 8, 9, 12, 13, 4, 3, 2, 11, 10, 15, 14, 5 ]]

sf.write('new_file(L-R-C-LFE-LS-RS-LB-RB).wav', newaudiodata, samplerate,'PCM_32')

#[L-l L-r LS-l LS-r LB-l Lb-r C-l R-r R-l RS-r RS-l RB-r RB-l C-r ]%Hesuvi
#[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
#[L-l L-r R-l R-r C-l C-r S-l S-r LS-l LS-r Rs-l Rs-r LB-l Lb-r RB-l RB-r ]%normal




You should look in the EQ-APO wiki.

You can find my file here:
https://1drv.ms/u/s!AnbO8YLUAW6JjgqUDP9SoWcyP3Qn?e=ofqS19
I've tried running this script but I get an error

Python 3.10.4 (tags/v3.10.4:9d38120, Mar 23 2022, 23:13:41) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import soundfile as sf
>>>
>>> folder='C:/Users/pythondata/'
>>> file='hesuvitestfile.wav'
>>> path=folder+file
>>> audiodata,samplerate = sf.read(path)
>>>
>>> #hesuvi to normal LS/LB sometimes have to be changed depending on software
>>> newaudiodata=audiodata[:,[0, 1, 8, 7, 6, 13, 6, 13, 2, 3, 10, 9, 4, 5, 12, 11 ]]
>>>
>>> #normal to hesuvi
>>> #newaudiodata=audiodata[:,[0, 1, 8, 9, 12, 13, 4, 3, 2, 11, 10, 15, 14, 5 ]]
>>>
>>> sf.write('new_file(L-R-C-LFE-LS-RS-LB-RB).wav', newaudiodata, samplerate,'PCM_32')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\morgi\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\soundfile.py", line 314, in write
with SoundFile(file, 'w', samplerate, channels,
File "C:\Users\morgi\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\soundfile.py", line 629, in __init__
self._file = self._open(file, mode_int, closefd)
File "C:\Users\morgi\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\soundfile.py", line 1183, in _open
_error_check(_snd.sf_error(file_ptr),
File "C:\Users\morgi\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\soundfile.py", line 1357, in _error_check
raise RuntimeError(prefix + _ffi.string(err_str).decode('utf-8', 'replace'))
RuntimeError: Error opening 'new_file(L-R-C-LFE-LS-RS-LB-RB).wav': System error.
>>>
>>> #[L-l L-r LS-l LS-r LB-l Lb-r C-l R-r R-l RS-r RS-l RB-r RB-l C-r ]%Hesuvi
>>> #[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
>>> #[L-l L-r R-l R-r C-l C-r S-l S-r LS-l LS-r Rs-l Rs-r LB-l Lb-r RB-l RB-r ]%normal
>>>
 

Users who are viewing this thread

Back
Top