summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--async_fm_demod.py23
-rw-r--r--requirements.txt1
2 files changed, 10 insertions, 14 deletions
diff --git a/async_fm_demod.py b/async_fm_demod.py
index 8b4aa9e..e89559d 100644
--- a/async_fm_demod.py
+++ b/async_fm_demod.py
@@ -1,18 +1,23 @@
import asyncio
+import alsaaudio
import numpy as np
import scipy.signal as signal
from rtlsdr import RtlSdr
+device = alsaaudio.PCM(alsaaudio.PCM_PLAYBACK, device='default')
+device.setchannels(1)
+device.setrate(50000)
+device.setformat(alsaaudio.PCM_FORMAT_S16_LE)
+device.setperiodsize(5520)
+
+
async def streaming():
sdr = RtlSdr()
sdr.sample_rate = 1.2e6
sdr.center_freq = 91.8e6
- audio = None
- i = 0
-
async for samples in sdr.stream():
samples = np.array(samples).astype('complex64')
samples = signal.decimate(samples, int(1.2e6 / 200e3))
@@ -24,18 +29,8 @@ async def streaming():
samples = signal.decimate(samples, int(200e3 / 50e3))
samples *= 10000
- if audio is not None:
- audio = np.append(audio, samples.astype('int16'))
- else:
- audio = samples.astype('int16')
-
- i += 1
- if i > 100:
- break
- else:
- print(len(audio))
+ device.write(samples.astype('int16'))
- audio.tofile('test.out')
await sdr.stop()
sdr.close()
diff --git a/requirements.txt b/requirements.txt
index b4dc1f9..e5912c5 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -28,6 +28,7 @@ pexpect==4.4.0
pickleshare==0.7.4
prompt-toolkit==1.0.15
ptyprocess==0.5.2
+pyalsaaudio==0.8.4
Pygments==2.2.0
pyparsing==2.2.0
pyrtlsdr==0.2.7