synth {seewave}R Documentation

Synthesis of time wave

Description

This functions synthesize pure tone sound with amplitude modulation (am) and/or frequency modulation (fm).

Usage

synth(f, d, cf, a = 1, p = 0, am = c(0, 0), fm = c(0, 0, 0),
plot = FALSE, wl = 512, ovlp = 50, play = FALSE,...)

Arguments

f sampling frequency (in Hz).
d duration (in s).
cf carrier frequency (in Hz).
a amplitude (linear scale, relative when adding different waves).
p phase (in radians).
am a vector of length 2 describing amplitude modulation parameters, see details.
fm a vector of length 3 describing frequency modulation parameters, see details.
plot if TRUE returns the spectrogram of the synthezised sound (by default FALSE).
wl if plot is TRUE, length of the window for the spectrographic analysis (even number of points).
ovlp if plot is TRUE, overlap between two successive windows of the spectrographic analysis (in %).
play if TRUE the new sound is played back using play from the package Sound (by default FALSE).
... other spectro graphical parameters.

Details

am is a vector of length 2 including: (1) the amplitude modulation depth (in %), (2) the frequency of the amplitude modulation.

fm is a vector of length 3 including:
(1) the maximum excursion of a sinusoidal frequency modulation (in Hz),
(2) the frequency of a sinusoidal frequency modulation,
(3) the maximum excursion of a linear frequency modulation (in Hz).

Value

If plot is FALSE, synth returns a one-column matrix describing the sound synthesized.

Author(s)

Jérôme Sueur jerome.sueur@univ-tours.fr, Thierry Aubin thierry.aubin@ibaic.u-psud.fr and Caroline Simonis-Sueur csimonis@mnhn.fr.

References

Hartmann, W. M. 1998 Signals, sound and sensation. New York: Springer.

See Also

noise, pulse

Examples

# pure tone
synth(f=22050,d=1,cf=4000,plot=TRUE)
# pure tones with am
synth(f=22050,d=1,cf=4000,am=c(50,10),plot=TRUE,osc=TRUE)
# pure tone with +2000 Hz linear fm 
synth(f=22050,d=1,cf=4000,fm=c(0,0,2000),plot=TRUE)
# pure tone with sinusoidal fm
# (maximum excursion of 1000 Hz, frequency of 10 Hz)
synth(f=22050,d=1,cf=4000,fm=c(1000,10,0),plot=TRUE,wl=256,ovlp=75)
# pure tone with sinusoidal am
# (maximum excursion of 1000 Hz, frequency of 10 Hz)
# and linear fm (maximum excurion of 1000 Hz
synth(f=22050,d=1,cf=4000,fm=c(1000,10,1000),plot=TRUE,wl=256,ovlp=75)
# the same with am
synth(f=22050,d=1,cf=4000,am=c(50,10),
    fm=c(1000,10,1000),plot=TRUE,wl=256,ovlp=75,osc=TRUE)
# more complex sound
F1<-synth(f=22050,cf=2000,d=1,fm=c(500,5,0),plot=FALSE)
F2<-synth(f=22050,a=0.8,cf=4000,d=1,fm=c(500,5,0))
F3<-synth(f=22050,a=0.6,cf=6000,d=1,fm=c(500,5,0))
F4<-synth(f=22050,a=0.4,cf=8000,d=1,fm=c(500,5,0))
final1<-F1+F2+F3+F4
spectro(final1,f=22050,wl=512,ovlp=75,scale=FALSE)
# insert 0.25 s silence
final1.1<-as.matrix(final1[1:(nrow(final1)/2),])
final1.2<-as.matrix(rep(0,0.25*22050))
final1.3<-as.matrix(final1[(nrow(final1)/2):nrow(final1),])
final2<-rbind(final1.1,final1.2,final1.3)
spectro(final2,f=22050,plot=TRUE,wl=512,ovlp=75,scale=FALSE)

[Package seewave version 1.4.2 Index]