Contenuto principale

Measure and Manage Impulse Responses

In this tutorial, explore key functionality of the Impulse Response Measurer. The Impulse Response Measurer app enables you to:

  • Configure your audio I/O system.

  • Acquire impulse response (IR) measurements using either the exponential swept sine (ESS) or maximum-length-sequence (MLS) methods.

  • View and manage captured IR data.

  • Export the data to a file, workspace, or other app for further study.

  • Generate a script that performs IR measurements according to the current settings.

To begin, open the Impulse Response Measurer app by selecting the Impulse Response Measurer icon from the app gallery.

Configure Audio I/O System

The Impulse Response Measurer app enables you to select an audio driver, choose different devices for playback and recording (when sample rates are compatible) and their channels, and specify the sample rate and samples per frame. The devices, which can be real or virtual, must use a supported driver. Supported drivers are platform-specific:

  • Windows® –– ASIO™, DirectSound, and WASAPI. To open the settings panel for the ASIO driver, click the ASIO Settings button.

  • Mac –– CoreAudio

  • Linux® –– ALSA

Valid values for sample rate and number of samples per frame depend on your specified audio devices.

You can use the level monitor to verify the configuration of your audio I/O system.

Loopback Cable for Latency Measurement

To measure the system latency and remove it from captured measurements, you must use a loopback cable to connect one of the player device channels directly to one of the recorder device channels.

Diagram showing a cable connecting the audio-in and audio-out ports of a sound card.

To enable latency measurement and removal, click the Latency Compensation drop-down list, select Loopback Measurement, and then set the Loopback Channels to the player and recorder channels that are connected by the loopback cable.

This example sets Latency Compensation to None, so it does not measure the audio I/O system latency.

Configure IR Acquisition Method

To configure your IR acquisition method, use the Method and Method Settings sections of the toolstrip.

Close-up view of toolstrip. Method section is on the left. Method Settings section is on the right.

You can select the method to acquire IR measurements as either:

  • Maximum Length Sequences (MLS)

  • Exponential Swept Sine (Swept Sine)

Both methods for IR acquisition have the same basic settings, including:

  • Number of Runs –– Number of times the excitation signal is sent within a single capture. Multiple runs are used to average individual impulse response captures to reduce measurement noise.

  • Duration per Run (s) –– Total time of each run in seconds.

  • Excitation Level (dBFS) –– The level of the excitation signal in dBFS.

Both methods for IR acquisition also have the same advanced run settings, including:

  • Wait before first run –– Delay before starting the first run. The delay allows time for any last-minute tasks, such as exiting a room before testing its acoustics.

  • Pause between runs –– Duration of the pause between runs. During a pause, the excitation signal is not sent, and audio is not recorded. When using the Swept Sine method, include a pause between runs to avoid buildup of reverberations. Pause between runs is always zero for the MLS method.

  • Number of warmup runs –– Number of times to output the excitation signal before acquisition. The MLS method assumes the signal it acquires is a combination of the excitation signal and its impulse response.

The total capture time is a sum of run durations, pauses, and the initial wait.

Order of events that occur during total capture time. First are the warm-up runs. These are followed by the acquisition runs.

The Swept Sine method has additional Advanced Settings to control the excitation signal, including:

  • Sweep start frequency

  • Sweep stop frequency

  • Sweep duration

  • End silence duration

When using the Swept Sine method, the Run Duration is divided into Sweep duration and End silence duration. During the end silence, the app continues to record audio, enabling acquisition of the response over the entire range of the frequency sweep.

You can automatically save device, method, and advanced settings and use them in future measurement sessions.

Acquire IR Measurements

For this example, use the Swept Sine method with default settings. Once you have your audio I/O system set up, click Capture. A dialog box opens that displays the progress of your capture. Capture IR measurements twice.

View of the app after two capture measurements. Captured data and captured data information panels are on the left. On the right, the impulse responses are plotted in the upper panel and the magnitude responses are plotted in the lower panel.

Analyze and Manage IR Measurements

After the capture, the Impulse Response Measurer app stores the captured data locally. The Captured Data panel displays the title of the captured data, the colors used for plotting, and information about the settings used to acquire the data. You can double-click the color to choose which color you want associated with each impulse response. You can also double-click the title to rename your captured data. Rename your captures as FirstCapture and SecondCapture, and change the colors to pink and green. To make one impulse response plot appear on top of the other, select the title under Captured Data. Select the capture you relabeled FirstCapture.

