summaryrefslogtreecommitdiff
path: root/numpy_fm_demod.py
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2018-04-05 12:41:18 +0300
committerYuval Adam <_@yuv.al>2018-04-05 12:41:18 +0300
commit02532c581e0a05c23cc4cae59e12191890803f11 (patch)
treed326c31bce673979472bd5db577fb63ac4ac74c5 /numpy_fm_demod.py
parente9a4e0abb625cc0f65be62e8cab148d3d0c639cb (diff)
WIP
Diffstat (limited to 'numpy_fm_demod.py')
-rw-r--r--numpy_fm_demod.py17
1 files changed, 11 insertions, 6 deletions
diff --git a/numpy_fm_demod.py b/numpy_fm_demod.py
index f689064..bb577b9 100644
--- a/numpy_fm_demod.py
+++ b/numpy_fm_demod.py
@@ -24,6 +24,10 @@ class NumpyFmDemod():
self.samples = sdr.read_samples(self.sample_count)
sdr.close()
+ def load_samples(self, filename):
+ with open(filename, 'rb') as f:
+ self.samples = f.read()
+
def samples_to_np(self):
'''
Convert samples to a complex numpy array
@@ -44,7 +48,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 /= dec_rate
+ self.sample_rate /= decimation_rate
def polar_discriminator(self):
'''
@@ -68,8 +72,8 @@ class NumpyFmDemod():
'''
audio_freq = 44100.0
decimation_rate = int(self.sample_rate / audio_freq)
- audio_rate = self.sample_rate / decimation_rate
self.samples = signal.decimate(self.samples, decimation_rate)
+ self.sample_rate /= decimation_rate
def scale_volume(self):
'''
@@ -80,8 +84,7 @@ class NumpyFmDemod():
def output_file(self, filename):
self.samples.astype('int16').tofile(filename)
- def run(self):
- self.capture_samples()
+ def demod(self):
self.samples_to_np()
self.mix_down_dc_offset()
self.lowpass_filter()
@@ -89,8 +92,10 @@ class NumpyFmDemod():
self.de_emphasis_filter()
self.mono_decimate()
self.scale_volume()
- self.output_file()
if __name__ == '__main__':
nfd = NumpyFmDemod(frequency=96.3e6)
- nfd.run()
+ nfd.capture_samples()
+ #nfd.load_samples('963fm.out')
+ nfd.demod()
+ nfd.output_file('wbfm-mono.raw')