[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r5097 - gnuradio/trunk/gr-cvsd-vocoder/src/python
From: |
trondeau |
Subject: |
[Commit-gnuradio] r5097 - gnuradio/trunk/gr-cvsd-vocoder/src/python |
Date: |
Tue, 24 Apr 2007 15:34:28 -0600 (MDT) |
Author: trondeau
Date: 2007-04-24 15:34:27 -0600 (Tue, 24 Apr 2007)
New Revision: 5097
Modified:
gnuradio/trunk/gr-cvsd-vocoder/src/python/cvsd.py
Log:
using LPF taps for interpolator and decimator now and adding documentation to
wrapper class
Modified: gnuradio/trunk/gr-cvsd-vocoder/src/python/cvsd.py
===================================================================
--- gnuradio/trunk/gr-cvsd-vocoder/src/python/cvsd.py 2007-04-24 21:33:42 UTC
(rev 5096)
+++ gnuradio/trunk/gr-cvsd-vocoder/src/python/cvsd.py 2007-04-24 21:34:27 UTC
(rev 5097)
@@ -24,12 +24,26 @@
from gnuradio.vocoder import cvsd_vocoder
class cvsd_encode(gr.hier_block):
- def __init__(self, fg, resample=8):
+ '''
+ This is a wrapper for the CVSD encoder that performs interpolation and
filtering
+ necessary to work with the vocoding. It converts an incoming float (+-1)
to a short, scales
+ it (to 32000; slightly below the maximum value), interpolates it, and then
vocodes it.
+
+ The incoming sampling rate can be anything, though, of course, the higher
the sampling rate and the
+ higher the interpolation rate are, the better the sound quality.
+ '''
+
+ def __init__(self, fg, resample=8, bw=0.5):
+ '''
+ When using the CVSD vocoder, appropriate sampling rates are from 8k to
64k with resampling rates
+ from 1 to 8. A rate of 8k with a resampling rate of 8 provides a good
quality signal.
+ '''
scale_factor = 32000.0
self.interp = resample
src_scale = gr.multiply_const_ff(scale_factor)
- interp = gr.interp_fir_filter_fff(self.interp, self.interp*(1,))
+ taps = gr.firdes.low_pass(self.interp, self.interp, bw, 2*bw)
+ interp = gr.interp_fir_filter_fff(self.interp, taps)
f2s = gr.float_to_short()
enc = cvsd_vocoder.encode_sb()
@@ -38,13 +52,27 @@
class cvsd_decode(gr.hier_block):
- def __init__(self, fg, resample=8):
+ '''
+ This is a wrapper for the CVSD decoder that performs decimation and
filtering
+ necessary to work with the vocoding. It converts an incoming CVSD-encoded
short to a float, decodes it
+ to a float, decimates it, and scales it (by 32000; slightly below the
maximum value to avoid clipping).
+
+ The sampling rate can be anything, though, of course, the higher the
sampling rate and the
+ higher the interpolation rate are, the better the sound quality.
+ '''
+
+ def __init__(self, fg, resample=8, bw=0.5):
+ '''
+ When using the CVSD vocoder, appropriate sampling rates are from 8k to
64k with resampling rates
+ from 1 to 8. A rate of 8k with a resampling rate of 8 provides a good
quality signal.
+ '''
scale_factor = 32000.0
self.decim = resample
dec = cvsd_vocoder.decode_bs()
s2f = gr.short_to_float()
- decim = gr.fir_filter_fff(self.decim, (1,))
+ taps = gr.firdes.low_pass(1, 1, bw, 2*bw)
+ decim = gr.fir_filter_fff(self.decim, taps)
sink_scale = gr.multiply_const_ff(1.0/scale_factor)
fg.connect(dec, s2f, decim, sink_scale)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r5097 - gnuradio/trunk/gr-cvsd-vocoder/src/python,
trondeau <=