getRolloff  R Documentation 
Harmonics are generated as separate sine waves. But we don't want each
harmonic to be equally strong, so we normally specify some rolloff function
that describes the loss of energy in upper harmonics relative to the
fundamental frequency (f0). getRolloff
provides flexible
control over this rolloff function, going beyond simple exponential decay
(rolloff
). Use quadratic terms to modify the behavior of a few lower
harmonics, rolloffOct
to adjust the rate of decay per
octave, and rolloffKHz
for rolloff correction depending on
f0. Plot the output with different parameter values and see examples below
and the vignette to get a feel for how to use getRolloff
effectively.
getRolloff( pitch_per_gc = c(440), nHarmonics = NULL, rolloff = 6, rolloffOct = 0, rolloffParab = 0, rolloffParabHarm = 3, rolloffParabCeiling = NULL, rolloffKHz = 0, baseline = 200, dynamicRange = 80, samplingRate = 16000, plot = FALSE )
pitch_per_gc 
a vector of f0 per glottal cycle, Hz 
nHarmonics 
maximum number of harmonics to generate (very weak
harmonics with amplitude < 
rolloff 
basic rolloff from lower to upper harmonics, db/octave
(exponential decay). All rolloff parameters are in anchor format. See

rolloffOct 
basic rolloff changes from lower to upper harmonics
(regardless of f0) by 
rolloffParab 
an optional quadratic term affecting only the first

rolloffParabHarm 
the number of harmonics affected by

rolloffParabCeiling 
quadratic adjustment is applied only up to

rolloffKHz 
rolloff changes linearly with f0 by 
baseline 
The "neutral" f0, at which no adjustment of rolloff
takes place regardless of 
dynamicRange 
dynamic range, dB. Harmonics and noise more than dynamicRange under maximum amplitude are discarded to save computational resources 
samplingRate 
sampling rate (needed to stop at Nyquist frequency and for plotting purposes) 
plot 
if TRUE, produces a plot 
Returns a matrix of amplitude multiplication factors for adjusting the amplitude of harmonics relative to f0 (1 = no adjustment, 0 = silent). Each row of output contains one harmonic, and each column contains one glottal cycle.
soundgen
# steady exponential rolloff of 12 dB per octave rolloff = getRolloff(pitch_per_gc = 150, rolloff = 12, rolloffOct = 0, rolloffKHz = 0, plot = TRUE) # the rate of rolloff slows down by 1 dB each octave rolloff = getRolloff(pitch_per_gc = 150, rolloff = 12, rolloffOct = 1, rolloffKHz = 0, plot = TRUE) # rolloff can be made to depend on f0 using rolloffKHz rolloff = getRolloff(pitch_per_gc = c(150, 400, 800), rolloffOct = 0, rolloffKHz = 3, plot = TRUE) # without the correction for f0 (rolloffKHz), # highpitched sounds have the same rolloff as lowpitched sounds, # producing unnaturally strong highfrequency harmonics rolloff = getRolloff(pitch_per_gc = c(150, 400, 800), rolloffOct = 0, rolloffKHz = 0, plot = TRUE) # parabolic adjustment of lower harmonics rolloff = getRolloff(pitch_per_gc = 350, rolloffParab = 0, rolloffParabHarm = 2, plot = TRUE) # rolloffParabHarm = 1 affects only f0 rolloff = getRolloff(pitch_per_gc = 150, rolloffParab = 30, rolloffParabHarm = 1, plot = TRUE) # rolloffParabHarm=2 or 3 affects only h1 rolloff = getRolloff(pitch_per_gc = 150, rolloffParab = 30, rolloffParabHarm = 2, plot = TRUE) # rolloffParabHarm = 4 affects h1 and h2, etc rolloff = getRolloff(pitch_per_gc = 150, rolloffParab = 30, rolloffParabHarm = 4, plot = TRUE) # negative rolloffParab weakens lower harmonics rolloff = getRolloff(pitch_per_gc = 150, rolloffParab = 20, rolloffParabHarm = 7, plot = TRUE) # only harmonics below 2000 Hz are affected rolloff = getRolloff(pitch_per_gc = c(150, 600), rolloffParab = 20, rolloffParabCeiling = 2000, plot = TRUE) # dynamic rolloff (varies over time) rolloff = getRolloff(pitch_per_gc = c(150, 250), rolloff = c(12, 18, 24), plot = TRUE) rolloff = getRolloff(pitch_per_gc = c(150, 250), rolloffParab = 40, rolloffParabHarm = 1:5, plot = TRUE) ## Not run: # Note: getRolloff() is called internally by soundgen() # using the data.frame format for all vectorized parameters # Compare: s1 = soundgen(sylLen = 1000, pitch = 250, rolloff = c(24, 2, 18), plot = TRUE) s2 = soundgen(sylLen = 1000, pitch = 250, rolloff = data.frame(time = c(0, .2, 1), value = c(24, 2, 18)), plot = TRUE) # Also works for rolloffOct, rolloffParab, etc: s3 = soundgen(sylLen = 1000, pitch = 250, rolloffParab = 20, rolloffParabHarm = 1:15, plot = TRUE) ## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.