# NOT RUN {
# .5 s of white noise
samplingRate = 16000
noise1 = generateNoise(len = samplingRate * .5,
samplingRate = samplingRate)
# playme(noise1, samplingRate)
# seewave::meanspec(noise1, f = samplingRate)
# Percussion (run a few times to notice stochasticity due to temperature = .25)
noise2 = generateNoise(len = samplingRate * .15, noiseAnchors = c(0, -80),
rolloffNoise = c(4, -6), attackLen = 5, temperature = .25)
noise3 = generateNoise(len = samplingRate * .25, noiseAnchors = c(0, -40),
rolloffNoise = c(4, -24), attackLen = 5, temperature = .25)
# playme(c(noise2, noise3), samplingRate)
# }
# NOT RUN {
# 1.2 s of noise with rolloff changing from 0 to -12 dB above 2 kHz
noise = generateNoise(len = samplingRate * 1.2,
rolloffNoise = c(0, -12), noiseFlatSpec = 2000, samplingRate = samplingRate)
# playme(noise, samplingRate = samplingRate)
# spectrogram(noise, samplingRate, osc = TRUE)
# Similar, but using the dataframe format to specify a more complicated
# contour for rolloffNoise:
noise = generateNoise(len = samplingRate * 1.2,
rolloffNoise = data.frame(time = c(0, .2, 1), value = c(-12, 0, -12)),
noiseFlatSpec = 2000, samplingRate = samplingRate)
# playme(noise, samplingRate = samplingRate)
# spectrogram(noise, samplingRate, osc = TRUE)
# To create a sibilant [s], specify a single strong, broad formant at ~7 kHz:
windowLength_points = 1024
filterNoise = soundgen:::getSpectralEnvelope(
nr = windowLength_points / 2, nc = 1, samplingRate = samplingRate,
formants = list('f1' = data.frame(time = 0, freq = 7000,
amp = 50, width = 2000)))
noise = generateNoise(len = samplingRate,
samplingRate = samplingRate, filterNoise = as.numeric(filterNoise))
# plot(filterNoise, type = 'l')
# playme(noise, samplingRate = samplingRate)
# Low-frequency, wind-like noise
filterNoise = soundgen:::getSpectralEnvelope(
nr = windowLength_points / 2, nc = 1, lipRad = 0,
samplingRate = samplingRate, formants = list('f1' = data.frame(
time = 0, freq = 150, amp = 30, width = 90)))
noise = generateNoise(len = samplingRate,
samplingRate = samplingRate, filterNoise = as.numeric(filterNoise))
# playme(noise, samplingRate = samplingRate)
# Manual filter, e.g. for a kettle-like whistle (narrow-band noise)
filterNoise = c(rep(0, 100), 120, rep(0, 100)) # any length is fine
# plot(filterNoise, type = 'b') # notch filter at Nyquist / 2, here 4 kHz
noise = generateNoise(len = samplingRate,
samplingRate = samplingRate, filterNoise = filterNoise)
# playme(noise, samplingRate = samplingRate)
# spectrogram(noise, samplingRate)
# Compare to a similar sound created with soundgen()
# (unvoiced only, a single formant at 4 kHz)
noise_s = soundgen(pitchAnchors = NULL,
noiseAnchors = data.frame(time = c(0, 1000), value = c(0, 0)),
formants = list(f1 = data.frame(freq = 4000, amp = 80, width = 20)))
# playme(noise_s)
# }
Run the code above in your browser using DataLab