diff options
| author | Yuval Adam <_@yuv.al> | 2018-04-12 14:28:41 +0300 |
|---|---|---|
| committer | Yuval Adam <_@yuv.al> | 2018-04-12 14:28:41 +0300 |
| commit | 9bbdcccff05ad4e955b323dc3cd61fbe57808a55 (patch) | |
| tree | 8534a742d9f751ae81242fd57658e395813a9f08 | |
| parent | 02b3687f41d8f0c265c2d641e40973a1b203f701 (diff) | |
Choppy py alsa audio
| -rw-r--r-- | async_fm_demod.py | 23 | ||||
| -rw-r--r-- | requirements.txt | 1 |
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 |
