1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
|
{
"cells": [
{
"cell_type": "code",
"execution_count": 17,
"id": "82d2268f-fc34-4860-82b8-d69ac0d11cb5",
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"\n",
"import math\n",
"import numpy as np\n",
"import matplotlib\n",
"import matplotlib.pylab as pylab\n",
"import matplotlib.pyplot as plot\n",
"import scipy.fftpack\n",
"from scipy.signal import butter,filtfilt\n",
"import wave\n",
"import struct"
]
},
{
"cell_type": "markdown",
"id": "6a1035aa-9c97-4c53-9acb-f0e446f6aa5c",
"metadata": {},
"source": [
"# Helper functions to draw fft"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "c4dcfa96-7280-48bc-9d73-70eb402d3cc5",
"metadata": {},
"outputs": [],
"source": [
"#some util for fft\n",
"def draw_fft(signal,title=\"just FFT\"):\n",
" len_signal = len(signal)\n",
" yfft = scipy.fftpack.fft(signal)\n",
" xf = np.linspace(0.0, 1.0/(2.0*(1.0/len_signal)), len_signal//2)\n",
" #plot.plot(xf,2.0/len(signal) * np.abs(yfft[:len(signal)//2]))\n",
" plot.plot(xf,2.0/len_signal * np.abs(yfft[:len_signal//2]))\n",
" plot.title(title)\n",
" plot.show()\n",
"\n",
"def plot_signal(signal,title=\"signal SIMPLE\"):\n",
" xf = np.linspace(0.0,1.0,len(signal))\n",
" plot.plot(xf,signal)\n",
" plot.title(title)\n",
" plot.show()"
]
},
{
"cell_type": "markdown",
"id": "d0c746d3-7ab8-48f0-870f-76e9c195f975",
"metadata": {},
"source": [
"# Modulate FM function"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "f31902e2-46ab-4cab-939c-91c7b7ebac49",
"metadata": {},
"outputs": [],
"source": [
"def mod_fm(amplitude, signal, fc, fdev, samplerate):\n",
" modulated = []\n",
" \n",
" start = 0.0\n",
" for i in range(0,len(signal)):\n",
" #recalculate freq step each signal level\n",
" signal_fdev = fdev*signal[i]\n",
" sample_per_hz = 1.0*samplerate/(fc+signal_fdev)\n",
" hz_step = 2*math.pi/sample_per_hz\n",
" \n",
" \n",
" #carrier = math.cos(start)\n",
" modulated.append(amplitude*math.cos(start))\n",
" #modulated.append(amplitude*carrier)\n",
" start+=hz_step\n",
" return modulated\n",
"\n",
"def generate_sin(amplitude,freq,samplerate,samplenum, noise=True):\n",
" ret = []\n",
" gausian = []\n",
" sample_per_hz = 1.0*samplerate/freq\n",
" hz_step = 2*math.pi/sample_per_hz\n",
" start = 0.0\n",
" if noise:\n",
" gausian = np.random.normal(0,0.1,samplenum)\n",
" for i in range(0,samplenum):\n",
" if noise:\n",
" ret.append(amplitude*math.cos(start)+gausian[i])\n",
" else:\n",
" ret.append(amplitude*math.cos(start))\n",
" start += hz_step\n",
" return ret"
]
},
{
"cell_type": "markdown",
"id": "490deecd-b6d4-4208-ae1c-fdb814c3ce78",
"metadata": {},
"source": [
"# Low pass filter from scipy"
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "f509d234-e576-486b-b142-f6633e7f53a8",
"metadata": {},
"outputs": [],
"source": [
"def lpf_filter(signal):\n",
" sos = signal.butter(10, 150, 'low', fs=1000, output='sos')\n",
" return signal.sosfilt(sos, signal)"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "f47bd25a-4c06-4ef3-80df-372a9635acc4",
"metadata": {},
"outputs": [],
"source": [
"def output_wav(fname,signal,samplerate=48000,channel=1):\n",
" wav = wave.open(fname,\"w\")\n",
" wav.setnchannels(channel)\n",
" wav.setframerate(samplerate)\n",
" wav.setsampwidth(2)\n",
" # assume datat -1...+1\n",
" for data in signal:\n",
" conv = struct.pack(\"<h\",int(data*32767))\n",
" wav.writeframesraw(conv)\n",
" if channel==2:\n",
" struct.pack(\"<h\",int(0))\n",
" wav.writeframesraw(struct.pack(\"<h\",int(0)))\n",
" wav.close()\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "004116eb-0a1b-423d-b41b-dd7d5ded2869",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"signal samples 40000\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"signal = generate_sin(0.5, 100, 40000, 40000, False)\n",
"print(\"signal samples\", len(signal))\n",
"plot_signal(signal[0:10000])\n",
"draw_fft(signal)"
]
},
{
"cell_type": "markdown",
"id": "ac3146e2-b41d-4462-ab91-d497a78dc90c",
"metadata": {},
"source": [
"# Modulate FM"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "17d8234a-7016-490f-b405-5c71dd1cce0b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"samples modulated = 40000\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fm_mod = mod_fm(0.5,signal, 10000, 500, 40000)\n",
"print(\"samples modulated = \",len(fm_mod))\n",
"plot_signal(fm_mod[0:1000])\n",
"draw_fft(fm_mod)"
]
},
{
"cell_type": "markdown",
"id": "d12c8ddf-ce88-43d7-9518-74e8627ff232",
"metadata": {},
"source": [
"# Output fm modulated signal to wav"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "533bee02-a968-4c6c-b884-5f0d9fae965f",
"metadata": {},
"outputs": [],
"source": [
"# fname,signal,samplerate=48000,channel=1\n",
"output_wav(\"LoadFM.wav\",fm_mod,samplerate=40000,channel=2)"
]
},
{
"cell_type": "markdown",
"id": "1da9a01f-2e89-42d9-90f9-12d2d705d4c9",
"metadata": {},
"source": [
"# Filter signal, demodulation of FM"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "6a37742f-8f31-46f3-83ce-e08b9a558bca",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fm_demod = generate_sin(1.0, 10000, 40000, len(fm_mod), False)\n",
"for i in range(0,len(fm_demod)):\n",
" fm_demod[i] = fm_demod[i]*fm_mod[i]\n",
"plot_signal(fm_demod[0:1000])\n",
"draw_fft(fm_demod)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f975bba7-21ec-4a56-8b8a-f00e99c5055d",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
|