diff options
| author | Yuval Adam <_@yuv.al> | 2018-04-12 13:49:07 +0300 |
|---|---|---|
| committer | Yuval Adam <_@yuv.al> | 2018-04-12 13:49:07 +0300 |
| commit | 68305b68dce9be5d6cb267cb3a67c544f7aa86bb (patch) | |
| tree | c54c635f0c090d83a59bf4bf4fef5eee21e7f31a | |
| parent | 85b9d43dda8404f2a13be60e04e1edb6618a09a9 (diff) | |
Async fm demod sorta working
| -rw-r--r-- | async_fm_demod.py | 29 |
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()) |
