Hi @RobbN, you can effectively get a pulsed sine test out of the box if you set the FFT size very small. A 1k FFT at 48Ksps will be ~21 mS in duration. That would be about 20 cycles at 1 kHz. In air, you’d want to make sure any reflective surfaces were more than 10 feet away. Under water, you’d want to make sure any reflective surfaces were more than 40 feet away.
There is also the ability to set the silence dwell time between bursts. And you’d want to set that be long enough so that the reflections from your boundaries are ignored. The naval tank you note has a boundary that is 5 meters from the emitter and mic. So, about 15 feet. And so you’d not want to start another burst for 15 mS or so. Let’s set 100mS between bursts (this isn’t super precise, but it will be AT LEAST this long between bursts).
Here’s what the train of pulses look like in the time domain:
Now, in the scope shot the bursts look to be 100mS or in duration. That’s because they have a ramp up/down period. If you set the check box to “show truncated burst in Time Domain” in the settings dialog, then that means in the time domain display you’ll see the the actual waveform that is getting the FFT applied with all the ramp up/down removed. That Note that the burst is 21 mS as calculated.
Now, if you have a lot of path delay (more than 0.04 seconds), then you can add some more cycles in using the Latency Compensation in the Settings dialog. For example, Bluetooth path delay can be 100 to 200 mS in some cases, and growing the pre-buffer can allow you to compensate that out. But probably for your needs, you’ll be fine with the 40 mS max latency provided by the default Latency Compensation. You can inspect your captured waveform in the time domain and make sure it matches what you expected (that is, starts exactly at 0.0 mS and continues through the FFT divided by the sample rate).
And then, once you are sure you have captured the frame of data as expected, you can shift back to frequency domain. In the case below, I’m in loopback, so the 0 dBV input measures as 0 dBV input. But in your case, you should see a reflection-free signal level indicating the response of your mic.
And then, if you are convinced in what you see in the 1 kHz test, you can move to the AmpFreqResponseOptions automated test and sweep over the specified levels and frequencies. That will respect your FFT settings, your pre-buffers settings, and your Pause Between Bursts settings.
The only thing to be aware of is with a 21mS data buffer, you will have a lower bound on what frequency can be process. Again in loopback, I can get down to about 93 Hz and still see a meaningful amplitude reading:
At this point, the captured waveform is two cycles.
Finally, note while the Chirp can use the right channel as a reference, the stepped sine doesn’t do anything special with the right channel. You could put a reference mic on the right channel, and still capture it, and then dump the output to excel for additional processing if needed.
The neat thing here is that if you build confidence with stepped bursts of sine waves, you can easily then switch over to a chirp with windowing and see how it compares. All out of the box without any coding.
PS. If you went to 96K sample rate, your burst duration with a 1K fft s 1024/96k = ~10 mS. So, that would let you get down to 200 Hz using a 10 mS burst. And at 192k you’d have a 5 mS burst, and lower freq of 400 Hz or so. Round numbers. But this would let you get to a smaller tank (each doubling of sample rate would collapse the required tank size in half).