| morph | R Documentation |
Takes two formulas for synthesizing two target sounds with
soundgen and produces a number of intermediate forms (morphs),
attempting to go from one target sound to the other in a specified number of
equal steps. Normally you will want to set temperature very low; the
tempEffects argument is not supported. Undefined values are set to
reasonably intelligent defaults, but it is safer to specify the same
parameters in both formulas. For instance, if formula1 includes "noise" and
"mouth", set these parameters explicitly in formula2 as well.
morph(
formula1,
formula2,
nMorphs,
play = FALSE,
savePath = NA,
samplingRate = 16000
)
formula1, formula2 |
lists of parameters for calling
|
nMorphs |
the number of morphs to produce, including target sounds |
play |
if TRUE or a character referring to a valid player, the morphs will be played as they are produced |
savePath |
if it is the path to an existing directory, morphs will be saved there as individual .wav files (defaults to NA) |
samplingRate |
sampling rate of output, Hz. NB: overrides the values in
|
A list containing two lists, ($formulas and $sounds),
each of length nMorphs. For ex., the formula for the second hybrid
is m$formulas[[2]], and the waveform is m$sounds[[2]]
soundgen
## Not run:
# write two formulas or copy-paste them from soundgen_app() or presets:
playback = c(TRUE, FALSE)[1]
# [a] to barking
m = morph(formula1 = list(repeatBout = 2),
# equivalently: formula1 = 'soundgen(repeatBout = 2)',
formula2 = presets$Misc$Dog_bark,
nMorphs = 5, play = playback)
# use $formulas to access formulas for each morph, $sounds for waveforms
# m$formulas[[4]]
# playme(m$sounds[[3]])
# morph intonation and vowel quality
m = morph(
'soundgen(pitch = c(300, 250, 400),
formants = c(350, 2900, 3600, 4700))',
'soundgen(pitch = c(300, 700, 500, 300),
formants = c(800, 1250, 3100, 4500))',
nMorphs = 5, play = playback
)
# from a grunt of disgust to a moan of pleasure
m = morph(
formula1 = 'soundgen(sylLen = 180, pitch = c(160, 160, 120), rolloff = -12,
nonlinBalance = 70, subDep = 15, jitterDep = 2,
formants = c(550, 1200, 2100, 4300, 4700, 6500, 7300),
noise = data.frame(time = c(0, 180, 270), value = c(-20, -20, -30)),
rolloffNoise = 0)',
formula2 = 'soundgen(sylLen = 320, pitch = c(340, 330, 300),
rolloff = c(-18, -16, -30), ampl = c(0, -10), formants = c(950, 1700, 3700),
noise = data.frame(time = c(0, 300, 440), value = c(-25, -15, -35)),
mouth = c(.4, .5), rolloffNoise = -5, attackLen = 30)',
nMorphs = 8, play = playback
)
# from scream_010 to moan_515b
# (see online demos at http://cogsci.se/soundgen/humans/humans.html)
m = morph(
formula1 = "soundgen(
sylLen = 490,
pitch = list(time = c(0, 80, 250, 370, 490),
value = c(1000, 2900, 3200, 2900, 1000)),
rolloff = c(-5, 0, -25), rolloffKHz = 0,
temperature = 0.001,
jitterDep = c(.5, 1, 0), shimmerDep = c(5, 15, 0),
formants = c(1100, 2300, 3100, 4000, 5300, 6200),
mouth = c(.3, .5, .6, .5, .3))",
formula2 = "soundgen(sylLen = 520,
pitch = c(300, 310, 300),
ampl = c(0, -30),
temperature = 0.001, rolloff = c(-18, -25),
jitterDep = .05, shimmerDep = 2,
formants = list(f1 = c(700, 900),
f2 = c(1600, 1400),
f3 = c(3600, 3500), f4 = c(4300, 4200)),
mouth = c(.5, .3),
noise = data.frame(time = c(0, 400, 660),
value = c(-40, -20, -70)),
rolloffNoise = c(-5, -15))",
nMorphs = 5, play = playback
)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.