HOLMImpulse: Measuring Frequency & Impulse Response

I would find file-I/O for everthing very useful (especially for offline processing) :
- stimulus (and the inverse, too, while you're at it)
- DUT's response
- impulse (that is, additional to the text export we already have)

My preferred formats for all three would be
- plain array of raw double, .DBL (+ dialog for the samplerate, then), since that is as "lossless" as it gets
- 32bit float .WAV
- 24 oder 16bit int .WAV (w/ normalizing + dither, maybe)
And for the pulse an estimate (or the precise value) of the sample offset between harmonics.

Background: I'd like to have access to a pure Farina Core as such, with no frills. For both (self-)educational and practical reasons.

Acourate's excellent and free LogSweepRecorder (http://www.acourate.de/) has most of this functionality (plus more params for the Farina processing) -- please take a look at it (note eg the cos envelopes of start and end of sweep and arbitrary freq range, and the HF-emphasis/deemphasis). Alas the author has chosen to scramble the doubles in his output files for pulse and inverse.

Personally I'dont need "yet another program" to display the info that's "buried" in the impulse in various way, but then again it would be nice to have that (and some quality/calibration controls as mentioned) too, like step response derived from the main pulse, etc.

The frontend, besides some minor quirks, looks perfect to me (is that due to those 63MBs of that required .NET package?)

- Klaus
 
KSTR said:

Personally I'dont need "yet another program" to display the info that's "buried" in the impulse in various way,
- Klaus

I agree. Whats needed is something that will export the raw data from the log sweep convolution (thats is there now as I understand, but I have not used it) and allow us to see the input and output signals for checking on levels, clipping, and such. The ability use a two channel measurement for things like impedance would be nice as well.
 
Now for the strange stuff (besides I managed to crash it)

ARTA FR (click to see full size):


HOLMI FR+Pulse :

EDIT (ingore 0.4dB normalization "shift" -- pls default to 0dB)

Same conditions, of course.

That's for sure NOT the looback LF response (the impulse looks ok ---> wrong graphic interpolation for the sparse data points at LF, it seems -- don't use any, please)
 
Low frequency artifact

Thank you KSTR!

KSTR said:
Now for the strange stuff (besides I managed to crash it)
HOLMImpulse :

EDIT (ingore 0.4dB normalization "shift" -- pls default to 0dB)
That's for sure NOT the looback LF response (the impulse looks ok ---> wrong graphic interpolation for the sparse data points at LF, it seems -- don't use any, please)

1. I don't use interpolation
(Expect linear drawing from point to point)

2. I cannot reproduce these low-freq artifacts
What is the phase response ?
- The phase response reveals clock-mismatch

