tomwalters@0: % method of class @signal tomwalters@0: % function sig=genfm(sig,fc,f_mod,modindex,amplitude) tomwalters@0: % tomwalters@0: % INPUT VALUES: tomwalters@0: % sig: original @signal with length and samplerate tomwalters@0: % fc: carrier frequency (Hz) tomwalters@0: % fmod: modulation frequency (Hz) tomwalters@0: % modindex: modulation index b = tomwalters@0: % maximum carrier frequency deviation / modulation frequency tomwalters@0: % tomwalters@0: % modulation depth = modulation index * modulation_frequency / carrier frequency tomwalters@0: % modulation index = modulation_frequency * carrier frequency/100/modulation_depth; tomwalters@0: tomwalters@0: % tomwalters@0: % RETURN VALUE: tomwalters@0: % sig: @signal tomwalters@0: % bleeck@3: % This external file is included as part of the 'aim-mat' distribution package bleeck@3: % (c) 2011, University of Southampton bleeck@3: % Maintained by Stefan Bleeck (bleeck@gmail.com) bleeck@3: % download of current version is on the soundsoftware site: bleeck@3: % http://code.soundsoftware.ac.uk/projects/aimmat bleeck@3: % documentation and everything is on http://www.acousticscale.org bleeck@3: tomwalters@0: tomwalters@0: function sig=genfm(sig,fc,f_mod,modindex,amplitude) tomwalters@0: tomwalters@0: if nargin<5 tomwalters@0: amplitude=1; tomwalters@0: end tomwalters@0: if nargin<4 tomwalters@0: modindex=0.1; tomwalters@0: end tomwalters@0: if nargin<3 tomwalters@0: f_mod=100; tomwalters@0: end tomwalters@0: if nargin<2 tomwalters@0: fc=1000; tomwalters@0: end tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: sr=getsr(sig); tomwalters@0: len=getlength(sig); tomwalters@0: tomwalters@0: d=getvalues(sig); tomwalters@0: d=zeros(size(d)); tomwalters@0: tomwalters@0: t=0:1/sr:len-1/sr; tomwalters@0: tomwalters@0: fm=amplitude*cos(2*pi*fc.*t + modindex*sin(2*pi*f_mod.*t)); tomwalters@0: tomwalters@0: sig=setvalues(sig,fm); tomwalters@0: tomwalters@0: tomwalters@0: % f1=fc-f_mod; tomwalters@0: % f2=fc; tomwalters@0: % f3=fc+f_mod; tomwalters@0: % sin1=sinus(len,sr,f1,modgrad/2,0); tomwalters@0: % sin2=sinus(len,sr,f2,1,0); tomwalters@0: % sin3=sinus(len,sr,f3,modgrad/2,0); tomwalters@0: % sig=sin1; tomwalters@0: % sig=sig+sin2; tomwalters@0: % sig=sig+sin3; tomwalters@0: tomwalters@0: name=sprintf('FM: modulation: %3.1f Hz, carrier: %4.1f kHz, mod index: %2.1f',f_mod,fc/1000,modindex); tomwalters@0: sig=setname(sig,name); tomwalters@0: % sig=scaletomaxvalue(sig,1); tomwalters@0: % sig=RampAmplitude(sig,0.01); % baue eine Rampe tomwalters@0: