Hello, Recently I performed some IR measurement with the Impulse Response Measurer App. A problem arises when I want to also measure the SPL at the microphone, because the output from the App is only the impulse response, the recorded signal is not saved. Therefore, I try to measure the SPL by calibrating the microphone with MATLAB calibrateMicrophone function. Then, I can play the sine sweep, record it (I'm using audioPlayerRecorder) and use the microphone's calibration factor to compute the SPL. My question is, how can I controll, in MATLAB, the level of the input signal when I use audioPlayerRecorder to make the recording, so the loudspeaker produces the same volume as when I use the Impulse Response Measurer App? I keep the gain of my amplifier constant, but I put the "Excitation Level" in the App to -6 dBFS. What does it do to the input signal? I learn from Wikepedia that "The level of 0dBFS is assigned to the maximum possible digital level. For example, a signal that reaches 50% of the maximum level has a level of −6dBFS, which is 6dB below full scale." Does that mean a sine sweep signal at -6 dBFS will have 0.5 as the maximum amplitude in MATLAB? Thanks in advance for any kind explanation!
John Williams answered .
2025-11-20
outputLevelInDBFS = -6; exc = sweeptone(sweepDur, irDur, FS, 'ExcitationLevel', outputLevelInDBFS )
Full scale in MATLAB is +/- 1, so -6 dBFS level is: 0.5012 = db2mag(-6) = 10^(-6/20)