What are the settings?
(Screenshot of the "Settings for device and signal" tab)
- Samplerate =
- LogSweep start frequency =
- Signal Length =
- Measurement Save Length =
- Keep in/out stream alive = yes/no
- Microphone calibration = yes/no
- DAC-ADC calibration = yes/no
- If you save the measurement (file.hlm) and sent it to my email address (With a private message I'll investigate)
 
Hi, gedlee + KSTR!
KSTR said:
I would find file-I/O for everthing very useful (especially for offline processing) :
- stimulus (and the inverse, too, while you're at it)
- DUT's response
- impulse (that is, additional to the text export we already have)

My preferred formats for all three would be
- plain array of raw double, .DBL (+ dialog for the samplerate, then), since that is as "lossless" as it gets
- 32bit float .WAV
- 24 oder 16bit int .WAV (w/ normalizing + dither, maybe)- Klaus
As I understand you, then you would like:
  1. "Do not normalize" option
  2. "Do not non-hole-number time-shift option
  3. Save measurement signal as wave, ascii text
  4. Save The Inverse measurement signal as wave, ascii text
  5. Save The impulse as wave, ascii text
  6. Save The recorded response as wave, ascii text
    [/list=1]
    (HOLMImpulse already has the "Save The impulse as ascii text"
    in lossless double precision format)

    or what?
 
Hi Ask,

I remeasured today with my Marc8 8Ch.Stereo-I/O Soundcard, the result stays the same. I'm using ASIO-drivers under XP

The settings:



And the response, again


The phase matches the mag in perfect minimum phase fashion, from what I can see. And the shape of that ripple (which is linear spaced, with a linear f-axis) is what puzzles me and Earl (looks akin to a VERY high order chebysheff response or something). This is definitely not the true LF response (I "know" this soundcard very well, and checked for correct responses many times with various means).

This was the "natural" system response. With calibration it is all flat (some minor ripple left)... which is a no-brainer since we then refererence the loopback onto itself. The problem is the basic response to start with and it seems to be independent of the card (@other users: pls confirm this).

BTW, do you actually calculate the "measurement signal" response with the same process or do you just draw flat lines on the screen, assuming it is flat per se? I think this might be the core of the problem, I mean if you did an internal "loopback calibration" of the calculation process then the symptom would be accounted for, and the DAC-->ADC loopback would then only show the effective loopback error of the hardware and not the systematic behaviour. Still better would be to address the root cause, not the symptom, of course.

>> 2. I cannot reproduce these low-freq artifacts
>> What is the phase response ?
>> - The phase response reveals clock-mismatch
The signal is running loopback (1m cable) into the same specimen of the converter chip (AK4524), so I see no chances for clock mismatches as there is only one clock line in action. There might be some low-freq jitter, though. And constant latency etc. If I had used unsynced multiple soundcards this would be a problem.


>> 1. "Do not normalize" option
>> 2. "Do not non-hole-number time-shift option
Just default the shift to 0dB and provide a "normalize" button. "Shift" as a label also is a bit misleading, though I know what you meant (linear offset in a dB mag plot). "Normalization Gain" might be more readily understandable.

>> 3. Save measurement signal as wave, ascii text
>> 4. Save The Inverse measurement signal as wave, ascii text
>> 5. Save The impulse as wave, ascii text
>> 6. Save The recorded response as wave, ascii text
Yep, that would be fine (in some .WAV format. The ASCIIs for signal, inverse and response will get pretty large)

The ASCII export is already very good and flexible.... as is the whole tool in general.

Thanks for your effort (see these points as a wish list -- I'm not entitled to force anything, only your boss is ;) )
- Klaus
 
I tried measuring with the program this weekend. I could not get a reasonable level signal out of the program. Windows mixer was turned up all the way. Measuring with Speaker Workshop produced normal levels with the same settings. I could hear the signal being output - it was just at a very low level. I'm using a Behringer UCA202 USB sound card on a laptop running Windows XP SP2.
 
>> If you save the measurement (file.hlm) and sent it to my email
>> address (With a private message I'll investigate)

I'm unclear about what to save exatly.

The impulse of the "natural response" as a .CAL-File (what is .HLM??) or the FR? Zipped I could attach it here (only 38k)
 
"Keep In/out stream alive" ?

Thanks again :up:

KSTR said:
BTW, do you actually calculate the "measurement signal" response with the same process or do you just draw flat lines on the screen, assuming it is flat per se? I think this might be the core of the problem, I mean if you did an internal "loopback calibration" of the calculation process then the symptom would be accounted for, and the DAC-->ADC loopback would then only show the effective loopback error of the hardware and not the systematic behaviour. Still better would be to address the root cause, not the symptom, of course.
No, but I have of course made a numerical test to verify. I also have an external soundcard where I can make a digital loopback to very every layer in the software.

"Keep In/out stream alive" ?
Could you try the "Setting for device & signal" > "Keep In/out stream alive" ?
Check the box - then wait apprx. 10 seconds and then measure again. (While the stream is still alive)

Please zoom out, so I can see your timewindow.

Regarding save as a HLM-file
HOLMImpulse > File > Save Measurements
This will save all 50 measurements (If not empty) in a custom format (file.hlm)
Which can again be opened in HOLMImpulse File > Open
(Or simply by Drag'n'Drop onto HOLMImpulse)

My laptop soundcard
Attached shows the response of my laptop soundcard using the same settings as you.
 

Attachments

  • new picture (1).png
    new picture (1).png
    45.1 KB · Views: 912
Everything looks fine here. Audigy 2ZS Notebook card.
I loop one channel output back to both input channels.
Once I accidentally selected "mic input" in the Windows volume control. This did result in the funny low frequency response.
 

Attachments

  • holm impulse example.gif
    holm impulse example.gif
    28.7 KB · Views: 882
>> (Samplerate converters + Nyquist limit in the DAC-ADC chain is a much worse problem)

A strong point. Practically all DAC/ADC chips do alias in the top freq range, due to "incorrect" filters (since correct ones consume to much real estate on the chips). This also could be the problem. Bruno Putzeys on these matter:
http://recforums.prosoundweb.com/index.php/m/278132/0/?srch=stopband#msg_278132
http://recforums.prosoundweb.com/index.php/m/265660/0/?srch=stopband#msg_265660

(way above my head, BTW)
 
Re: Log-file

askbojesen said:


When the window has closed then
attach the following file:

C:\Documents and Settings\All Users\Application Data\HOLM Acoustics\HOLMImpulse\HOLMLogging.txt

(Or similar path for C:\Documents and Settings\All Users)
Just ran it for measurement, unfortunately, it terminated abnormally.
I heard the log sweep sound around 1 second, then the software quit.
See the attach file for log.

My system configuration:

OS: Windows XP SP2 traditional Chinese
Sound card: 1) south bridge integrated SiS7012, 2)USB 1.1 connected Creative E-MU 0404|USB

Tried both sound cards and 44.1/48KHz, got identical result.
 

Attachments

  • holmlogging.txt
    829 bytes · Views: 90
Hi Ask,

"Keep Alive" didn't fix it, it seems.



I also tried MME drivers, and different DAC/ADC-Channels (but *not* accross chips -- there a four of them on the card).

The zipped .HLM (we can't attach files to eMails sent via DIYaudio)
http://www.freefileserver.com/304137

It's also not a big deal if we can't fix this, since with higher start freq, calibration and the response of real DUTs (drivers/speaker) the problem isn't that relevant, more or less an academic issue.

BTW, when I start at 10Hz the plot stays the same (keeping the 1Hz left border), only THD goes up at <20Hz. Looks like the input AC-coupling hasn't settled fully -- the usual problem, but it can be minimized with a raised cosine fade-in envelope a few periods long (did you use this, or is a linear slope?)


- Klaus
 
Time window

KSTR said:
Looks like we are getting down to where the dog is buried, as we Germans say :D

No that's not were the dog was buried, because there has never been a dead dog - and who wants to bury a dog alive ;)

Actually it is a feature rather than a bug.
It is the timewindow, which was not large enough.

It seems that your soundcard (DAC-ADC) has very long lowfrequent post ringings. (See attachment)

NB: Notice the little triangle in at the frequency axsis corresponding to the wavelength of the timewindow
(It moves when you move the timewindow)

So what now?
When I measure the DAC-ADC I will enable a larger timewindow to adapt your soundcards with these low-freq postringings.

Until the new Release then modify the time window from the measurement > options > window

THD at very low frequencies
Yes, I should disable showing THD at frequencies lower than the log-sweep frequency start

The bottom line: The calculated Impulse Response is correct

again, Thanks for the feedback :up:
 

Attachments

  • new picture.png
    new picture.png
    44 KB · Views: 941
OK Ask, correct windowing fixed it (bounds: -44100 and 44100 or greater), thanks! Now I get results consistent with all other softwares I have, which are quite a few (plus the sanity check of measuring the ADC-->DAC response -- not DAC-->ADC -- from the "outside" with a hardware test rig)

--> Please autoscale the window length to the period of the start frequency by default ("Auto-Detect" doesn't seem to do anything in my system).

But I'm unclear on how to interpret a measurement when I start at 1Khz (as shown), I mean how do you get the data that you display below that point when there is no data (assuming the correct spectrum of the sweep: no content below 1kHz)? Regarding not only the "false" distortion data but also the basic response?

EDIT:mad:all: Ignore data that is below the higher value of either the start freq or the freq indicated by time window marker.

OK, no-one would use display boundaries that are beyond the assumed bandwidth of measurements, but, again, autoscaling or limiting of that would be nice, to prevent users from falling into these traps.


And my card doesn't ring at LF, believe me. It has other issues, though ;)

- Klaus
 
>> It is a good idea to provide a log amplitude view of the impulse,
>> it then becomes much easier to see when the window is
>> truncating the response too early

It's already there, the "dB" button

@Ask: what does the "Reverberation" button do, exactly?