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.
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))
Vector of estimated fundamental frequencies (in Hertz) for each periodogram conatined in object
.
An object of class Wspec
.
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.
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.
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
).
Frequency of diapason a, default is 440 (Hertz).
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.
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.
Parameters to look for peaks:
The first peak larger than peakheight * 'largest_peak'
is taken.
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.
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.
Uwe Ligges ligges@statistik.tu-dortmund.de
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
.
Wspec
, periodogram
(including an example), noteFromFF
,
and tuneR for a very complete example.