So... expanding on the John's response, Here is my draft procedure for microphone calibration:
Objective:
to verify and improve calibration of one measurement microphone against another, reference microphone.
The concept: we find the OFFSET correction from the measurement with OLD calibration file to the REFerence microphone measurement. Then we apply the offset to the old calibration file to get the NEW calibration file. (this way low-bass calibration and gain can be re-used from the original file in case it was not possible to reliably re-calibrate those parameters in your setup).
Steps:
- Record speaker measurements with both REFerence microphones and microphone that needs to be re-calibrated - "DUT" - device under test..
- Use substitution of microphones in front of the same speaker. Every microphone is placed as-precisely-as-possible (precision within a couple of millimeters) in the same spot, one at a time. (A lot of people ignore this and place microphones even several centimeters off from one another which is a Bad idea)
- Speaker should be physically small, coaxial or a "full-range" driver. It does not need to be flat, just needs to have enough output at all relevant frequencies to give enough dynamic range versus ambient noise and microphone self-noise. Alternatively, the calibration will only be valid at frequencies that speaker can reproduce (it is rare to get a speaker with good lower bass output that is otherwise compact and full-range).
- Use typical Measurement Sweep at 48 or 44.1 kHz (perhaps using longer sweep length 512K or if possible, a few repetitions).
- Check the maximum THD distortion in the measurement. Consider to not use frequencies with > 3-5% THD. (If distortion is high - either the speaker is pushed too loud or the speaker can not produce enough output to overcome ambient noise - typical at low frequencies).
- + other optimizations to reduce impact of reflected sound, avoid comb-filtering from multiple drivers playing the same frequencies, leave enough distance for sound of multiple drivers to integrate, as well as keep direction of direct sound as close to point-source as possible.
- (optional?) apply "IR Windows" to all measurements. (Recommendations not clear at the moment, but to-start-with try frequency dependent window with 15 cycles, Tukey 0.25)
- Apply light smoothing on the data, for example 1/48. (The smoothing and windowing will be used in the Trace arithmetic.)
- Alternatively, the smoothing may be redundant if you already applied "IR Windows".
- Apply OLD calibration file to the DUT measurement data. (Note that it is possible to add or replace microphone calibrations for each measurement at any point. Also, you may have applied the calibration already when you selected microphone for measurement in REW Preferences).
- Run "Average The Responses" (the same as "RMS Average") on the DUT data. (To both bake-in the old calibration file and remove phase information in the DUT data).
- Do the same procedure for the REFerence data: apply any calibration files and then take "RMS Average" of the REFerence microphone data. (To both bake-in the calibration file and remove phase information. Note, if you can, take an average of multiple reference microphones - no microphone is perfect, so average of several top-quality microphones is better than any single one of them.)
- Use "Align SPL..." on the averages of DUT and REF.
- If you are calibrating miniDSP UMIK then "Align SPL" to 0db at 1 kHz with 0 or 1 octave span (because UMIK calibration files are always 0dB at 1000 Hz).
- For other cases, choose alignment parameters that make the most sense (usually using midrange frequencies within 250 to 2000 Hz, because at high frequencies reflections make the data less consistent between microphones).
- Use "Trace arithmetic" ==> "A/B" where you divide: averaged DUT data / REFerence data. As a result you get the "OFFSET correction".
- Load in the OLD calibration file as a measurement (using File => Import frequency response).
- Apply 1/3 (or 1/6) smoothing on the "OFFSET correction" to make it about as detailed as the OLD calibration curve. (The smoothing will be used in the Trace arithmetic.)
- Use "Trace arithmetic" ==> "A*B" where you multiply: smoothed OFFSET correction * OLD calibration file. As a result you get the initial "NEW calibration". (Note, the input data has no phase and there is no need to do SPL alignment before multiplication).
- Manually align SPL of the NEW calibration by going to "Measurement actions" and dialing in "SPL offset" value to match OLD calibration and press "Add Offset to data". Alignment is done at a frequency where you plan to join the OLD and NEW calibration data together (a reasonable value could be 1 kHz, depending on the speaker size, room reflections and differences between old and new calibration curves).
- Note: to make the manual alignment easier: first use "Align SPL..." function to 0 dB. and then do the manual "SPL offset" in fully zoomed in view.
- Export NEW calibration as text with 48PPO and NO-additional smoothing (smoothing should already be sufficient from previous operations).
- Check that you get the values all the way to 20 kHz. If not, simply export one more text file with "Use measurement resolution" setting and copy the last row out of this "high-resolution" file into your normal 48PPO text file. (You can also round the frequency to "20000.0")
- Splice the data: copy the relevant frequency-SPL rows from the exported NEW calibration text file into the original OLD calibration text file using basic text editor. This way only valid values are replaced (for example low-bass calibration and gain can stay from the original file).
- Done.
I hope we can have a discussion and peer-review on this draft. I am trying to fix mistakes in this tutorial for myself and others.
In my testing, UMIK2 had more than 2dB error at high frequencies compared to Earthworks M23R reference (and I am quite confident in accuracy of my measurement setup and of the M23R). So this sort of calibration is quite significant in practice for people who use affordable USB microphones.