Imported Upstream version 3.0
[debian/gnuradio] / gnuradio-examples / python / audio / spectrum_inversion.py
1 #!/usr/bin/env python
2 #
3 # Gang - Here's a simple script that demonstrates spectrum inversion
4 # using the multiply by [1,-1] method (mixing with Nyquist frequency).
5 # Requires nothing but a sound card, and sounds just like listening
6 # to a SSB signal on the wrong sideband.
7 #
8
9 from gnuradio import gr
10 from gnuradio import audio
11 from gnuradio.eng_option import eng_option
12 from optparse import OptionParser
13
14 class my_graph(gr.flow_graph):
15
16     def __init__(self):
17         gr.flow_graph.__init__(self)
18
19         parser = OptionParser(option_class=eng_option)
20         parser.add_option("-I", "--audio-input", type="string", default="",
21                           help="pcm input device name.  E.g., hw:0,0 or /dev/dsp")
22         parser.add_option("-O", "--audio-output", type="string", default="",
23                           help="pcm output device name.  E.g., hw:0,0 or /dev/dsp")
24         parser.add_option("-r", "--sample-rate", type="eng_float", default=8000,
25                           help="set sample rate to RATE (8000)")
26         (options, args) = parser.parse_args ()
27         if len(args) != 0:
28             parser.print_help()
29             raise SystemExit, 1
30
31         sample_rate = int(options.sample_rate)
32         src = audio.source (sample_rate, options.audio_input)
33         dst = audio.sink (sample_rate, options.audio_output)
34
35         vec1 = [1, -1]
36         vsource = gr.vector_source_f(vec1, True)
37         multiply = gr.multiply_ff()
38
39         self.connect(src, (multiply, 0))
40         self.connect(vsource, (multiply, 1))
41         self.connect(multiply, dst)
42
43
44 if __name__ == '__main__':
45     try:
46         my_graph().run()
47     except KeyboardInterrupt:
48         pass