Estimation of Fundamental Frequencies from a Wspec object

Description

Estimation of Fundamental Frequencies from an object of class Wspec. Additionally, some heuristics are used to distinguish silence, noise (and breathing for singers) from real tones.

Usage

1
2
3
4
5
6
7
FF(object, peakheight = 0.01, silence = 0.2, minpeak = 9, diapason = 440, 
    notes = NULL, interest.frqs = seq(along = object@freq),
    search.par = c(0.8, 10, 1.3, 1.7))
    
FFpure(object, peakheight = 0.01, diapason = 440, 
    notes = NULL, interest.frqs = seq(along = object@freq),
    search.par = c(0.8, 10, 1.3, 1.7))

Arguments

object

An object of class Wspec.

peakheight

The peak's proportion of the maximal peak height to be considered for fundamental frequency detection. The default (0.01) means peaks smaller than 0.02 times the maximal peak height are omitted.

silence

The maximum proportion of periodograms to be considered as silence or noise (such as breathing). The default (0.2) means that less than 20 out of 100 periodograms represent silence or noise.

minpeak

If more than minpeak peaks are considered for detection and passed argument peakheight, such periodograms are detected to be silence or noise (if silence > 0).

diapason

Frequency of diapason a, default is 440 (Hertz).

notes

Optional, a vector of integers indicating the notes (in halftones from diapason a) that are expected. By applying this restriction, the “detection error” might be reduced in some cases.

interest.frqs

Optional, either a vector of integers indicating the indices of (fundamental) frequencies in object that are expected, or one of the character strings "bass", "tenor", "alto" or "soprano". For these voice types, only typical frequency ranges are considered for detection.

By applying this restriction, the “detection error” might be reduced in some cases.

search.par

Parameters to look for peaks:

  1. The first peak larger than peakheight * 'largest_peak' is taken.

  2. Its frequency is multiplied by 1+search.par[1] Now, any larger peak between the old peak and that value is taken, if (a) it exists and if (b) it is above the search.par[2]-th Fourier-Frequency.

  3. Within the interval of frequencies 'current peak' * search.par[3:4], another high peak is looked for. If any high peak exists in that interval, it can be assumed we got the wrong partial and the ‘real’ fundamental frequency can be re-estimated from the next two partials.

Details

FFpure just estimates the fundamental frequencies for all periodograms contained in the object (of class Wspec).

FF additionally uses some heuristics to distinguish silence, noise (and breathing for singers) from real tones. It is recommended to use the wrapper function FF rather than FFpure. If silence detecion can be omitted by specifying silence = 0.

Value

Vector of estimated fundamental frequencies (in Hertz) for each periodogram conatined in object.

Note

These functions are still in development and may be changed in due course.

Author(s)

Uwe Ligges ligges@statistik.tu-dortmund.de

See Also

Wspec, periodogram (including an example), noteFromFF, and tuneR for a very complete example.

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.