Dial_Tone Block


from gnuradio import gr      
from gnuradio import audio
from gnuradio.eng_option import eng_option
from optparse import OptionParser

# Same as include in C++ , Used to include libraries
# gr is the basic library (GNURadio)
# audio library is included because we are using soundcard
# ignore other two

try:
    from gnuradio import analog
except ImportError:
    sys.stderr.write("Error: Program requires gr-analog.\n")
    sys.exit(1)

# This block is exception handling Ignore it too

class my_top_block(gr.top_block):

    def __init__(self):
        gr.top_block.__init__(self)

        parser = OptionParser(option_class=eng_option)
        parser.add_option("-O", "--audio-output", type="string", default="",
                          help="pcm output device name.  E.g., hw:0,0 or /dev/dsp")
        parser.add_option("-r", "--sample-rate", type="eng_float", default=48000,
                          help="set sample rate to RATE (48000)")
        (options, args) = parser.parse_args()
        if len(args) != 0:
            parser.print_help()
            raise SystemExit, 1

# Ignore the above code. The only important thing is default which will set sample_rate

        sample_rate = int(options.sample_rate)
        ampl = 0.1

        src0 = analog.sig_source_f(sample_rate, analog.GR_SIN_WAVE, 350, ampl)
        src1 = analog.sig_source_f(sample_rate, analog.GR_SIN_WAVE, 440, ampl)

# Two Sinusoidal audio sources are created with frequency 350 and 440 and amplitude of 0.1 sampled at 48000
 
        dst = audio.sink(sample_rate, options.audio_output)
        self.connect(src0, (dst, 0))
        self.connect(src1, (dst, 1))

# An audio sink is created with same sample rate (48000) and source0 the sine wave of freq 350 is connected to destination0 of sink. Similarly  source1 of freq 440 is connected to destination1 of Sink

if __name__ == '__main__':
    try:
        my_top_block().run()
    except KeyboardInterrupt:
        pass

# Ignore this block

No comments:

Post a Comment