View of the app after changing the names of the captures and their colors. The new names appear in the captured data panel. The new colors are used in the plots.

By default, the impulse response and magnitude response are plotted. You can view any combination of the impulse, magnitude, and phase response using the Display button. Here you can also remove the measured audio device latency from the plotted impulse response and phase response.

Display menu in the app toolstrip

Minimize Captured Data and Captured Data Information, then select the Phase Response.

View of the app after minimizing the captured data and captured data information panels. The impulse response plot is on the left. On the right, the magnitude response plot is in the upper panel, and phase response plots is in the lower panel.

You can toggle the relative size of the plot by moving the dividers. You can zoom in and out or toggle between linear and logarithmic frequency axes by selecting the icons that appear when your pointer is over the plot. Updating either the magnitude response or the phase response updates the other. Zoom in on the impulse response plot and in the range 0–20 Hz of your frequency response plots. Zooming in, you can see the small delay between FirstCapture and SecondCapture. When the zoom level is high enough, line markers automatically appear.

View of the app, after zooming in on the impulse, magnitude, and phase response plots.

Export IR Measurements

To view export options for further analysis or use, click Export.

Export menu in the toolstrip. You can export data to your workspace or files. You can also view the data in the apps Filter Visualizer and Signal Analyzer.

Export the data to your workspace. The data is saved as a table. To inspect how the data is saved, display the table you exported.

irdata_160957
irdata_142733 =

  2×19 table

                             TimeOfCapture             ImpulseResponse    Driver          Player                Recorder          SampleRate    SamplesPerFrame    PlayerChannels    RecorderChannel       Method       NumRuns    DurationPerRun    ExcitationLevel    RawAudioData    SamplesDropped    DeviceLatencyInSamples    OtherMetaData    MagnitudeResponse    PhaseResponse
                     ______________________________    _______________    ______    ___________________    ___________________    __________    _______________    ______________    _______________    ____________    _______    ______________    _______________    ____________    ______________    ______________________    _____________    _________________    _____________

    FirstCapture     03-Feb-2026 14:04:59 UTC-05:00      1×1 struct       "ASIO"    "ASIO MADIface USB"    "ASIO MADIface USB"      44100           "auto"             {[3]}                3           "Swept Sine"       1             10                -6            1×1 struct           0                    NaN               1×1 struct         1×1 struct         1×1 struct  
    SecondCapture    03-Feb-2026 14:20:07 UTC-05:00      1×1 struct       "ASIO"    "ASIO MADIface USB"    "ASIO MADIface USB"      44100           "auto"             {[3]}                3           "Swept Sine"       1             10                -6            1×1 struct           0                    NaN               1×1 struct         1×1 struct         1×1 struct  

When you export the data as a MAT-file, the same table is saved as when you export to the workspace. When you select to export the data as a WAV file, each impulse response is saved as a separate WAV file. The title of the capture is the name of the WAV file. In this example, selecting to export data to audio WAV file places two WAV files in the specified folder, FirstCapture.wav and SecondCapture.wav.

To analyze your captured data further, view the data in Signal Analyzer.

Generate MATLAB Code

You can generate MATLAB® code that measures impulse responses using the current settings of the app. To open an untitled script in the MATLAB editor containing the code, click Generate Script in the Export section of the toolstrip.

View of generated script. Variables defined in the script are based on the current app settings.

Run the script to measure the impulse response and store the captured data in the capture structure.

capture
capture = 

  struct with fields:

      ImpulseResponse: [1×1 struct]
    MagnitudeResponse: [1×1 struct]
        PhaseResponse: [1×1 struct]

The script optionally plots the impulse, magnitude, and phase response according to the Display settings in the app.

Figure containing three axes object. The figure title is Impulse Response Measurement. On the left is the axes object with the title Impulse Response. On the upper right is an axes object with the title Magnitude Response. On the lower right is an axes objects with the title Phase Response.

You can examine the generated code to understand how the app performs the measurement, and you can edit the script for customization.

See Also

| | | |

Topics