summaryrefslogtreecommitdiff
path: root/async_fm_demod.py
diff options
context:
space:
mode:
Diffstat (limited to 'async_fm_demod.py')
-rw-r--r--async_fm_demod.py29
1 files changed, 27 insertions, 2 deletions
diff --git a/async_fm_demod.py b/async_fm_demod.py
index 4c291cd..b7d0da5 100644
--- a/async_fm_demod.py
+++ b/async_fm_demod.py
@@ -1,16 +1,41 @@
import asyncio
+import numpy as np
+import scipy.signal as signal
+
from rtlsdr import RtlSdr
+
async def streaming():
sdr = RtlSdr()
+ sdr.sample_rate = 1800000
+ sdr.center_freq = 91.8e6
+
+ audio = None
+ i = 0
async for samples in sdr.stream():
- print(len(samples), samples[0], type(samples[0]))
+ samples = np.array(samples).astype('complex64')
+ samples = signal.decimate(samples, int(1800000 / 200000))
+ samples = np.angle(samples[1:] * np.conj(samples[:-1]))
+ samples = signal.decimate(samples, int(200000 / 44100))
+ samples *= 10000
- await sdr.stop()
+ if audio is not None:
+ audio = np.append(audio, samples.astype('int16'))
+ else:
+ audio = samples.astype('int16')
+ i += 1
+ if i > 200:
+ break
+ else:
+ print(len(audio))
+
+ audio.tofile('test.out')
+ await sdr.stop()
sdr.close()
+
loop = asyncio.get_event_loop()
loop.run_until_complete(streaming())