summaryrefslogtreecommitdiff
path: root/numpy_fm_demod.py
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2018-04-05 16:14:52 +0300
committerYuval Adam <_@yuv.al>2018-04-05 16:14:52 +0300
commit5211b5d543bbdad6e5de54e4a46302c3d4f2d01f (patch)
tree9f56618d31c2b5552cdb4226e99bb56f75f132aa /numpy_fm_demod.py
parent02532c581e0a05c23cc4cae59e12191890803f11 (diff)
Final usage works
Diffstat (limited to 'numpy_fm_demod.py')
-rw-r--r--numpy_fm_demod.py16
1 files changed, 9 insertions, 7 deletions
diff --git a/numpy_fm_demod.py b/numpy_fm_demod.py
index bb577b9..9d4be21 100644
--- a/numpy_fm_demod.py
+++ b/numpy_fm_demod.py
@@ -10,7 +10,7 @@ class NumpyFmDemod():
Based on the great tutorial by Fraida Fund
https://witestlab.poly.edu/blog/capture-and-decode-fm-radio/
'''
- def __init__(self, frequency, sample_rate=1140000, sample_count=8192000, dc_offset=250000):
+ def __init__(self, frequency, sample_rate=1800000, sample_count=8192000, dc_offset=250000):
self.freq = int(frequency)
self.sample_rate = sample_rate
self.sample_count = sample_count
@@ -28,6 +28,10 @@ class NumpyFmDemod():
with open(filename, 'rb') as f:
self.samples = f.read()
+ def decimate(self, rate):
+ self.samples = signal.decimate(self.samples, rate)
+ self.sample_rate /= rate
+
def samples_to_np(self):
'''
Convert samples to a complex numpy array
@@ -47,8 +51,7 @@ class NumpyFmDemod():
'''
BANDWIDTH = 200000 # wideband FM signal is always 200kHz
decimation_rate = int(self.sample_rate / BANDWIDTH)
- self.samples = signal.decimate(self.samples, decimation_rate)
- self.sample_rate /= decimation_rate
+ self.decimate(decimation_rate)
def polar_discriminator(self):
'''
@@ -72,8 +75,7 @@ class NumpyFmDemod():
'''
audio_freq = 44100.0
decimation_rate = int(self.sample_rate / audio_freq)
- self.samples = signal.decimate(self.samples, decimation_rate)
- self.sample_rate /= decimation_rate
+ self.decimate(decimation_rate)
def scale_volume(self):
'''
@@ -94,8 +96,8 @@ class NumpyFmDemod():
self.scale_volume()
if __name__ == '__main__':
- nfd = NumpyFmDemod(frequency=96.3e6)
+ nfd = NumpyFmDemod(frequency=91.8e6)
nfd.capture_samples()
#nfd.load_samples('963fm.out')
nfd.demod()
- nfd.output_file('wbfm-mono.raw')
+ nfd.output_file(f'wbfm-mono-{nfd.sample_rate}.raw')