Internal soundgen function.
.modulationSpectrum(
audio,
specSource = c("STFT", "audSpec")[1],
windowLength = 15,
step = 1,
wn = "hanning",
zp = 0,
audSpec_pars = list(filterType = "butterworth", nFilters = 32, bandwidth = 1/24, yScale
= "bark", dynamicRange = 120),
msType = c("1D", "2D")[2],
amRes = 5,
maxDur = 5,
specMethod = c("spec", "meanspec")[2],
logSpec = FALSE,
logMPS = FALSE,
power = 1,
normalize = TRUE,
roughRange = c(30, 150),
roughMean = NULL,
roughSD = NULL,
roughMinFreq = 1,
amRange = c(10, 200),
returnMS = TRUE,
returnComplex = FALSE,
plot = TRUE,
savePlots = NULL,
logWarpX = NULL,
logWarpY = NULL,
quantiles = c(0.5, 0.8, 0.9),
kernelSize = 5,
kernelSD = 0.5,
colorTheme = c("bw", "seewave", "heat.colors", "...")[1],
col = NULL,
main = NULL,
xlab = "Hz",
ylab = "1/kHz",
xlim = NULL,
ylim = NULL,
width = 900,
height = 500,
units = "px",
res = NA,
...
)
a list returned by readAudio
'STFT' = Short-Time Fourier Transform; 'audSpec' = a bank
of bandpass filters (see audSpectrogram
)
parameters for extracting a spectrogram if
specType = 'STFT'
. Window length and step are specified in ms (see
spectrogram
). If specType = 'audSpec'
, these settings
have no effect
parameters for extracting an auditory spectrogram if
specType = 'audSpec'
. If specType = 'STFT'
, these settings
have no effect
'2D' = two-dimensional Fourier transform of a spectrogram; '1D' = separately calculated spectrum of each frequency band
target resolution of amplitude modulation, Hz. If NULL
,
the entire sound is analyzed at once, resulting in a single roughness value
(unless it is longer than maxDur
, in which case it is analyzed in
chunks maxDur
s long). If amRes
is set, roughness is
calculated for windows ~1000/amRes
ms long (but at least 3 STFT
frames). amRes
also affects the amount of smoothing when calculating
amMsFreq
and amMsPurity
sounds longer than maxDur
s are split into fragments,
and the modulation spectra of all fragments are averaged
the function to call when calculating the spectrum of each
frequency band (only used when msType = '1D'
); 'meanspec' is faster
and less noisy, whereas 'spec' produces higher resolution
if TRUE, the spectrogram is log-transformed prior to taking 2D FFT
if TRUE, the modulation spectrum is log-transformed prior to calculating roughness
raise modulation spectrum to this power (eg power = 2 for ^2, or "power spectrum")
if TRUE, the modulation spectrum of each analyzed fragment
maxDur
in duration is separately normalized to have max = 1
the range of temporal modulation frequencies that constitute the "roughness" zone, Hz
the mean (Hz) and standard deviation (semitones) of
a lognormal distribution used to weight roughness estimates. If either is
null, roughness is calculated simply as the proportion of spectrum within
roughRange
. If both roughMean
and roughRange
are
defined, weights outside roughRange
are set to 0; a very large SD (a
flat weighting function) gives the same result as just roughRange
without any weighting (see examples)
frequencies below roughMinFreq (Hz) are ignored when calculating roughness (ie the estimated roughness increases if we disregard very low-frequency modulation, which is often strong)
the range of temporal modulation frequencies that we are interested in as "amplitude modulation" (AM), Hz
if FALSE, only roughness is returned (much faster). Careful with exporting the modulation spectra of a lot of sounds at once as this requires a lot of RAM
if TRUE, returns a complex modulation spectrum (without normalization and warping)
if TRUE, plots the modulation spectrum of each sound (see
plotMS
)
if a valid path is specified, a plot is saved in this folder (defaults to NA)
numeric vector of length 2: c(sigma, base) of pseudolog-warping the modulation spectrum, as in function pseudo_log_trans() from the "scales" package
labeled contour values, % (e.g., "50" marks regions that contain 50% of the sum total of the entire modulation spectrum)
the size of Gaussian kernel used for smoothing (1 = no smoothing)
the SD of Gaussian kernel used for smoothing, relative to its size
black and white ('bw'), as in seewave package ('seewave'),
matlab-type palette ('matlab'), or any palette from
palette
such as 'heat.colors', 'cm.colors', etc
actual colors, eg rev(rainbow(100)) - see ?hcl.colors for colors in base R (overrides colorTheme)
graphical parameters
parameters passed to
png
if the plot is saved
other graphical parameters passed on to filled.contour.mod
and contour
(see spectrogram
)