View source: R/formants_utilities.R
lockToFormants | R Documentation |
Internal soundgen function
lockToFormants(
pitch,
specEnv,
formantSummary,
rolloffMatrix = NULL,
lockProb = 0.1,
minLength = 3,
plot = FALSE
)
pitch |
pitch contour, numeric vector (normally pitch_per_gc) |
specEnv |
spectral envelope as returned by getSpectralEnvelope |
formantSummary |
matrix of exact formant frequencies (formants in rows, time in columns) |
rolloffMatrix |
rolloff matrix as returned by getRolloff |
lockProb |
the (approximate) proportion of sound affected by formant locking |
minLength |
the minimum number of consecutive pitch values affected (shorter segments of formant locking are ignored) |
plot |
if TRUE, plots the original and modified pitch contour |
When f0 or another relatively strong harmonic is close to one of the formants, the pitch contour is modified so as to "lock" it to this formant. The relevant metric is energy gain (ratio of amplitudes before and after the adjustment) penalized by the magnitude of the necessary pitch jump (in semitones) and the amplitude of the locked harmonic relative to f0.
n = 50
pitch = getSmoothContour(len = n, anchors = c(600, 2000, 1900, 400),
thisIsPitch = TRUE, plot = TRUE)
rolloffMatrix = getRolloff(pitch_per_gc = pitch)
specEnv = getSpectralEnvelope(nr = 512, nc = length(pitch),
formants = list(f1 = c(800, 1200), f2 = 2000, f3 = c(3500, 3200)),
lipRad = 0, temperature = .00001, plot = TRUE)
formantSummary = t(data.frame(f1 = c(800, 1200), f2 = c(2000, 2000), f3 = c(3500, 3200)))
pitch2 = soundgen:::lockToFormants(pitch = pitch, specEnv = specEnv,
rolloffMatrix = rolloffMatrix,
formantSummary = formantSummary,
lockProb = .5, minLength = 5, plot = TRUE)
pitch3 = soundgen:::lockToFormants(pitch = pitch, specEnv = specEnv,
rolloffMatrix = rolloffMatrix,
formantSummary = formantSummary,
lockProb = list(time = c(0, .7, 1), value = c(0, 1, 0)),
minLength = 5, plot = TRUE)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.