I am working on getting room impulse response(RIR) and the first order reflections of a room. For now I am stuck at getting proper RIR. I followed Joseph's work and implemented on my own.

My setup uses:

  • microphone - mic in webcam (Logitech C920 HD Pro)
  • speaker - usb powered speaker connected to 3.5mm laptop audio port (havit brand with squarish shape)
  • room - almost empty room. dimension about 6.3 x 4.8 m or 250" x 190"
  • audacity - edit audio obtained
  • matlab - plotting of the graphs and doing other stuffs

The image below contains four graphs;

  1. First is the recorded sound by Joseph
  2. Second is the impulse response of a room used by Joseph
  3. Third is the recorded sound by me
  4. Fourth is the impulse response I've gotten.

enter image description here

The impulse in second graph is quite visible as compared to the fourth graph. Here is my question.

  • Why is the impulse in fourth graph (the one I did) not very visible?
  • What causes this to happen?

I suspect it is caused by equipment and room as that is the only difference i can think of.

I wish to listen what you guys would say about this. Feedbacks, guidance and improvements will be very much appreciated.



2 Answers 2


First of al it's a very exciting idea to capture a room's impulse response. Hence congratulations on your challenges. Assuming that you have correctly implemented the software he provided in his page, then the only cause of the differences are; (Note: I can say nothing about his method of computing the RIR. It can be a proper method or not... Only the possible cause of differences you observe I'll discuss)

1- Speakers: He uses monitor quality Yamaha speakers, you use crappy PC speakers (just like mine or yours; they are all crappy when compared to a Yamaha monitor speaker)

2- Microphones: He uses high fidelity, high linearity, low noise, high sensitivity microphones , you use web-cam crappy microphone. (again we all use those PC microphnes but they are crappy compared to any professional one)

3- Speaker and microphone placement: it's very vital that you place the speakers and the microphones to the correct places, otherwise you will be measure something that you don't want or need to.

4- Room: His impulse response is from a church. Your's is from a living room. When compared to such a structure, so you should be measuring different room impulse reponses of course.

However, even the most interesting part is, how and why do you judge your impulse response from its graphical plot appearance? You should judge it from its acoustical result point of view.

Have you tried your calculated room impulse response to add a reverb effect to dry audio, to see if it works? i.e.,to see if the dry audio becomes as if it was played and recorded in that room you refer to its impulse response?

You should do this test with a head-set ! otherwise you would be applying the room impulse response twice when played back in the same room...

  • 1
    $\begingroup$ Worth mentioning- make sure that all recording tweaks in windows are switched off. I.e. beamforming and other crap. $\endgroup$
    – jojeck
    Commented Aug 11, 2017 at 11:46
  • 1
    $\begingroup$ @jojek Especially automatic gain control $\endgroup$
    – endolith
    Commented Aug 11, 2017 at 13:28
  • 1
    $\begingroup$ @endolith one would also reset any software / hardware equalizers at the wave output. Or any other fancy stuff that enhance the output audio stream that's being played. Eventhough in principle some of those can be corrected later, it's best to get as clean as possible signal in the first place. $\endgroup$
    – Fat32
    Commented Aug 11, 2017 at 13:35

It looks like Joseph is using normalisation on the import and export of the audio files. This is often done by dividing the signal by the absolute maximum value of the signal. This will scale the signal to unitary amplitude i.e. between 1 and -1.

From the third subplot, it doesn't look like you are normalising your measurement. This would mean that you are operating on a signal that is not necessarily scaled equally with your stimulus, when attempting to create the RIR or transfer function of the system (H). Not equally scaling these signals could reduce the performance of your result.

You could try normalising your signals in Matlab, so that the peak amplitudes in each are 1.

Example of some signal normalisation using Matlab

If you have just used Josephs code, then the process will have happened using normalised signals, which would suggest that you have a large spike somewhere in your recording that may be caused by poor sound-card performance or some other noise source near the microphone. In this case, do some investigatory filtering and windowing, and try to remove the extra spike.

Your hardware setup is likely to skew your recording, as I believe laptop microphones are likely to have some internal processing. There is often some extra processing on the jack output of your laptop to, and this may skew the stimulus also.

I hope this has helped you.

  • $\begingroup$ First of all, thank you. I learn something new. I have tested after normalising the recorded waveform. The change in impulse is the amplitude becomes bigger. Spikes and information in the signal remain the same. As from your suggestion, I'll try out applying the filter or window. Suggestions on what to use are welcomed >< I am using an external webcam's mic to record the audio. Do you think it has some internal processing as well? $\endgroup$
    – iHateUni
    Commented Aug 11, 2017 at 9:28
  • $\begingroup$ Nevermind that, a more important question is where should i apply the filter? is it on the recorded audio or the processed impulse? $\endgroup$
    – iHateUni
    Commented Aug 11, 2017 at 9:48
  • $\begingroup$ On both the stimulus and the recorded signal in post processing might be a good thing to try first. $\endgroup$
    – SEDur
    Commented Aug 11, 2017 at 13:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.