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.
morph(
formula1,
formula2,
nMorphs,
playMorphs = TRUE,
savePath = NA,
samplingRate = 16000
)
formula1 , formula2 |
lists of parameters for calling
|
nMorphs |
the number of morphs to produce, including target sounds |
playMorphs |
if TRUE, the morphs will be played |
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 of two sublists ($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)[2]
# [a] to barking
m = morph(formula1 = list(repeatBout = 2),
# equivalently: formula1 = 'soundgen(repeatBout = 2)',
formula2 = presets$Misc$Dog_bark,
nMorphs = 5, playMorphs = 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, playMorphs = 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(-25, -25, -40)),
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(-35, -25, -65)),
mouth = c(.4, .5), rolloffNoise = -5, attackLen = 30)',
nMorphs = 8, playMorphs = 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(-20, -10, -60)),
rolloffNoise = c(-5, -15))",
nMorphs = 5, playMorphs = playback
)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.