DiAna, a software Distortion Analyzer

Member
Joined 2004
Paid Member
Going back to my proposal let me outline what I see. (I have done this with Praxis so I know it works.)

Source plus two channels; reference and test
Step one: connect source and reference channel to input of passive notch, connect test to output of passive notch.
Step two: sweep system to create map of frequency vs: amplitude and phase
Step three: insert dut or test oscillator at input to passive notch and capture data
Step 4: referencing fundamental from reference channel in step 3 calculate correction amplitude and phase for the calculated harmonics of the fundamental
Step 5: apply corrections to extracted harmonics and plot spectrum
Step 6 recreate residual waveform referenced to fundamental from corrected data. The phase correction should put abberations in sync with the fundamental so crossover glitches and amplitude modulations are shown in a way that enables deducing the origins.

When I did this with Praxis I manually edited the correction file (easy since its a simple CSV file) to remove the deep part of the notch. My concern was the amplitude of the harmonics in that case, Edmund's software can take this further with the fundamental reconstruction.

If you have a high pass filter in the chain the sweep will automatically collect phase/amplitude changes that come from that.

This is not a simple/quick thing to create so I hope it's not too much to ask.

For these tests, I don't see much value in the histogram (sine waves of low distortion are extremely predictable) however maybe for the distortion residuals? Otherwise its my first choice for deleting as a button.

I would collect the loss(gain)/phase info of the filter as part of the cal process every time its set up since you may have a number of filters or something like a B&K 1607 tuneable notch.
 
I was going to suggest this.
Same minds, same thoughts. ;)
Can you enlarge the pane to fit it in?
Sure, it's possible, but then I have to change the layout of all nine preference pages (because I like to keep them of the same size). As you can imagine that means a lot of work. For the time being, I stick with solution (i.e. combo box) outlined on page #597.

Cheers.
E.
 
@Demian,

Thank you for outlining the necessary steps. Regarding the histogram, I agree with you it's not of much value, as most of the time it will be okay, provided of course that the sampling rate is not a whole number of the fundamental frequency. (That's why I've chosen 997Hz as default value instead of just 1kHz). Apart from being a sanity check, it might be instructive to see the effects of various sample rate vs fundamental frequency combinations, See also page #115.

Cheers,
E.
 
HP filter

I used a brickwall HP filter to get rid of hum in low-amplitude tests so they could be processed. The problem is the harmonics get shifted in phase if the corner frequency is anywhere near the fundamental. Do you think you could implement a HP filter that does not alter the phase?
Let me think about it, something like a linear phase FIR filter directly put behind the ADC output and before all other data processing. But first let me finish the notch filter stuff (one thing at the time).

Cheers,
E,
 
Temperature effects

Horizontal grid lines should always be visible. So take away the tickbox.
And regarding the notch filter, the attenuation is varying with temperature, i have built several of them. So it´s very important to measure the fundamental signal before and after the twin T notch filter.
Indeed, component tolerances do have a pronounced effect on the notch. However, we are only interested in amplitude and phase of the harmonics (in order to reconstruct the residual), which are less subjected to these tolerances. So, I think, no need to determine the characteristics of the filter just before and after a THD measurement.

Cheers,
E.
 
High pass filter

I think you need to high pass filter in the analog domain to get the best SNR from the measurement. The process I outlined would get the phase impact of a high pass filter as well.
If this high pass filter has a sufficient steep slope and a cut-off frequency between the fundamental and the 2nd harmonic, do we still need a notch filter at all?

Cheers,
E.
 
I talked with the creator some time ago and he said he was willing to look at it but couldn't do it right away. Wineasio works for most people with their audio software, but it doesn't seem DiAna is the problem here.

It could be that if someone else tried it would work, and there is something wrong with my OS. But no one has tried, so who knows.
 
Here is what I have learned about wineasio. I downloaded wineasio-0.9.2.tar.gz from wineasio download | SourceForge.net. The README file contains the following:
Wineasio by default uses 32 bit float as sample format (the native format used by Jack), if this causes a problem for an ASIO host, wineasio can be built to use 32 bit integer by defining the ASIOST32INT variable.
I run Fedora 27 on four different Intel and AMD boxes using M-Audio Audiophile-192 PCI sound cards. I am able to get Wine to run Diana with audio from a .wav file. I have not yet attempted to use Diana with wineasio.
 
WineASIO

I tried and no it doesn't work. The problem seems to be with wineasio as it occurs with other programs as well. But others use wineasio successfully with those programs so someone else needs to try it.
I have talked with one of the developers. He has reproduced my error and is looking into it. This seems fairly optimistic.
Since it is not clear yet whether it's a bug of wineasio or a bug of DiAna or just an incompatibility issue, it might be helpful to bring me into contact with one of the developers. So I would suppose to give them my email address.
 
It doesn't seem to be a problem with DiAna. It may be a Jack bug. Here is what I was told:

[15:12] <keantoken> JackWinter: Any progress on DiAna?
[15:24] <JackWinter1> keantoken: i spent a few hours this morning :) not sure what conclusions to draw. i rebuilt wineasio, i went back a couple of versions of both reaper and wineasio (that i know for sure worked) and still it crashes in 32b mode. i put some tracing into wineasio and it happens in the audio processing callback, it reads the data, gets processed by reaper and crashes when it writes it back to jack. tried both jack1/2 and even rebuilt jack1 and lib32 jack.
[15:24] <JackWinter1> really not sure what is going on to be honest...
[15:25] <JackWinter1> was considering if i can find some 32b audio program for linux that i can test to see if jack is broken 32b->64b, but then i had to do other things

So this bug occurs with both Reaper and DiAna, and only with 32 bit programs. DiAna works fine with ASIO4ALL, so I see no reason to think DiAna is the problem.