Daqarta
Data AcQuisition And Real-Time Analysis
Scope - Spectrum - Spectrogram - Signal Generator
Software for Windows
The following is from the Daqarta Help system:

# Spectrum Track Fundamental

Controls: Spectrum Dialog >> Track >> Fundamental
Macros: TrackFund, TrackFundMin
Changes: RF=n, Rf=n

If Track is active and the signal has harmonics present, toggling the Fundamental button on will cause the cursor to track the fundamental, even if it is not the largest peak... or even if it is missing completely.

The process assumes that the two or three largest peaks are harmonically related. (Peaks that are more than 30 dB below the largest peak are ignored, even if they are above the Track Threshold.) For example, if the three largest peaks are 2000, 3000, and 4000 Hz, these are assumed to be the 2nd, 3rd, and 4th harmonics of a 1000 Hz fundamental.

The 3 largest peaks are always assumed to be no more than the 7th harmonic. So in the above case, these peaks could not have been the 4th, 6th, and 8th harmonics of a 500 Hz fundamental. But this type of error can happen when there are only two peaks, such as 2000 and 3000 Hz... they will be assumed to be 2nd and 3rd harmonics of 1000, but they could really be 4th and 6th harmonics of 500.

Of course, the largest peak is often the fundamental itself, and will be correctly reported as such... unless there is a spurious lower-frequency peak that confuses the tracker. Set the Track Min Frequency above any known spurious peaks.

Just below the Fundamental button is the Apply Min button. If it is inactive, the Track Max and Min Frequencies are only used to limit the peaks that are used to find the fundamental; the computed fundamental itself may be less than the Min value. This configuration may be used to track a fundamental where there are interfering components near the fundamental frequency, but not near the harmonics. By setting Max and Min to reject the interference (even though that rejects the fundamental itself) but accept the harmonics, the correct fundamental can still be measured.

If Apply Min is active, then the computed fundamental must also fall within the Max and Min frequency range.

When Fundamental is active, the solid cursor is moved to the position of the computed fundamental frequency, which is shown on the cursor position readout (upper window). But the value shown for the spectrum amplitude at that position is just what it would be if the cursor had been moved to that position manually; harmonic peak amplitudes do not influence the reported fundamental amplitude.

However, if Fundamental is active during Spectrogram Pitch Track mode, the trace will show the color corresponding to the amplitude of the largest peak, but it will be shown at the frequency of the fundamental. This is also used for note start and stop determinations when Pitch-to-MIDI is active.

Note that since Fundamental computations use peak positions, the Cursor Peak option is automatically activated and can't be toggled off as long as Fundamental and/or Track are active.

Also, it's usually a good idea to use a window function to reduce spectral leakage and thus improve peak resolution, which gives better Fundamental tracking accuracy. (However, do not use a Flat Top window, since it is designed for best amplitude resolution and actually has poorer frequency resolution than no window at all.)

Note that the Track Fundamental and Apply Min states are saved to and loaded from MIDI Setup (.DQM) files. Loading a new MIDI Setup may change these states.

Macro Notes:

TrackFund=1 activates Fundamental mode, TrackFund=0 turns it off, and TrackFund=x toggles the current state.

Similarly, TrackFundMin=1 activates Apply Min, TrackFundMin=0 turns it off, and TrackFundMin=x toggles the current state.

RF=n sets the Spectrum (Pitch) Track Fundamental mode to n state, where n can be any integer or valid Changes script expression. This may consist of MIDI control values (including RF), random values, current computer keyboard states or mouse position, input or buffered notes, oscillators, or User Variables.

Like the TrackFund macro, if n is 1 or more then Fundamental mode is active. If n is 0 or negative, Fundamental mode is off. You can toggle the current state with RF=x.

Similarly, Rf=n controls the Apply Min state like TrackFundMin.

GO: