]> git.gag.com Git - debian/gnuradio/blob - gr-cvsd-vocoder/src/python/cvsd.py
merged developer branch trondeau/cvsd -r4801:4904 to add CVSD vocoder and example...
[debian/gnuradio] / gr-cvsd-vocoder / src / python / cvsd.py
1 #!/usr/bin/env python
2 #
3 # Copyright 2007 Free Software Foundation, Inc.
4
5 # This file is part of GNU Radio
6
7 # GNU Radio is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 2, or (at your option)
10 # any later version.
11
12 # GNU Radio is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 # GNU General Public License for more details.
16
17 # You should have received a copy of the GNU General Public License
18 # along with GNU Radio; see the file COPYING.  If not, write to
19 # the Free Software Foundation, Inc., 51 Franklin Street,
20 # Boston, MA 02110-1301, USA.
21
22
23 from gnuradio import gr
24 from gnuradio.vocoder import cvsd_vocoder
25
26 class cvsd_encode(gr.hier_block):
27     def __init__(self, fg, resample=8):
28         scale_factor = 32000.0
29         self.interp = resample
30
31         src_scale = gr.multiply_const_ff(scale_factor)
32         interp = gr.interp_fir_filter_fff(self.interp, self.interp*(1,))
33         f2s = gr.float_to_short()
34         enc = cvsd_vocoder.encode_sb()
35
36         fg.connect(src_scale, interp, f2s, enc)
37         gr.hier_block.__init__(self, fg, src_scale, enc)
38
39
40 class cvsd_decode(gr.hier_block):
41     def __init__(self, fg, resample=8):
42         scale_factor = 32000.0
43         self.decim = resample
44
45         dec = cvsd_vocoder.decode_bs()
46         s2f = gr.short_to_float()
47         decim = gr.fir_filter_fff(self.decim, (1,))
48         sink_scale = gr.multiply_const_ff(1.0/scale_factor)
49
50         fg.connect(dec, s2f, decim, sink_scale)
51         gr.hier_block.__init__(self, fg, dec, sink_scale)
52