tomwalters@0
|
1 % method of class @signal
|
tomwalters@0
|
2 % function sig=genfm(sig,fc,f_mod,modindex,amplitude)
|
tomwalters@0
|
3 %
|
tomwalters@0
|
4 % INPUT VALUES:
|
tomwalters@0
|
5 % sig: original @signal with length and samplerate
|
tomwalters@0
|
6 % fc: carrier frequency (Hz)
|
tomwalters@0
|
7 % fmod: modulation frequency (Hz)
|
tomwalters@0
|
8 % modindex: modulation index b =
|
tomwalters@0
|
9 % maximum carrier frequency deviation / modulation frequency
|
tomwalters@0
|
10 %
|
tomwalters@0
|
11 % modulation depth = modulation index * modulation_frequency / carrier frequency
|
tomwalters@0
|
12 % modulation index = modulation_frequency * carrier frequency/100/modulation_depth;
|
tomwalters@0
|
13
|
tomwalters@0
|
14 %
|
tomwalters@0
|
15 % RETURN VALUE:
|
tomwalters@0
|
16 % sig: @signal
|
tomwalters@0
|
17 %
|
bleeck@3
|
18 % This external file is included as part of the 'aim-mat' distribution package
|
bleeck@3
|
19 % (c) 2011, University of Southampton
|
bleeck@3
|
20 % Maintained by Stefan Bleeck (bleeck@gmail.com)
|
bleeck@3
|
21 % download of current version is on the soundsoftware site:
|
bleeck@3
|
22 % http://code.soundsoftware.ac.uk/projects/aimmat
|
bleeck@3
|
23 % documentation and everything is on http://www.acousticscale.org
|
bleeck@3
|
24
|
tomwalters@0
|
25
|
tomwalters@0
|
26 function sig=genfm(sig,fc,f_mod,modindex,amplitude)
|
tomwalters@0
|
27
|
tomwalters@0
|
28 if nargin<5
|
tomwalters@0
|
29 amplitude=1;
|
tomwalters@0
|
30 end
|
tomwalters@0
|
31 if nargin<4
|
tomwalters@0
|
32 modindex=0.1;
|
tomwalters@0
|
33 end
|
tomwalters@0
|
34 if nargin<3
|
tomwalters@0
|
35 f_mod=100;
|
tomwalters@0
|
36 end
|
tomwalters@0
|
37 if nargin<2
|
tomwalters@0
|
38 fc=1000;
|
tomwalters@0
|
39 end
|
tomwalters@0
|
40
|
tomwalters@0
|
41
|
tomwalters@0
|
42
|
tomwalters@0
|
43 sr=getsr(sig);
|
tomwalters@0
|
44 len=getlength(sig);
|
tomwalters@0
|
45
|
tomwalters@0
|
46 d=getvalues(sig);
|
tomwalters@0
|
47 d=zeros(size(d));
|
tomwalters@0
|
48
|
tomwalters@0
|
49 t=0:1/sr:len-1/sr;
|
tomwalters@0
|
50
|
tomwalters@0
|
51 fm=amplitude*cos(2*pi*fc.*t + modindex*sin(2*pi*f_mod.*t));
|
tomwalters@0
|
52
|
tomwalters@0
|
53 sig=setvalues(sig,fm);
|
tomwalters@0
|
54
|
tomwalters@0
|
55
|
tomwalters@0
|
56 % f1=fc-f_mod;
|
tomwalters@0
|
57 % f2=fc;
|
tomwalters@0
|
58 % f3=fc+f_mod;
|
tomwalters@0
|
59 % sin1=sinus(len,sr,f1,modgrad/2,0);
|
tomwalters@0
|
60 % sin2=sinus(len,sr,f2,1,0);
|
tomwalters@0
|
61 % sin3=sinus(len,sr,f3,modgrad/2,0);
|
tomwalters@0
|
62 % sig=sin1;
|
tomwalters@0
|
63 % sig=sig+sin2;
|
tomwalters@0
|
64 % sig=sig+sin3;
|
tomwalters@0
|
65
|
tomwalters@0
|
66 name=sprintf('FM: modulation: %3.1f Hz, carrier: %4.1f kHz, mod index: %2.1f',f_mod,fc/1000,modindex);
|
tomwalters@0
|
67 sig=setname(sig,name);
|
tomwalters@0
|
68 % sig=scaletomaxvalue(sig,1);
|
tomwalters@0
|
69 % sig=RampAmplitude(sig,0.01); % baue eine Rampe
|
tomwalters@0
|
70
|