diff options
Diffstat (limited to 'gnuradio-examples/python/audio/dialtone_v.py')
-rwxr-xr-x | gnuradio-examples/python/audio/dialtone_v.py | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/gnuradio-examples/python/audio/dialtone_v.py b/gnuradio-examples/python/audio/dialtone_v.py new file mode 100755 index 000000000..e704414a9 --- /dev/null +++ b/gnuradio-examples/python/audio/dialtone_v.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python + +# Copyright 2006 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# GNU Radio is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. +# + +from gnuradio import gr, audio +from math import pi, sin + +""" +This test script demonstrates the use of element-wise vector processing +vs. stream processing. The example is artificial in that the stream +version in dial_tone.py is the normal way to do it; in addition, the +envelope processing here is just for demo purposes and isn't needed. +""" + +# For testing different buffer sizes +rate = 48000 + +fg = gr.flow_graph() + +# Two streams of floats +a = gr.sig_source_f(rate, gr.GR_SIN_WAVE, 350, 0.5, 0.0); +b = gr.sig_source_f(rate, gr.GR_SIN_WAVE, 440, 0.5, 0.0); + +# Turn them into vectors of length 'size' +av = gr.stream_to_vector(gr.sizeof_float, rate) +bv = gr.stream_to_vector(gr.sizeof_float, rate) + +# Make a vector adder for float vectors +adder = gr.add_vff(rate) + +# Make a 1 Hz sine envelope +envelope = [sin(2*pi*x/rate)*0.5 for x in range(rate)] +multiplier = gr.multiply_const_vff(envelope) + +# Make an offset adder +offset = gr.add_const_vff((0.5,)*rate) + +# Turn the vector back into a stream of floats +result = gr.vector_to_stream(gr.sizeof_float, rate) + +# Play it +sink = audio.sink(rate) + +fg.connect(a, av) +fg.connect(b, bv) +fg.connect(av, (adder, 0)) +fg.connect(bv, (adder, 1)) +fg.connect(adder, multiplier, offset, result, sink) + +try: + fg.run() +except KeyboardInterrupt: + pass |