Filter Hose is a unique FIR (finite impulse response) filter creator software written and maintained by 3rd party developer HXAudio Lab. It enables the user to edit time domain data to construct an FIR filter very quickly, and allows them to experiment with different filter properties (tap length, windowing, latency, etc) very easily. To speed up the FIR creation, Filter Hose provides several frequency domain target responses.
This tutorial will provide a walk-through of filter creation using Filter Hose to linearize a loudspeaker frequency and phase response. Data will be exported to MiniDSP OpenDRC.
NOTE: Being a 3rd party software, all support questions should be asked directly to HXAudio lab or in the subsection of the miniDSP forum.
Also note a great app note is available here on the topic of "A meaninful loudspeaker phase response".
Although a loudspeaker can be measured in-situ, the impulse response will contain room reflections. This measurement can be used to create room correction filter. For venue/room tuning, average frequency responses at different audience areas are commonly used (no valid phase information), hence we can use Filter Hose to provide a room correction filter using averaged frequency response or power response curve. Filter Hose also provides advance manual input to accommodate different kinds of frequency domain data (i.e frequency, magnitude, with/without phase), including accepting RTA data.
Ground plane measurement
Although on a lot of occasions FIR is generated to do room correction, it is recommended to create FIR for loudspeaker corrections only and perform proper acoustical treatments. The user may also be interested in experimenting with FIR creation for loudspeaker systems measured in the room/venue vs FIR that corrects the loudspeaker only. Let us discuss several measurement techniques to create loudspeaker corrections (with minimum room influence).
To do a proper loudspeaker correction, a common measurement condition that is simple but effective is an outdoor (or a large room) ground-plane measurement on a reflective surface (such as smooth concrete/asphalt). Please see the pictures below.
Left - Outdoor Ground Plane; Right - Indoor (Warehouse) Ground Plane
Ground plane measurement is one of the most effective ways to minimize room reflections or ground reflection in the measured impulse response.
Of course a regular way of measuring loudspeakers is to simply use stands as shown below (taken outdoor).
This measurement condition will include a ground reflection. The frequency response usefulness will be limited from the first reflection (usually from floor). The impulse response shown in the photo on the left can be seen below.
Please see the impulse response's energy time curve below (ETC), showing a reflection at 11ms, and direct sound arrival time at 4ms. The usable impulse response length is only 7ms, and the data only valid at 200Hz and up (after windowing out the reflection).
Gating/Windowing Impulse Response
To help clean up the measured impulse response, Filter Hose provided Hann 50% (also known as Tukey 50%) window and multi-zone time window with different length presets. The user can experiment with different types of windowing to clean up the measurement impulse response if it is imported without windowing. Please note that windowing only works when there is measured phase information. Hence this function is not usable for RTA data or averaged frequency response (power response) data.
Preparing Loudspeaker Data in Filter Hose
To create a proper FIR filter in Filter Hose, several steps are necessary. The most important step will be matching the sample rate of the measurement to the hardware/software that implements the FIR filter. If the measured data is taken with different target sample rate, Filter Hose Manual Input Data can perform sample rate conversion.
Preparing the Measured Data
An outdoor free-space measurement is loaded to the Filter Hose. The data contains a ground reflection.
The direct sound arrival is approximately at 3.9ms and reflections can be noted at around 11ms. First, we like to move the impulse response cyclically to the beginning, so the very early energy arrival is located at zero. In this sample, the first impulse response energy arrival comes at 4 samples prior to the peak of the impulse response.
- Press Max to 0. This will put the peak of the impulse response at 0ms.
- Insert a value of 4 (samples) under the manual shift and click the right arrow button. This will cyclically move the impulse 4 samples to the right.
- Select MZTW medium - Set - Yes.
- Click Advance - Smooth Input.
- Click Advance - Smooth Input.
In this example, multi-zone time window medium length is used with two times smoothing (smoothing can be found under the advance menu). The impulse response is now fully prepared and the final result is shown below.
Flat Magnitude and Phase = 0 is selected as target response.
In this example, the magnitude will be flatten from 80Hz to 17000Hz and the phase will be flatten from 250Hz to 35000Hz.
Tips: User is also able to open more than one window of Filter Hose. This can be useful to experiment with different FIR creation for a same input file.
Editing FIR Filter
To create a 512 tap linear FIR filter with 2ms latency, several steps need to be done. First, we need to calculate how many samples are 2ms in a 96000Hz sample rate. This can be done by multiplying the targeted latency with sample rate.
Targeted latency is 2ms, fs is the sample rate which is 96000Hz. The result will be 192 samples.
- Select Hann 50% window. The user can experiment with different windowing to clean up the impulse response's tail of the filter.
- Input a value of 512 in the tap length. This is the targeted FIR tap length.
- Click C. This will center the peak of the FIR filter peak to the middle of 512 total tap, which is at sample 256.
- Because we are targeting 2ms latency (at sample 192), and currently the peak is at 256, we need to cyclically shift the FIR filter 64 sample to the right. Input a value of 64 in shift tap and click right arrow button.
- Click Set.
The FIR filter final result is shown below.
To export the filter, right click on the time domain graph and click Export text (MiniDSP) and Export text (csv).
To correctly see the predicted result, it is recommended that the filter be saved as a csv temporarily.
- Load the original measurement (back to step 1), and use only the multi-time window (medium) to clean up.
- In step 2, select Load from *.csv and select the filter csv file.
- In step 3, select Rectangular window, input a value of 512 in tap length, click C, input a value of 64 and click the right arrow button. Click Set. This should not alter the loaded FIR filter impulse response at all.
- Click step 4, convolve input and filter.
The predicted result is shown in the picture below.
Importing the Filter to MiniDSP OpenDRC Plug-in
Open the exported .txt file using Notepad or Excel or some other similar program. Select all and copy to clipboard (Ctrl-C).
Open MiniDSP OpenDRC, and click on FIR channel to open the FIR filter import window.
Click Manual Mode, and then select all text in the left table and hit delete on the keyboard. This will clear up all coefficients that was previously loaded. Paste the new coefficient from the clipboard.
Click Process to import the FIR filter and Voila!
Do keep us updated of your progress experiences on the forum so you can share with the HXAudiolabs team!