#!/usr/bin/env python
##################################################
# Gnuradio Python Flow Graph
# Title: FCD analog receiver v0.2
# Author: Ismas
# Description: experimental
# Generated: Fri Jan  4 15:15:19 2013
##################################################

from gnuradio import audio
from gnuradio import blks2
from gnuradio import eng_notation
from gnuradio import gr
from gnuradio import window
from gnuradio.eng_option import eng_option
from gnuradio.gr import firdes
from gnuradio.wxgui import fftsink2
from gnuradio.wxgui import forms
from gnuradio.wxgui import numbersink2
from gnuradio.wxgui import waterfallsink2
from grc_gnuradio import blks2 as grc_blks2
from grc_gnuradio import wxgui as grc_wxgui
from optparse import OptionParser
import wx

class FCD_analog_receiver_v2(grc_wxgui.top_block_gui):

	def __init__(self, samp_rate=192000, dec=16, audio_rate=44100, hw='hw:1'):
		grc_wxgui.top_block_gui.__init__(self, title="FCD analog receiver v0.2")
		_icon_path = "/usr/local/share/icons/hicolor/32x32/apps/gnuradio-grc.png"
		self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY))

		##################################################
		# Parameters
		##################################################
		self.samp_rate = samp_rate
		self.dec = dec
		self.audio_rate = audio_rate
		self.hw = hw

		##################################################
		# Variables
		##################################################
		self.wavfile_st = wavfile_st = "/tmp/wav_capture_st"
		self.wavfile3 = wavfile3 = "/tmp/wav_capture"
		self.wavfile2 = wavfile2 = "/tmp/wav_capture"
		self.wavfile = wavfile = "/tmp/wav_capture"
		self.volst = volst = 1
		self.variable_static_text_0_0_0 = variable_static_text_0_0_0 = hw
		self.variable_static_text_0_0 = variable_static_text_0_0 = samp_rate
		self.variable_static_text_0 = variable_static_text_0 = dec
		self.stereo = stereo = True
		self.sqlst = sqlst = -70
		self.separation = separation = 1
		self.rec3 = rec3 = False
		self.rec2 = rec2 = False
		self.rec = rec = False
		self.modulacion3 = modulacion3 = 0
		self.modulacion2 = modulacion2 = 0
		self.modulacion = modulacion = 0
		self.modfreq3 = modfreq3 = 0
		self.modfreq2 = modfreq2 = 0
		self.modfreq = modfreq = 0
		self.iqrec = iqrec = False
		self.iqfile = iqfile = "/tmp/iqfile"
		self.iq3rec = iq3rec = False
		self.iq3file = iq3file = "/tmp/iq3"
		self.iq2rec = iq2rec = False
		self.iq2file = iq2file = "/tmp/iq2"
		self.iq1rec = iq1rec = False
		self.iq1file = iq1file = "/tmp/iq1"
		self.if3 = if3 = False
		self.if2 = if2 = False
		self.if1 = if1 = True
		self.gain = gain = 1
		self.fmstrec = fmstrec = False
		self.fmst = fmst = False
		self.fine3 = fine3 = 0
		self.fine2 = fine2 = 0
		self.fine = fine = 0
		self.disp = disp = 3
		self.centro3 = centro3 = 25000
		self.centro2 = centro2 = 25000
		self.centro = centro = 25000
		self.Volumen3 = Volumen3 = 1
		self.Volumen2 = Volumen2 = 1
		self.Volumen = Volumen = 1
		self.Squelch3 = Squelch3 = -70
		self.Squelch2 = Squelch2 = -70
		self.Squelch = Squelch = -70
		self.BW3 = BW3 = samp_rate/(dec*4)
		self.BW2 = BW2 = samp_rate/(dec*4)
		self.BW = BW = samp_rate/(dec*4)

		##################################################
		# Blocks
		##################################################
		self.ntb1 = self.ntb1 = wx.Notebook(self.GetWin(), style=wx.NB_BOTTOM)
		self.ntb1.AddPage(grc_wxgui.Panel(self.ntb1), "demod 1")
		self.ntb1.AddPage(grc_wxgui.Panel(self.ntb1), "demod 2")
		self.ntb1.AddPage(grc_wxgui.Panel(self.ntb1), "demod 3")
		self.ntb1.AddPage(grc_wxgui.Panel(self.ntb1), "WFM Stereo")
		self.GridAdd(self.ntb1, 1, 0, 1, 9)
		self._wavfile_st_text_box = forms.text_box(
			parent=self.ntb1.GetPage(3).GetWin(),
			value=self.wavfile_st,
			callback=self.set_wavfile_st,
			label=" ",
			converter=forms.str_converter(),
		)
		self.ntb1.GetPage(3).GridAdd(self._wavfile_st_text_box, 1, 7, 1, 2)
		self._wavfile3_text_box = forms.text_box(
			parent=self.ntb1.GetPage(2).GetWin(),
			value=self.wavfile3,
			callback=self.set_wavfile3,
			label=" ",
			converter=forms.str_converter(),
		)
		self.ntb1.GetPage(2).GridAdd(self._wavfile3_text_box, 1, 8, 1, 3)
		self._wavfile2_text_box = forms.text_box(
			parent=self.ntb1.GetPage(1).GetWin(),
			value=self.wavfile2,
			callback=self.set_wavfile2,
			label=" ",
			converter=forms.str_converter(),
		)
		self.ntb1.GetPage(1).GridAdd(self._wavfile2_text_box, 1, 8, 1, 3)
		self._wavfile_text_box = forms.text_box(
			parent=self.ntb1.GetPage(0).GetWin(),
			value=self.wavfile,
			callback=self.set_wavfile,
			label=" ",
			converter=forms.str_converter(),
		)
		self.ntb1.GetPage(0).GridAdd(self._wavfile_text_box, 1, 8, 1, 3)
		_volst_sizer = wx.BoxSizer(wx.VERTICAL)
		self._volst_text_box = forms.text_box(
			parent=self.ntb1.GetPage(3).GetWin(),
			sizer=_volst_sizer,
			value=self.volst,
			callback=self.set_volst,
			label="Vol",
			converter=forms.float_converter(),
			proportion=0,
		)
		self._volst_slider = forms.slider(
			parent=self.ntb1.GetPage(3).GetWin(),
			sizer=_volst_sizer,
			value=self.volst,
			callback=self.set_volst,
			minimum=0,
			maximum=5,
			num_steps=100,
			style=wx.SL_HORIZONTAL,
			cast=float,
			proportion=1,
		)
		self.ntb1.GetPage(3).GridAdd(_volst_sizer, 1, 1, 1, 2)
		self._stereo_check_box = forms.check_box(
			parent=self.ntb1.GetPage(3).GetWin(),
			value=self.stereo,
			callback=self.set_stereo,
			label="Stereo",
			true=True,
			false=False,
		)
		self.ntb1.GetPage(3).GridAdd(self._stereo_check_box, 1, 9, 1, 1)
		_sqlst_sizer = wx.BoxSizer(wx.VERTICAL)
		self._sqlst_text_box = forms.text_box(
			parent=self.ntb1.GetPage(3).GetWin(),
			sizer=_sqlst_sizer,
			value=self.sqlst,
			callback=self.set_sqlst,
			label="SQL",
			converter=forms.int_converter(),
			proportion=0,
		)
		self._sqlst_slider = forms.slider(
			parent=self.ntb1.GetPage(3).GetWin(),
			sizer=_sqlst_sizer,
			value=self.sqlst,
			callback=self.set_sqlst,
			minimum=-120,
			maximum=20,
			num_steps=100,
			style=wx.SL_HORIZONTAL,
			cast=int,
			proportion=1,
		)
		self.ntb1.GetPage(3).GridAdd(_sqlst_sizer, 1, 3, 1, 2)
		_separation_sizer = wx.BoxSizer(wx.VERTICAL)
		self._separation_text_box = forms.text_box(
			parent=self.ntb1.GetPage(3).GetWin(),
			sizer=_separation_sizer,
			value=self.separation,
			callback=self.set_separation,
			label="separation",
			converter=forms.float_converter(),
			proportion=0,
		)
		self._separation_slider = forms.slider(
			parent=self.ntb1.GetPage(3).GetWin(),
			sizer=_separation_sizer,
			value=self.separation,
			callback=self.set_separation,
			minimum=0,
			maximum=2,
			num_steps=20,
			style=wx.SL_HORIZONTAL,
			cast=float,
			proportion=1,
		)
		self.ntb1.GetPage(3).GridAdd(_separation_sizer, 1, 10, 1, 1)
		self._rec3_check_box = forms.check_box(
			parent=self.ntb1.GetPage(2).GetWin(),
			value=self.rec3,
			callback=self.set_rec3,
			label="REC",
			true=True,
			false=False,
		)
		self.ntb1.GetPage(2).GridAdd(self._rec3_check_box, 1, 7, 1, 1)
		self._rec2_check_box = forms.check_box(
			parent=self.ntb1.GetPage(1).GetWin(),
			value=self.rec2,
			callback=self.set_rec2,
			label="REC",
			true=True,
			false=False,
		)
		self.ntb1.GetPage(1).GridAdd(self._rec2_check_box, 1, 7, 1, 1)
		self._rec_check_box = forms.check_box(
			parent=self.ntb1.GetPage(0).GetWin(),
			value=self.rec,
			callback=self.set_rec,
			label="REC",
			true=True,
			false=False,
		)
		self.ntb1.GetPage(0).GridAdd(self._rec_check_box, 1, 7, 1, 1)
		self.ntb0 = self.ntb0 = wx.Notebook(self.GetWin(), style=wx.NB_TOP)
		self.ntb0.AddPage(grc_wxgui.Panel(self.ntb0), "RF FFT")
		self.ntb0.AddPage(grc_wxgui.Panel(self.ntb0), "RF Waterfall")
		self.ntb0.AddPage(grc_wxgui.Panel(self.ntb0), "Audio FFT")
		self.ntb0.AddPage(grc_wxgui.Panel(self.ntb0), "Meters")
		self.GridAdd(self.ntb0, 0, 0, 1, 9)
		self._modulacion3_chooser = forms.drop_down(
			parent=self.ntb1.GetPage(2).GetWin(),
			value=self.modulacion3,
			callback=self.set_modulacion3,
			label="Mod",
			choices=[0,1,2,3],
			labels=["NFM","AM", "USB","LSB"],
		)
		self.ntb1.GetPage(2).GridAdd(self._modulacion3_chooser, 1, 2, 1, 1)
		self._modulacion2_chooser = forms.drop_down(
			parent=self.ntb1.GetPage(1).GetWin(),
			value=self.modulacion2,
			callback=self.set_modulacion2,
			label="Mod",
			choices=[0,1,2,3],
			labels=["NFM","AM", "USB","LSB"],
		)
		self.ntb1.GetPage(1).GridAdd(self._modulacion2_chooser, 1, 2, 1, 1)
		self._modulacion_chooser = forms.drop_down(
			parent=self.ntb1.GetPage(0).GetWin(),
			value=self.modulacion,
			callback=self.set_modulacion,
			label="Mod",
			choices=[0,1,2,3],
			labels=["NFM","AM", "USB", "LSB" ],
		)
		self.ntb1.GetPage(0).GridAdd(self._modulacion_chooser, 1, 2, 1, 1)
		_modfreq3_sizer = wx.BoxSizer(wx.VERTICAL)
		self._modfreq3_text_box = forms.text_box(
			parent=self.ntb1.GetPage(2).GetWin(),
			sizer=_modfreq3_sizer,
			value=self.modfreq3,
			callback=self.set_modfreq3,
			label="modfreq",
			converter=forms.float_converter(),
			proportion=0,
		)
		self._modfreq3_slider = forms.slider(
			parent=self.ntb1.GetPage(2).GetWin(),
			sizer=_modfreq3_sizer,
			value=self.modfreq3,
			callback=self.set_modfreq3,
			minimum=0,
			maximum=20000,
			num_steps=200,
			style=wx.SL_HORIZONTAL,
			cast=float,
			proportion=1,
		)
		self.ntb1.GetPage(2).GridAdd(_modfreq3_sizer, 1, 6, 1, 1)
		_modfreq2_sizer = wx.BoxSizer(wx.VERTICAL)
		self._modfreq2_text_box = forms.text_box(
			parent=self.ntb1.GetPage(1).GetWin(),
			sizer=_modfreq2_sizer,
			value=self.modfreq2,
			callback=self.set_modfreq2,
			label="modfreq",
			converter=forms.float_converter(),
			proportion=0,
		)
		self._modfreq2_slider = forms.slider(
			parent=self.ntb1.GetPage(1).GetWin(),
			sizer=_modfreq2_sizer,
			value=self.modfreq2,
			callback=self.set_modfreq2,
			minimum=0,
			maximum=20000,
			num_steps=200,
			style=wx.SL_HORIZONTAL,
			cast=float,
			proportion=1,
		)
		self.ntb1.GetPage(1).GridAdd(_modfreq2_sizer, 1, 6, 1, 1)
		_modfreq_sizer = wx.BoxSizer(wx.VERTICAL)
		self._modfreq_text_box = forms.text_box(
			parent=self.ntb1.GetPage(0).GetWin(),
			sizer=_modfreq_sizer,
			value=self.modfreq,
			callback=self.set_modfreq,
			label="modfreq",
			converter=forms.float_converter(),
			proportion=0,
		)
		self._modfreq_slider = forms.slider(
			parent=self.ntb1.GetPage(0).GetWin(),
			sizer=_modfreq_sizer,
			value=self.modfreq,
			callback=self.set_modfreq,
			minimum=0,
			maximum=20000,
			num_steps=200,
			style=wx.SL_HORIZONTAL,
			cast=float,
			proportion=1,
		)
		self.ntb1.GetPage(0).GridAdd(_modfreq_sizer, 1, 6, 1, 1)
		self._iqrec_check_box = forms.check_box(
			parent=self.GetWin(),
			value=self.iqrec,
			callback=self.set_iqrec,
			label="REC spectrum I/Q",
			true=True,
			false=False,
		)
		self.GridAdd(self._iqrec_check_box, 2, 2, 1, 1)
		self._iqfile_text_box = forms.text_box(
			parent=self.GetWin(),
			value=self.iqfile,
			callback=self.set_iqfile,
			label=" ",
			converter=forms.str_converter(),
		)
		self.GridAdd(self._iqfile_text_box, 2, 3, 1, 3)
		self._iq3rec_check_box = forms.check_box(
			parent=self.ntb1.GetPage(2).GetWin(),
			value=self.iq3rec,
			callback=self.set_iq3rec,
			label="I/Q REC",
			true=True,
			false=False,
		)
		self.ntb1.GetPage(2).GridAdd(self._iq3rec_check_box, 1, 14, 1, 1)
		self._iq3file_text_box = forms.text_box(
			parent=self.ntb1.GetPage(2).GetWin(),
			value=self.iq3file,
			callback=self.set_iq3file,
			label=" ",
			converter=forms.str_converter(),
		)
		self.ntb1.GetPage(2).GridAdd(self._iq3file_text_box, 1, 15, 1, 3)
		self._iq2rec_check_box = forms.check_box(
			parent=self.ntb1.GetPage(1).GetWin(),
			value=self.iq2rec,
			callback=self.set_iq2rec,
			label="I/Q REC",
			true=True,
			false=False,
		)
		self.ntb1.GetPage(1).GridAdd(self._iq2rec_check_box, 1, 14, 1, 1)
		self._iq2file_text_box = forms.text_box(
			parent=self.ntb1.GetPage(1).GetWin(),
			value=self.iq2file,
			callback=self.set_iq2file,
			label=" ",
			converter=forms.str_converter(),
		)
		self.ntb1.GetPage(1).GridAdd(self._iq2file_text_box, 1, 15, 1, 3)
		self._iq1rec_check_box = forms.check_box(
			parent=self.ntb1.GetPage(0).GetWin(),
			value=self.iq1rec,
			callback=self.set_iq1rec,
			label="I/Q REC",
			true=True,
			false=False,
		)
		self.ntb1.GetPage(0).GridAdd(self._iq1rec_check_box, 1, 14, 1, 1)
		self._iq1file_text_box = forms.text_box(
			parent=self.ntb1.GetPage(0).GetWin(),
			value=self.iq1file,
			callback=self.set_iq1file,
			label=" ",
			converter=forms.str_converter(),
		)
		self.ntb1.GetPage(0).GridAdd(self._iq1file_text_box, 1, 15, 1, 3)
		self._if3_check_box = forms.check_box(
			parent=self.ntb1.GetPage(2).GetWin(),
			value=self.if3,
			callback=self.set_if3,
			label="ENABLE",
			true=True,
			false=False,
		)
		self.ntb1.GetPage(2).GridAdd(self._if3_check_box, 1, 0, 1, 1)
		self._if2_check_box = forms.check_box(
			parent=self.ntb1.GetPage(1).GetWin(),
			value=self.if2,
			callback=self.set_if2,
			label="ENABLE",
			true=True,
			false=False,
		)
		self.ntb1.GetPage(1).GridAdd(self._if2_check_box, 1, 0, 1, 1)
		self._if1_check_box = forms.check_box(
			parent=self.ntb1.GetPage(0).GetWin(),
			value=self.if1,
			callback=self.set_if1,
			label="ENABLE",
			true=True,
			false=False,
		)
		self.ntb1.GetPage(0).GridAdd(self._if1_check_box, 1, 0, 1, 1)
		_gain_sizer = wx.BoxSizer(wx.VERTICAL)
		self._gain_text_box = forms.text_box(
			parent=self.GetWin(),
			sizer=_gain_sizer,
			value=self.gain,
			callback=self.set_gain,
			label="Attenuator",
			converter=forms.float_converter(),
			proportion=0,
		)
		self._gain_slider = forms.slider(
			parent=self.GetWin(),
			sizer=_gain_sizer,
			value=self.gain,
			callback=self.set_gain,
			minimum=0,
			maximum=2,
			num_steps=100,
			style=wx.SL_HORIZONTAL,
			cast=float,
			proportion=1,
		)
		self.GridAdd(_gain_sizer, 2, 0, 1, 1)
		self._fmstrec_check_box = forms.check_box(
			parent=self.ntb1.GetPage(3).GetWin(),
			value=self.fmstrec,
			callback=self.set_fmstrec,
			label="REC",
			true=True,
			false=False,
		)
		self.ntb1.GetPage(3).GridAdd(self._fmstrec_check_box, 1, 5, 1, 1)
		self._fmst_check_box = forms.check_box(
			parent=self.ntb1.GetPage(3).GetWin(),
			value=self.fmst,
			callback=self.set_fmst,
			label="ENABLE",
			true=True,
			false=False,
		)
		self.ntb1.GetPage(3).GridAdd(self._fmst_check_box, 1, 0, 1, 1)
		_fine3_sizer = wx.BoxSizer(wx.VERTICAL)
		self._fine3_text_box = forms.text_box(
			parent=self.ntb1.GetPage(2).GetWin(),
			sizer=_fine3_sizer,
			value=self.fine3,
			callback=self.set_fine3,
			label="fine",
			converter=forms.int_converter(),
			proportion=0,
		)
		self._fine3_slider = forms.slider(
			parent=self.ntb1.GetPage(2).GetWin(),
			sizer=_fine3_sizer,
			value=self.fine3,
			callback=self.set_fine3,
			minimum=-250,
			maximum=250,
			num_steps=500,
			style=wx.SL_HORIZONTAL,
			cast=int,
			proportion=1,
		)
		self.ntb1.GetPage(2).GridAdd(_fine3_sizer, 0, 18, 1, 2)
		_fine2_sizer = wx.BoxSizer(wx.VERTICAL)
		self._fine2_text_box = forms.text_box(
			parent=self.ntb1.GetPage(1).GetWin(),
			sizer=_fine2_sizer,
			value=self.fine2,
			callback=self.set_fine2,
			label="fine",
			converter=forms.int_converter(),
			proportion=0,
		)
		self._fine2_slider = forms.slider(
			parent=self.ntb1.GetPage(1).GetWin(),
			sizer=_fine2_sizer,
			value=self.fine2,
			callback=self.set_fine2,
			minimum=-250,
			maximum=250,
			num_steps=500,
			style=wx.SL_HORIZONTAL,
			cast=int,
			proportion=1,
		)
		self.ntb1.GetPage(1).GridAdd(_fine2_sizer, 0, 18, 1, 2)
		_fine_sizer = wx.BoxSizer(wx.VERTICAL)
		self._fine_text_box = forms.text_box(
			parent=self.ntb1.GetPage(0).GetWin(),
			sizer=_fine_sizer,
			value=self.fine,
			callback=self.set_fine,
			label="fine",
			converter=forms.int_converter(),
			proportion=0,
		)
		self._fine_slider = forms.slider(
			parent=self.ntb1.GetPage(0).GetWin(),
			sizer=_fine_sizer,
			value=self.fine,
			callback=self.set_fine,
			minimum=-250,
			maximum=250,
			num_steps=500,
			style=wx.SL_HORIZONTAL,
			cast=int,
			proportion=1,
		)
		self.ntb1.GetPage(0).GridAdd(_fine_sizer, 0, 18, 1, 2)
		self._disp_chooser = forms.drop_down(
			parent=self.GetWin(),
			value=self.disp,
			callback=self.set_disp,
			label="Display",
			choices=[0,1,2,3],
			labels=["IF 1","IF 2","IF 3","Spectrum"],
		)
		self.GridAdd(self._disp_chooser, 2, 1, 1, 1)
		_centro3_sizer = wx.BoxSizer(wx.VERTICAL)
		self._centro3_text_box = forms.text_box(
			parent=self.ntb1.GetPage(2).GetWin(),
			sizer=_centro3_sizer,
			value=self.centro3,
			callback=self.set_centro3,
			label="IF",
			converter=forms.int_converter(),
			proportion=0,
		)
		self._centro3_slider = forms.slider(
			parent=self.ntb1.GetPage(2).GetWin(),
			sizer=_centro3_sizer,
			value=self.centro3,
			callback=self.set_centro3,
			minimum=-104000,
			maximum=103000,
			num_steps=1000,
			style=wx.SL_HORIZONTAL,
			cast=int,
			proportion=1,
		)
		self.ntb1.GetPage(2).GridAdd(_centro3_sizer, 0, 0, 1, 18)
		_centro2_sizer = wx.BoxSizer(wx.VERTICAL)
		self._centro2_text_box = forms.text_box(
			parent=self.ntb1.GetPage(1).GetWin(),
			sizer=_centro2_sizer,
			value=self.centro2,
			callback=self.set_centro2,
			label="IF",
			converter=forms.int_converter(),
			proportion=0,
		)
		self._centro2_slider = forms.slider(
			parent=self.ntb1.GetPage(1).GetWin(),
			sizer=_centro2_sizer,
			value=self.centro2,
			callback=self.set_centro2,
			minimum=-104000,
			maximum=103000,
			num_steps=1000,
			style=wx.SL_HORIZONTAL,
			cast=int,
			proportion=1,
		)
		self.ntb1.GetPage(1).GridAdd(_centro2_sizer, 0, 0, 1, 18)
		_centro_sizer = wx.BoxSizer(wx.VERTICAL)
		self._centro_text_box = forms.text_box(
			parent=self.ntb1.GetPage(0).GetWin(),
			sizer=_centro_sizer,
			value=self.centro,
			callback=self.set_centro,
			label="IF",
			converter=forms.int_converter(),
			proportion=0,
		)
		self._centro_slider = forms.slider(
			parent=self.ntb1.GetPage(0).GetWin(),
			sizer=_centro_sizer,
			value=self.centro,
			callback=self.set_centro,
			minimum=-104000,
			maximum=103000,
			num_steps=1000,
			style=wx.SL_HORIZONTAL,
			cast=int,
			proportion=1,
		)
		self.ntb1.GetPage(0).GridAdd(_centro_sizer, 0, 0, 1, 18)
		_Volumen3_sizer = wx.BoxSizer(wx.VERTICAL)
		self._Volumen3_text_box = forms.text_box(
			parent=self.ntb1.GetPage(2).GetWin(),
			sizer=_Volumen3_sizer,
			value=self.Volumen3,
			callback=self.set_Volumen3,
			label="Vol",
			converter=forms.float_converter(),
			proportion=0,
		)
		self._Volumen3_slider = forms.slider(
			parent=self.ntb1.GetPage(2).GetWin(),
			sizer=_Volumen3_sizer,
			value=self.Volumen3,
			callback=self.set_Volumen3,
			minimum=0,
			maximum=5,
			num_steps=100,
			style=wx.SL_HORIZONTAL,
			cast=float,
			proportion=1,
		)
		self.ntb1.GetPage(2).GridAdd(_Volumen3_sizer, 1, 4, 1, 1)
		_Volumen2_sizer = wx.BoxSizer(wx.VERTICAL)
		self._Volumen2_text_box = forms.text_box(
			parent=self.ntb1.GetPage(1).GetWin(),
			sizer=_Volumen2_sizer,
			value=self.Volumen2,
			callback=self.set_Volumen2,
			label="Vol",
			converter=forms.float_converter(),
			proportion=0,
		)
		self._Volumen2_slider = forms.slider(
			parent=self.ntb1.GetPage(1).GetWin(),
			sizer=_Volumen2_sizer,
			value=self.Volumen2,
			callback=self.set_Volumen2,
			minimum=0,
			maximum=5,
			num_steps=100,
			style=wx.SL_HORIZONTAL,
			cast=float,
			proportion=1,
		)
		self.ntb1.GetPage(1).GridAdd(_Volumen2_sizer, 1, 4, 1, 1)
		_Volumen_sizer = wx.BoxSizer(wx.VERTICAL)
		self._Volumen_text_box = forms.text_box(
			parent=self.ntb1.GetPage(0).GetWin(),
			sizer=_Volumen_sizer,
			value=self.Volumen,
			callback=self.set_Volumen,
			label="Vol",
			converter=forms.float_converter(),
			proportion=0,
		)
		self._Volumen_slider = forms.slider(
			parent=self.ntb1.GetPage(0).GetWin(),
			sizer=_Volumen_sizer,
			value=self.Volumen,
			callback=self.set_Volumen,
			minimum=0,
			maximum=5,
			num_steps=100,
			style=wx.SL_HORIZONTAL,
			cast=float,
			proportion=1,
		)
		self.ntb1.GetPage(0).GridAdd(_Volumen_sizer, 1, 4, 1, 1)
		_Squelch3_sizer = wx.BoxSizer(wx.VERTICAL)
		self._Squelch3_text_box = forms.text_box(
			parent=self.ntb1.GetPage(2).GetWin(),
			sizer=_Squelch3_sizer,
			value=self.Squelch3,
			callback=self.set_Squelch3,
			label="SQL",
			converter=forms.int_converter(),
			proportion=0,
		)
		self._Squelch3_slider = forms.slider(
			parent=self.ntb1.GetPage(2).GetWin(),
			sizer=_Squelch3_sizer,
			value=self.Squelch3,
			callback=self.set_Squelch3,
			minimum=-120,
			maximum=20,
			num_steps=100,
			style=wx.SL_HORIZONTAL,
			cast=int,
			proportion=1,
		)
		self.ntb1.GetPage(2).GridAdd(_Squelch3_sizer, 1, 5, 1, 1)
		_Squelch2_sizer = wx.BoxSizer(wx.VERTICAL)
		self._Squelch2_text_box = forms.text_box(
			parent=self.ntb1.GetPage(1).GetWin(),
			sizer=_Squelch2_sizer,
			value=self.Squelch2,
			callback=self.set_Squelch2,
			label="SQL",
			converter=forms.int_converter(),
			proportion=0,
		)
		self._Squelch2_slider = forms.slider(
			parent=self.ntb1.GetPage(1).GetWin(),
			sizer=_Squelch2_sizer,
			value=self.Squelch2,
			callback=self.set_Squelch2,
			minimum=-120,
			maximum=20,
			num_steps=100,
			style=wx.SL_HORIZONTAL,
			cast=int,
			proportion=1,
		)
		self.ntb1.GetPage(1).GridAdd(_Squelch2_sizer, 1, 5, 1, 1)
		_Squelch_sizer = wx.BoxSizer(wx.VERTICAL)
		self._Squelch_text_box = forms.text_box(
			parent=self.ntb1.GetPage(0).GetWin(),
			sizer=_Squelch_sizer,
			value=self.Squelch,
			callback=self.set_Squelch,
			label="SQL",
			converter=forms.int_converter(),
			proportion=0,
		)
		self._Squelch_slider = forms.slider(
			parent=self.ntb1.GetPage(0).GetWin(),
			sizer=_Squelch_sizer,
			value=self.Squelch,
			callback=self.set_Squelch,
			minimum=-120,
			maximum=20,
			num_steps=100,
			style=wx.SL_HORIZONTAL,
			cast=int,
			proportion=1,
		)
		self.ntb1.GetPage(0).GridAdd(_Squelch_sizer, 1, 5, 1, 1)
		_BW3_sizer = wx.BoxSizer(wx.VERTICAL)
		self._BW3_text_box = forms.text_box(
			parent=self.ntb1.GetPage(2).GetWin(),
			sizer=_BW3_sizer,
			value=self.BW3,
			callback=self.set_BW3,
			label="BW",
			converter=forms.int_converter(),
			proportion=0,
		)
		self._BW3_slider = forms.slider(
			parent=self.ntb1.GetPage(2).GetWin(),
			sizer=_BW3_sizer,
			value=self.BW3,
			callback=self.set_BW3,
			minimum=500,
			maximum=samp_rate/(dec*2),
			num_steps=100,
			style=wx.SL_HORIZONTAL,
			cast=int,
			proportion=1,
		)
		self.ntb1.GetPage(2).GridAdd(_BW3_sizer, 1, 3, 1, 1)
		_BW2_sizer = wx.BoxSizer(wx.VERTICAL)
		self._BW2_text_box = forms.text_box(
			parent=self.ntb1.GetPage(1).GetWin(),
			sizer=_BW2_sizer,
			value=self.BW2,
			callback=self.set_BW2,
			label="BW",
			converter=forms.int_converter(),
			proportion=0,
		)
		self._BW2_slider = forms.slider(
			parent=self.ntb1.GetPage(1).GetWin(),
			sizer=_BW2_sizer,
			value=self.BW2,
			callback=self.set_BW2,
			minimum=500,
			maximum=samp_rate/(dec*2),
			num_steps=100,
			style=wx.SL_HORIZONTAL,
			cast=int,
			proportion=1,
		)
		self.ntb1.GetPage(1).GridAdd(_BW2_sizer, 1, 3, 1, 1)
		_BW_sizer = wx.BoxSizer(wx.VERTICAL)
		self._BW_text_box = forms.text_box(
			parent=self.ntb1.GetPage(0).GetWin(),
			sizer=_BW_sizer,
			value=self.BW,
			callback=self.set_BW,
			label="BW",
			converter=forms.int_converter(),
			proportion=0,
		)
		self._BW_slider = forms.slider(
			parent=self.ntb1.GetPage(0).GetWin(),
			sizer=_BW_sizer,
			value=self.BW,
			callback=self.set_BW,
			minimum=500,
			maximum=samp_rate/(dec*2),
			num_steps=100,
			style=wx.SL_HORIZONTAL,
			cast=int,
			proportion=1,
		)
		self.ntb1.GetPage(0).GridAdd(_BW_sizer, 1, 3, 1, 1)
		self.wxgui_waterfallsink2_0 = waterfallsink2.waterfall_sink_c(
			self.ntb0.GetPage(1).GetWin(),
			baseband_freq=0,
			dynamic_range=70,
			ref_level=-35,
			ref_scale=2.0,
			sample_rate=((disp==3)*(samp_rate-(samp_rate/dec)))+(samp_rate/dec),
			fft_size=512,
			fft_rate=10,
			average=False,
			avg_alpha=None,
			title="Waterfall Plot",
			win=window.hamming,
			size=(1024,400),
		)
		self.ntb0.GetPage(1).GridAdd(self.wxgui_waterfallsink2_0.win, 0, 0, 1, 9)
		self.wxgui_numbersink2_0 = numbersink2.number_sink_f(
			self.ntb0.GetPage(3).GetWin(),
			unit="dB",
			minval=-5,
			maxval=0.5,
			factor=1,
			decimal_places=3,
			ref_level=0,
			sample_rate=10,
			number_rate=10,
			average=False,
			avg_alpha=None,
			label="Signal Meter from display",
			peak_hold=False,
			show_gauge=True,
			size=(1024,24),
		)
		self.ntb0.GetPage(3).GridAdd(self.wxgui_numbersink2_0.win, 0, 0, 1, 1)
		self.wxgui_fftsink2_1 = fftsink2.fft_sink_f(
			self.ntb0.GetPage(2).GetWin(),
			baseband_freq=0,
			y_per_div=5,
			y_divs=10,
			ref_level=-30,
			ref_scale=2.0,
			sample_rate=samp_rate/dec,
			fft_size=1024,
			fft_rate=15,
			average=True,
			avg_alpha=0.5,
			title="Audio FFT",
			peak_hold=False,
			win=window.hamming,
			size=(1024,400),
		)
		self.ntb0.GetPage(2).GridAdd(self.wxgui_fftsink2_1.win, 0, 0, 1, 9)
		self.wxgui_fftsink2_0 = fftsink2.fft_sink_c(
			self.ntb0.GetPage(0).GetWin(),
			baseband_freq=0,
			y_per_div=10,
			y_divs=10,
			ref_level=-20,
			ref_scale=2.0,
			sample_rate=((disp==3)*(samp_rate-(samp_rate/dec)))+(samp_rate/dec),
			fft_size=1024,
			fft_rate=10,
			average=True,
			avg_alpha=0.4,
			title="FFT Plot",
			peak_hold=False,
			win=window.flattop,
			size=(1024,400),
		)
		self.ntb0.GetPage(0).GridAdd(self.wxgui_fftsink2_0.win, 0, 0, 1, 9)
		self._variable_static_text_0_0_0_static_text = forms.static_text(
			parent=self.GetWin(),
			value=self.variable_static_text_0_0_0,
			callback=self.set_variable_static_text_0_0_0,
			label="device",
			converter=forms.str_converter(),
		)
		self.GridAdd(self._variable_static_text_0_0_0_static_text, 4, 2, 1, 1)
		self._variable_static_text_0_0_static_text = forms.static_text(
			parent=self.GetWin(),
			value=self.variable_static_text_0_0,
			callback=self.set_variable_static_text_0_0,
			label="Sampling rate",
			converter=forms.int_converter(),
		)
		self.GridAdd(self._variable_static_text_0_0_static_text, 4, 1, 1, 1)
		self._variable_static_text_0_static_text = forms.static_text(
			parent=self.GetWin(),
			value=self.variable_static_text_0,
			callback=self.set_variable_static_text_0,
			label="Decimation",
			converter=forms.int_converter(),
		)
		self.GridAdd(self._variable_static_text_0_static_text, 4, 0, 1, 1)
		self.low_pass_filter_1_0 = gr.fir_filter_fff(4, firdes.low_pass(
			20*volst, samp_rate, 14000, 2000, firdes.WIN_HAMMING, 6.76))
		self.low_pass_filter_1 = gr.fir_filter_fff(4, firdes.low_pass(
			20*volst, samp_rate, 14000, 2000, firdes.WIN_HAMMING, 6.76))
		self.low_pass_filter_0_0_1_0 = gr.fir_filter_ccf(1, firdes.low_pass(
			1, samp_rate/dec, BW3, 250, firdes.WIN_HAMMING, 6.76))
		self.low_pass_filter_0_0_1 = gr.fir_filter_ccf(1, firdes.low_pass(
			1, samp_rate/dec, BW2, 250, firdes.WIN_HAMMING, 6.76))
		self.low_pass_filter_0_0_0_0_0 = gr.fir_filter_ccf(dec, firdes.low_pass(
			1, samp_rate, BW3, 1000, firdes.WIN_HAMMING, 6.76))
		self.low_pass_filter_0_0_0_0 = gr.fir_filter_ccf(dec, firdes.low_pass(
			1, samp_rate, BW2, 1000, firdes.WIN_HAMMING, 6.76))
		self.low_pass_filter_0_0_0 = gr.fir_filter_ccf(dec, firdes.low_pass(
			1, samp_rate, BW, 1000, firdes.WIN_HAMMING, 6.76))
		self.low_pass_filter_0_0 = gr.fir_filter_ccf(1, firdes.low_pass(
			1, samp_rate/dec, BW, 250, firdes.WIN_HAMMING, 6.76))
		self.low_pass_filter_0 = gr.interp_fir_filter_fff(1, firdes.low_pass(
			1, samp_rate, 15000, 2000, firdes.WIN_HAMMING, 6.76))
		self.gr_wavfile_sink_0_0_0_1 = gr.wavfile_sink(wavfile3, 1, samp_rate/dec, 16)
		self.gr_wavfile_sink_0_0_0_0 = gr.wavfile_sink(wavfile_st, 2, 48000, 16)
		self.gr_wavfile_sink_0_0_0 = gr.wavfile_sink(wavfile2, 1, samp_rate/dec, 16)
		self.gr_wavfile_sink_0_0 = gr.wavfile_sink(wavfile, 1, samp_rate/dec, 16)
		self.gr_throttle_0_0_0_0_0 = gr.throttle(gr.sizeof_gr_complex*1, samp_rate/dec)
		self.gr_throttle_0_0_0_0 = gr.throttle(gr.sizeof_gr_complex*1, samp_rate/dec)
		self.gr_throttle_0_0_0 = gr.throttle(gr.sizeof_gr_complex*1, samp_rate/dec)
		self.gr_throttle_0 = gr.throttle(gr.sizeof_gr_complex*1, 192000)
		self.gr_sub_xx_0 = gr.sub_ff(1)
		self.gr_sig_source_x_0_0_0_1 = gr.sig_source_f(samp_rate/dec, gr.GR_COS_WAVE, modfreq3, 1, 0)
		self.gr_sig_source_x_0_0_0_0_1_0 = gr.sig_source_c(samp_rate, gr.GR_COS_WAVE, -centro3+fine3-((modulacion3==2)*BW3)+((modulacion3==3)*BW3), 1, 0)
		self.gr_sig_source_x_0_0_0_0_1 = gr.sig_source_c(samp_rate, gr.GR_COS_WAVE, -centro2+fine2-((modulacion2==2)*BW2)+((modulacion2==3)*BW2), 1, 0)
		self.gr_sig_source_x_0_0_0_0_0_0_0 = gr.sig_source_c(samp_rate/dec, gr.GR_COS_WAVE, (modulacion3==2)*BW3-(modulacion3==3)*BW3, 1, 0)
		self.gr_sig_source_x_0_0_0_0_0_0 = gr.sig_source_c(samp_rate/dec, gr.GR_COS_WAVE, (modulacion2==2)*BW2-(modulacion2==3)*BW2, 1, 0)
		self.gr_sig_source_x_0_0_0_0_0 = gr.sig_source_c(samp_rate/dec, gr.GR_COS_WAVE, (modulacion==2)*BW-(modulacion==3)*BW, 1, 0)
		self.gr_sig_source_x_0_0_0_0 = gr.sig_source_c(samp_rate, gr.GR_COS_WAVE, -centro+fine-((modulacion==2)*BW)+((modulacion==3)*BW), 1, 0)
		self.gr_sig_source_x_0_0_0 = gr.sig_source_f(samp_rate/dec, gr.GR_COS_WAVE, modfreq2, 1, 0)
		self.gr_sig_source_x_0_0 = gr.sig_source_f(samp_rate/dec, gr.GR_COS_WAVE, modfreq, 1, 0)
		self.gr_rms_xx_0_0_0_0 = gr.rms_cf(1)
		self.gr_rms_xx_0_0_0 = gr.rms_cf(1)
		self.gr_rms_xx_0_0 = gr.rms_cf(1)
		self.gr_rms_xx_0 = gr.rms_cf(0.001)
		self.gr_quadrature_demod_cf_0_0_0 = gr.quadrature_demod_cf(0.1)
		self.gr_quadrature_demod_cf_0_0 = gr.quadrature_demod_cf(0.1)
		self.gr_quadrature_demod_cf_0 = gr.quadrature_demod_cf(0.1)
		self.gr_pwr_squelch_xx_0_0_0_1 = gr.pwr_squelch_cc(Squelch3, 0.001, 0, True)
		self.gr_pwr_squelch_xx_0_0_0_0 = gr.pwr_squelch_cc(sqlst, 0.1, 2, True)
		self.gr_pwr_squelch_xx_0_0_0 = gr.pwr_squelch_cc(Squelch2, 0.001, 0, True)
		self.gr_pwr_squelch_xx_0_0 = gr.pwr_squelch_cc(Squelch, 0.001, 0, True)
		self.gr_nlog10_ff_0 = gr.nlog10_ff(1, 1, 0)
		self.gr_multiply_xx_0_1_1_0 = gr.multiply_vcc(1)
		self.gr_multiply_xx_0_1_1 = gr.multiply_vcc(1)
		self.gr_multiply_xx_0_1_0_0_0 = gr.multiply_vcc(1)
		self.gr_multiply_xx_0_1_0_0 = gr.multiply_vcc(1)
		self.gr_multiply_xx_0_1_0 = gr.multiply_vcc(1)
		self.gr_multiply_xx_0_1 = gr.multiply_vcc(1)
		self.gr_multiply_xx_0_0_1_0 = gr.multiply_vff(1)
		self.gr_multiply_xx_0_0_1 = gr.multiply_vff(1)
		self.gr_multiply_xx_0_0_0 = gr.multiply_vff(1)
		self.gr_multiply_xx_0_0 = gr.multiply_vff(1)
		self.gr_multiply_const_vxx_0_0_0_1_2_0 = gr.multiply_const_vcc((0.3, ))
		self.gr_multiply_const_vxx_0_0_0_1_2 = gr.multiply_const_vcc((0.3, ))
		self.gr_multiply_const_vxx_0_0_0_1_1 = gr.multiply_const_vcc((gain, ))
		self.gr_multiply_const_vxx_0_0_0_1_0_1_0 = gr.multiply_const_vcc((0.3, ))
		self.gr_multiply_const_vxx_0_0_0_1_0_1 = gr.multiply_const_vcc((0.3, ))
		self.gr_multiply_const_vxx_0_0_0_1_0_0_0_0 = gr.multiply_const_vff((4.5, ))
		self.gr_multiply_const_vxx_0_0_0_1_0_0_0 = gr.multiply_const_vff((4.5, ))
		self.gr_multiply_const_vxx_0_0_0_1_0_0 = gr.multiply_const_vff((4.5, ))
		self.gr_multiply_const_vxx_0_0_0_1_0 = gr.multiply_const_vcc((0.3, ))
		self.gr_multiply_const_vxx_0_0_0_1 = gr.multiply_const_vcc((0.3, ))
		self.gr_fractional_interpolator_xx_0_0_0_0 = gr.fractional_interpolator_ff(0, ((samp_rate/dec) *1.0) / audio_rate  )
		self.gr_fractional_interpolator_xx_0_0_0 = gr.fractional_interpolator_ff(0, ((samp_rate/dec) *1.0) / audio_rate  )
		self.gr_fractional_interpolator_xx_0_0 = gr.fractional_interpolator_ff(0, ((samp_rate/dec) *1.0) / audio_rate  )
		self.gr_float_to_complex_0 = gr.float_to_complex(1)
		self.gr_file_sink_0_0_1 = gr.file_sink(gr.sizeof_gr_complex*1, iq3file)
		self.gr_file_sink_0_0_1.set_unbuffered(False)
		self.gr_file_sink_0_0_0 = gr.file_sink(gr.sizeof_gr_complex*1, iqfile)
		self.gr_file_sink_0_0_0.set_unbuffered(False)
		self.gr_file_sink_0_0 = gr.file_sink(gr.sizeof_gr_complex*1, iq2file)
		self.gr_file_sink_0_0.set_unbuffered(False)
		self.gr_file_sink_0 = gr.file_sink(gr.sizeof_gr_complex*1, iq1file)
		self.gr_file_sink_0.set_unbuffered(False)
		self.gr_complex_to_real_0_0_1_0 = gr.complex_to_real(1)
		self.gr_complex_to_real_0_0_1 = gr.complex_to_real(1)
		self.gr_complex_to_real_0_0_0_0_0 = gr.complex_to_real(1)
		self.gr_complex_to_real_0_0_0_0 = gr.complex_to_real(1)
		self.gr_complex_to_real_0_0_0 = gr.complex_to_real(1)
		self.gr_complex_to_real_0_0 = gr.complex_to_real(1)
		self.gr_agc2_xx_0_0_0_1 = gr.agc2_cc(0.5, 0.5, 0.8, 1.0, 0)
		self.gr_agc2_xx_0_0_0_0 = gr.agc2_cc(0.5, 0.5, 0.8, 1, 0)
		self.gr_agc2_xx_0_0_0 = gr.agc2_cc(0.5, 0.5, 0.8, 1.0, 0)
		self.gr_agc2_xx_0_0 = gr.agc2_cc(0.5, 0.5, 0.8, 1.0, 0)
		self.gr_add_xx_0 = gr.add_vff(1)
		self.blks2_wfm_rcv_0 = blks2.wfm_rcv(
			quad_rate=samp_rate,
			audio_decimation=1,
		)
		self.blks2_valve_0_2_0_0 = grc_blks2.valve(item_size=gr.sizeof_gr_complex*1, open=bool(iq3rec==0))
		self.blks2_valve_0_2_0 = grc_blks2.valve(item_size=gr.sizeof_gr_complex*1, open=bool(iq2rec==0))
		self.blks2_valve_0_2 = grc_blks2.valve(item_size=gr.sizeof_gr_complex*1, open=bool(iq1rec==0))
		self.blks2_valve_0_1_0_1 = grc_blks2.valve(item_size=gr.sizeof_float*1, open=bool(rec3==0))
		self.blks2_valve_0_1_0_0_0 = grc_blks2.valve(item_size=gr.sizeof_float*1, open=bool(fmstrec==0))
		self.blks2_valve_0_1_0_0 = grc_blks2.valve(item_size=gr.sizeof_float*1, open=bool(fmstrec==0))
		self.blks2_valve_0_1_0 = grc_blks2.valve(item_size=gr.sizeof_float*1, open=bool(rec2==0))
		self.blks2_valve_0_1 = grc_blks2.valve(item_size=gr.sizeof_float*1, open=bool(rec==0))
		self.blks2_valve_0_0_0_0_1_0 = grc_blks2.valve(item_size=gr.sizeof_gr_complex*1, open=bool(iqrec==0))
		self.blks2_valve_0_0_0_0_0_0_0 = grc_blks2.valve(item_size=gr.sizeof_gr_complex*1, open=bool((if3==0)|(fmst==1)))
		self.blks2_valve_0_0_0_0_0_0 = grc_blks2.valve(item_size=gr.sizeof_gr_complex*1, open=bool((if2==0)|(fmst==1)))
		self.blks2_valve_0_0_0_0_0 = grc_blks2.valve(item_size=gr.sizeof_gr_complex*1, open=bool((if1==0)|(fmst==1)))
		self.blks2_valve_0_0 = grc_blks2.valve(item_size=gr.sizeof_gr_complex*1, open=bool(fmst==0))
		self.blks2_selector_0_1_0_0_0 = grc_blks2.selector(
			item_size=gr.sizeof_float*1,
			num_inputs=4,
			num_outputs=1,
			input_index=modulacion3,
			output_index=0,
		)
		self.blks2_selector_0_1_0_0 = grc_blks2.selector(
			item_size=gr.sizeof_float*1,
			num_inputs=4,
			num_outputs=1,
			input_index=modulacion2,
			output_index=0,
		)
		self.blks2_selector_0_1_0 = grc_blks2.selector(
			item_size=gr.sizeof_float*1,
			num_inputs=4,
			num_outputs=1,
			input_index=modulacion,
			output_index=0,
		)
		self.blks2_selector_0_0_0_0_0 = grc_blks2.selector(
			item_size=gr.sizeof_gr_complex*1,
			num_inputs=1,
			num_outputs=4,
			input_index=0,
			output_index=modulacion3,
		)
		self.blks2_selector_0_0_0_0 = grc_blks2.selector(
			item_size=gr.sizeof_gr_complex*1,
			num_inputs=1,
			num_outputs=4,
			input_index=0,
			output_index=modulacion2,
		)
		self.blks2_selector_0_0_0 = grc_blks2.selector(
			item_size=gr.sizeof_gr_complex*1,
			num_inputs=1,
			num_outputs=4,
			input_index=0,
			output_index=modulacion,
		)
		self.blks2_selector_0_0 = grc_blks2.selector(
			item_size=gr.sizeof_float*1,
			num_inputs=3,
			num_outputs=1,
			input_index=disp,
			output_index=0,
		)
		self.blks2_selector_0 = grc_blks2.selector(
			item_size=gr.sizeof_gr_complex*1,
			num_inputs=4,
			num_outputs=1,
			input_index=disp,
			output_index=0,
		)
		self.blks2_fm_deemph_0_0 = blks2.fm_deemph(fs=samp_rate/4, tau=0.000075)
		self.blks2_fm_deemph_0 = blks2.fm_deemph(fs=samp_rate/4, tau=0.000075)
		self.band_pass_filter_0_1_0 = gr.fir_filter_fff(1, firdes.band_pass(
			Volumen3, samp_rate/dec, 200, BW3, 150, firdes.WIN_HAMMING, 6.76))
		self.band_pass_filter_0_1 = gr.fir_filter_fff(1, firdes.band_pass(
			Volumen2, samp_rate/dec, 200, BW2, 150, firdes.WIN_HAMMING, 6.76))
		self.band_pass_filter_0_0_0 = gr.fir_filter_fff(1, firdes.band_pass(
			separation*stereo*500, samp_rate, 18600, 19400, 400, firdes.WIN_HAMMING, 6.76))
		self.band_pass_filter_0_0 = gr.fir_filter_fff(1, firdes.band_pass(
			2, samp_rate, 23000, 53000, 4000, firdes.WIN_HAMMING, 6.76))
		self.band_pass_filter_0 = gr.fir_filter_fff(1, firdes.band_pass(
			Volumen, samp_rate/dec, 200, BW, 150, firdes.WIN_HAMMING, 6.76))
		self.audio_source_0 = audio.source(samp_rate, hw, False)
		self.audio_sink_0_1_0_0 = audio.sink(audio_rate, "default", True)
		self.audio_sink_0_1_0 = audio.sink(audio_rate, "default", True)
		self.audio_sink_0_1 = audio.sink(audio_rate, "default", True)
		self.audio_sink_0_0 = audio.sink(48000, "default", False)

		##################################################
		# Connections
		##################################################
		self.connect((self.gr_pwr_squelch_xx_0_0_0_0, 0), (self.blks2_wfm_rcv_0, 0))
		self.connect((self.gr_agc2_xx_0_0_0_0, 0), (self.gr_pwr_squelch_xx_0_0_0_0, 0))
		self.connect((self.blks2_valve_0_0, 0), (self.gr_agc2_xx_0_0_0_0, 0))
		self.connect((self.gr_multiply_const_vxx_0_0_0_1_1, 0), (self.blks2_valve_0_0, 0))
		self.connect((self.gr_multiply_const_vxx_0_0_0_1_1, 0), (self.blks2_valve_0_0_0_0_0_0, 0))
		self.connect((self.gr_multiply_const_vxx_0_0_0_1_1, 0), (self.gr_throttle_0, 0))
		self.connect((self.gr_multiply_const_vxx_0_0_0_1_1, 0), (self.blks2_valve_0_0_0_0_1_0, 0))
		self.connect((self.gr_multiply_const_vxx_0_0_0_1_1, 0), (self.blks2_valve_0_0_0_0_0, 0))
		self.connect((self.gr_throttle_0, 0), (self.blks2_selector_0, 3))
		self.connect((self.blks2_valve_0_0_0_0_1_0, 0), (self.gr_file_sink_0_0_0, 0))
		self.connect((self.blks2_valve_0_1_0_0_0, 0), (self.gr_wavfile_sink_0_0_0_0, 1))
		self.connect((self.blks2_valve_0_1_0_0, 0), (self.gr_wavfile_sink_0_0_0_0, 0))
		self.connect((self.low_pass_filter_1_0, 0), (self.blks2_fm_deemph_0_0, 0))
		self.connect((self.low_pass_filter_1, 0), (self.blks2_fm_deemph_0, 0))
		self.connect((self.blks2_wfm_rcv_0, 0), (self.low_pass_filter_0, 0))
		self.connect((self.gr_multiply_xx_0_0_0, 0), (self.gr_sub_xx_0, 1))
		self.connect((self.low_pass_filter_0, 0), (self.gr_sub_xx_0, 0))
		self.connect((self.low_pass_filter_0, 0), (self.gr_add_xx_0, 0))
		self.connect((self.gr_sub_xx_0, 0), (self.low_pass_filter_1, 0))
		self.connect((self.band_pass_filter_0_0_0, 0), (self.gr_multiply_xx_0_0_0, 2))
		self.connect((self.band_pass_filter_0_0_0, 0), (self.gr_multiply_xx_0_0_0, 1))
		self.connect((self.blks2_wfm_rcv_0, 0), (self.band_pass_filter_0_0_0, 0))
		self.connect((self.gr_add_xx_0, 0), (self.low_pass_filter_1_0, 0))
		self.connect((self.gr_multiply_xx_0_0_0, 0), (self.gr_add_xx_0, 1))
		self.connect((self.blks2_wfm_rcv_0, 0), (self.band_pass_filter_0_0, 0))
		self.connect((self.band_pass_filter_0_0, 0), (self.gr_multiply_xx_0_0_0, 0))
		self.connect((self.gr_nlog10_ff_0, 0), (self.wxgui_numbersink2_0, 0))
		self.connect((self.gr_rms_xx_0, 0), (self.gr_nlog10_ff_0, 0))
		self.connect((self.blks2_selector_0, 0), (self.gr_rms_xx_0, 0))
		self.connect((self.blks2_fm_deemph_0_0, 0), (self.blks2_valve_0_1_0_0_0, 0))
		self.connect((self.blks2_fm_deemph_0_0, 0), (self.audio_sink_0_0, 1))
		self.connect((self.blks2_fm_deemph_0, 0), (self.audio_sink_0_0, 0))
		self.connect((self.blks2_fm_deemph_0, 0), (self.blks2_valve_0_1_0_0, 0))
		self.connect((self.blks2_selector_0, 0), (self.wxgui_waterfallsink2_0, 0))
		self.connect((self.gr_throttle_0_0_0, 0), (self.blks2_selector_0, 0))
		self.connect((self.blks2_selector_0, 0), (self.wxgui_fftsink2_0, 0))
		self.connect((self.blks2_valve_0_1, 0), (self.gr_wavfile_sink_0_0, 0))
		self.connect((self.gr_complex_to_real_0_0, 0), (self.blks2_selector_0_1_0, 2))
		self.connect((self.gr_sig_source_x_0_0_0_0, 0), (self.gr_multiply_xx_0_1, 1))
		self.connect((self.gr_sig_source_x_0_0, 0), (self.gr_multiply_xx_0_0, 0))
		self.connect((self.gr_multiply_const_vxx_0_0_0_1_0, 0), (self.gr_complex_to_real_0_0, 0))
		self.connect((self.gr_agc2_xx_0_0, 0), (self.blks2_selector_0_0_0, 0))
		self.connect((self.low_pass_filter_0_0_0, 0), (self.gr_multiply_xx_0_1_0, 0))
		self.connect((self.blks2_valve_0_2, 0), (self.gr_file_sink_0, 0))
		self.connect((self.gr_sig_source_x_0_0_0_0_0, 0), (self.gr_multiply_xx_0_1_0, 1))
		self.connect((self.gr_pwr_squelch_xx_0_0, 0), (self.gr_agc2_xx_0_0, 0))
		self.connect((self.blks2_valve_0_0_0_0_0, 0), (self.gr_multiply_xx_0_1, 0))
		self.connect((self.gr_fractional_interpolator_xx_0_0, 0), (self.audio_sink_0_1, 0))
		self.connect((self.gr_multiply_xx_0_0, 0), (self.band_pass_filter_0, 0))
		self.connect((self.band_pass_filter_0, 0), (self.gr_fractional_interpolator_xx_0_0, 0))
		self.connect((self.band_pass_filter_0, 0), (self.blks2_valve_0_1, 0))
		self.connect((self.blks2_selector_0_1_0, 0), (self.gr_multiply_xx_0_0, 1))
		self.connect((self.blks2_selector_0_0_0, 1), (self.gr_rms_xx_0_0, 0))
		self.connect((self.gr_rms_xx_0_0, 0), (self.blks2_selector_0_1_0, 1))
		self.connect((self.gr_multiply_xx_0_1, 0), (self.low_pass_filter_0_0_0, 0))
		self.connect((self.blks2_selector_0_0_0, 0), (self.gr_quadrature_demod_cf_0, 0))
		self.connect((self.gr_quadrature_demod_cf_0, 0), (self.gr_multiply_const_vxx_0_0_0_1_0_0, 0))
		self.connect((self.gr_multiply_const_vxx_0_0_0_1_0_0, 0), (self.blks2_selector_0_1_0, 0))
		self.connect((self.blks2_selector_0_0_0, 2), (self.gr_multiply_const_vxx_0_0_0_1_0, 0))
		self.connect((self.blks2_selector_0_0_0, 3), (self.gr_multiply_const_vxx_0_0_0_1, 0))
		self.connect((self.gr_multiply_const_vxx_0_0_0_1, 0), (self.gr_complex_to_real_0_0_0, 0))
		self.connect((self.gr_complex_to_real_0_0_0, 0), (self.blks2_selector_0_1_0, 3))
		self.connect((self.low_pass_filter_0_0, 0), (self.gr_pwr_squelch_xx_0_0, 0))
		self.connect((self.low_pass_filter_0_0, 0), (self.blks2_valve_0_2, 0))
		self.connect((self.low_pass_filter_0_0, 0), (self.gr_throttle_0_0_0, 0))
		self.connect((self.gr_multiply_xx_0_1_0, 0), (self.low_pass_filter_0_0, 0))
		self.connect((self.gr_fractional_interpolator_xx_0_0_0, 0), (self.audio_sink_0_1_0, 0))
		self.connect((self.gr_throttle_0_0_0_0, 0), (self.blks2_selector_0, 1))
		self.connect((self.gr_fractional_interpolator_xx_0_0_0_0, 0), (self.audio_sink_0_1_0_0, 0))
		self.connect((self.gr_sig_source_x_0_0_0_1, 0), (self.gr_multiply_xx_0_0_1_0, 0))
		self.connect((self.gr_multiply_const_vxx_0_0_0_1_1, 0), (self.blks2_valve_0_0_0_0_0_0_0, 0))
		self.connect((self.gr_throttle_0_0_0_0_0, 0), (self.blks2_selector_0, 2))
		self.connect((self.audio_source_0, 0), (self.gr_float_to_complex_0, 1))
		self.connect((self.audio_source_0, 1), (self.gr_float_to_complex_0, 0))
		self.connect((self.gr_float_to_complex_0, 0), (self.gr_multiply_const_vxx_0_0_0_1_1, 0))
		self.connect((self.low_pass_filter_0_0_1_0, 0), (self.gr_throttle_0_0_0_0_0, 0))
		self.connect((self.blks2_valve_0_0_0_0_0_0_0, 0), (self.gr_multiply_xx_0_1_1_0, 0))
		self.connect((self.blks2_valve_0_1_0_1, 0), (self.gr_wavfile_sink_0_0_0_1, 0))
		self.connect((self.gr_multiply_xx_0_1_0_0_0, 0), (self.low_pass_filter_0_0_1_0, 0))
		self.connect((self.low_pass_filter_0_0_1_0, 0), (self.blks2_valve_0_2_0_0, 0))
		self.connect((self.low_pass_filter_0_0_1_0, 0), (self.gr_pwr_squelch_xx_0_0_0_1, 0))
		self.connect((self.gr_complex_to_real_0_0_0_0_0, 0), (self.blks2_selector_0_1_0_0_0, 3))
		self.connect((self.gr_multiply_const_vxx_0_0_0_1_2_0, 0), (self.gr_complex_to_real_0_0_0_0_0, 0))
		self.connect((self.blks2_selector_0_0_0_0_0, 3), (self.gr_multiply_const_vxx_0_0_0_1_2_0, 0))
		self.connect((self.blks2_selector_0_0_0_0_0, 2), (self.gr_multiply_const_vxx_0_0_0_1_0_1_0, 0))
		self.connect((self.gr_multiply_xx_0_1_1_0, 0), (self.low_pass_filter_0_0_0_0_0, 0))
		self.connect((self.gr_rms_xx_0_0_0_0, 0), (self.blks2_selector_0_1_0_0_0, 1))
		self.connect((self.blks2_selector_0_0_0_0_0, 1), (self.gr_rms_xx_0_0_0_0, 0))
		self.connect((self.blks2_selector_0_1_0_0_0, 0), (self.gr_multiply_xx_0_0_1_0, 1))
		self.connect((self.gr_multiply_xx_0_0_1_0, 0), (self.band_pass_filter_0_1_0, 0))
		self.connect((self.gr_pwr_squelch_xx_0_0_0_1, 0), (self.gr_agc2_xx_0_0_0_1, 0))
		self.connect((self.gr_sig_source_x_0_0_0_0_0_0_0, 0), (self.gr_multiply_xx_0_1_0_0_0, 1))
		self.connect((self.blks2_valve_0_2_0_0, 0), (self.gr_file_sink_0_0_1, 0))
		self.connect((self.low_pass_filter_0_0_0_0_0, 0), (self.gr_multiply_xx_0_1_0_0_0, 0))
		self.connect((self.gr_agc2_xx_0_0_0_1, 0), (self.blks2_selector_0_0_0_0_0, 0))
		self.connect((self.gr_multiply_const_vxx_0_0_0_1_0_1_0, 0), (self.gr_complex_to_real_0_0_1_0, 0))
		self.connect((self.gr_sig_source_x_0_0_0_0_1_0, 0), (self.gr_multiply_xx_0_1_1_0, 1))
		self.connect((self.gr_complex_to_real_0_0_1_0, 0), (self.blks2_selector_0_1_0_0_0, 2))
		self.connect((self.band_pass_filter_0_1_0, 0), (self.gr_fractional_interpolator_xx_0_0_0_0, 0))
		self.connect((self.band_pass_filter_0_1_0, 0), (self.blks2_valve_0_1_0_1, 0))
		self.connect((self.blks2_valve_0_0_0_0_0_0, 0), (self.gr_multiply_xx_0_1_1, 0))
		self.connect((self.low_pass_filter_0_0_1, 0), (self.gr_throttle_0_0_0_0, 0))
		self.connect((self.gr_multiply_xx_0_1_0_0, 0), (self.low_pass_filter_0_0_1, 0))
		self.connect((self.low_pass_filter_0_0_1, 0), (self.blks2_valve_0_2_0, 0))
		self.connect((self.low_pass_filter_0_0_1, 0), (self.gr_pwr_squelch_xx_0_0_0, 0))
		self.connect((self.gr_complex_to_real_0_0_0_0, 0), (self.blks2_selector_0_1_0_0, 3))
		self.connect((self.gr_multiply_const_vxx_0_0_0_1_2, 0), (self.gr_complex_to_real_0_0_0_0, 0))
		self.connect((self.blks2_selector_0_0_0_0, 3), (self.gr_multiply_const_vxx_0_0_0_1_2, 0))
		self.connect((self.blks2_selector_0_0_0_0, 2), (self.gr_multiply_const_vxx_0_0_0_1_0_1, 0))
		self.connect((self.gr_multiply_xx_0_1_1, 0), (self.low_pass_filter_0_0_0_0, 0))
		self.connect((self.gr_rms_xx_0_0_0, 0), (self.blks2_selector_0_1_0_0, 1))
		self.connect((self.blks2_selector_0_0_0_0, 1), (self.gr_rms_xx_0_0_0, 0))
		self.connect((self.blks2_selector_0_1_0_0, 0), (self.gr_multiply_xx_0_0_1, 1))
		self.connect((self.gr_multiply_xx_0_0_1, 0), (self.band_pass_filter_0_1, 0))
		self.connect((self.gr_pwr_squelch_xx_0_0_0, 0), (self.gr_agc2_xx_0_0_0, 0))
		self.connect((self.gr_sig_source_x_0_0_0_0_0_0, 0), (self.gr_multiply_xx_0_1_0_0, 1))
		self.connect((self.blks2_valve_0_2_0, 0), (self.gr_file_sink_0_0, 0))
		self.connect((self.low_pass_filter_0_0_0_0, 0), (self.gr_multiply_xx_0_1_0_0, 0))
		self.connect((self.gr_agc2_xx_0_0_0, 0), (self.blks2_selector_0_0_0_0, 0))
		self.connect((self.gr_multiply_const_vxx_0_0_0_1_0_1, 0), (self.gr_complex_to_real_0_0_1, 0))
		self.connect((self.gr_sig_source_x_0_0_0, 0), (self.gr_multiply_xx_0_0_1, 0))
		self.connect((self.gr_sig_source_x_0_0_0_0_1, 0), (self.gr_multiply_xx_0_1_1, 1))
		self.connect((self.gr_complex_to_real_0_0_1, 0), (self.blks2_selector_0_1_0_0, 2))
		self.connect((self.blks2_valve_0_1_0, 0), (self.gr_wavfile_sink_0_0_0, 0))
		self.connect((self.band_pass_filter_0_1, 0), (self.gr_fractional_interpolator_xx_0_0_0, 0))
		self.connect((self.band_pass_filter_0_1, 0), (self.blks2_valve_0_1_0, 0))
		self.connect((self.blks2_selector_0_0_0_0, 0), (self.gr_quadrature_demod_cf_0_0, 0))
		self.connect((self.gr_quadrature_demod_cf_0_0, 0), (self.gr_multiply_const_vxx_0_0_0_1_0_0_0, 0))
		self.connect((self.gr_multiply_const_vxx_0_0_0_1_0_0_0, 0), (self.blks2_selector_0_1_0_0, 0))
		self.connect((self.gr_quadrature_demod_cf_0_0_0, 0), (self.gr_multiply_const_vxx_0_0_0_1_0_0_0_0, 0))
		self.connect((self.blks2_selector_0_0_0_0_0, 0), (self.gr_quadrature_demod_cf_0_0_0, 0))
		self.connect((self.gr_multiply_const_vxx_0_0_0_1_0_0_0_0, 0), (self.blks2_selector_0_1_0_0_0, 0))
		self.connect((self.blks2_selector_0_0, 0), (self.wxgui_fftsink2_1, 0))
		self.connect((self.band_pass_filter_0_1, 0), (self.blks2_selector_0_0, 1))
		self.connect((self.band_pass_filter_0, 0), (self.blks2_selector_0_0, 0))
		self.connect((self.band_pass_filter_0_1_0, 0), (self.blks2_selector_0_0, 2))

	def get_samp_rate(self):
		return self.samp_rate

	def set_samp_rate(self, samp_rate):
		self.samp_rate = samp_rate
		self.set_BW(self.samp_rate/(self.dec*4))
		self.set_BW2(self.samp_rate/(self.dec*4))
		self.set_BW3(self.samp_rate/(self.dec*4))
		self.band_pass_filter_0_0.set_taps(firdes.band_pass(2, self.samp_rate, 23000, 53000, 4000, firdes.WIN_HAMMING, 6.76))
		self.wxgui_fftsink2_0.set_sample_rate(((self.disp==3)*(self.samp_rate-(self.samp_rate/self.dec)))+(self.samp_rate/self.dec))
		self.wxgui_waterfallsink2_0.set_sample_rate(((self.disp==3)*(self.samp_rate-(self.samp_rate/self.dec)))+(self.samp_rate/self.dec))
		self.low_pass_filter_1_0.set_taps(firdes.low_pass(20*self.volst, self.samp_rate, 14000, 2000, firdes.WIN_HAMMING, 6.76))
		self.low_pass_filter_1.set_taps(firdes.low_pass(20*self.volst, self.samp_rate, 14000, 2000, firdes.WIN_HAMMING, 6.76))
		self.low_pass_filter_0.set_taps(firdes.low_pass(1, self.samp_rate, 15000, 2000, firdes.WIN_HAMMING, 6.76))
		self.gr_sig_source_x_0_0_0_0.set_sampling_freq(self.samp_rate)
		self.low_pass_filter_0_0_0.set_taps(firdes.low_pass(1, self.samp_rate, self.BW, 1000, firdes.WIN_HAMMING, 6.76))
		self.gr_sig_source_x_0_0.set_sampling_freq(self.samp_rate/self.dec)
		self.gr_sig_source_x_0_0_0_0_0.set_sampling_freq(self.samp_rate/self.dec)
		self.low_pass_filter_0_0.set_taps(firdes.low_pass(1, self.samp_rate/self.dec, self.BW, 250, firdes.WIN_HAMMING, 6.76))
		self.band_pass_filter_0_0_0.set_taps(firdes.band_pass(self.separation*self.stereo*500, self.samp_rate, 18600, 19400, 400, firdes.WIN_HAMMING, 6.76))
		self.low_pass_filter_0_0_1.set_taps(firdes.low_pass(1, self.samp_rate/self.dec, self.BW2, 250, firdes.WIN_HAMMING, 6.76))
		self.gr_sig_source_x_0_0_0.set_sampling_freq(self.samp_rate/self.dec)
		self.gr_sig_source_x_0_0_0_0_0_0.set_sampling_freq(self.samp_rate/self.dec)
		self.low_pass_filter_0_0_0_0.set_taps(firdes.low_pass(1, self.samp_rate, self.BW2, 1000, firdes.WIN_HAMMING, 6.76))
		self.set_variable_static_text_0_0(self.samp_rate)
		self.band_pass_filter_0_1.set_taps(firdes.band_pass(self.Volumen2, self.samp_rate/self.dec, 200, self.BW2, 150, firdes.WIN_HAMMING, 6.76))
		self.wxgui_fftsink2_1.set_sample_rate(self.samp_rate/self.dec)
		self.gr_sig_source_x_0_0_0_0_1.set_sampling_freq(self.samp_rate)
		self.gr_sig_source_x_0_0_0_0_1_0.set_sampling_freq(self.samp_rate)
		self.low_pass_filter_0_0_0_0_0.set_taps(firdes.low_pass(1, self.samp_rate, self.BW3, 1000, firdes.WIN_HAMMING, 6.76))
		self.gr_sig_source_x_0_0_0_0_0_0_0.set_sampling_freq(self.samp_rate/self.dec)
		self.low_pass_filter_0_0_1_0.set_taps(firdes.low_pass(1, self.samp_rate/self.dec, self.BW3, 250, firdes.WIN_HAMMING, 6.76))
		self.gr_sig_source_x_0_0_0_1.set_sampling_freq(self.samp_rate/self.dec)
		self.band_pass_filter_0.set_taps(firdes.band_pass(self.Volumen, self.samp_rate/self.dec, 200, self.BW, 150, firdes.WIN_HAMMING, 6.76))
		self.band_pass_filter_0_1_0.set_taps(firdes.band_pass(self.Volumen3, self.samp_rate/self.dec, 200, self.BW3, 150, firdes.WIN_HAMMING, 6.76))
		self.gr_fractional_interpolator_xx_0_0_0_0.set_interp_ratio(((self.samp_rate/self.dec) *1.0) / self.audio_rate  )
		self.gr_fractional_interpolator_xx_0_0_0.set_interp_ratio(((self.samp_rate/self.dec) *1.0) / self.audio_rate  )
		self.gr_fractional_interpolator_xx_0_0.set_interp_ratio(((self.samp_rate/self.dec) *1.0) / self.audio_rate  )

	def get_dec(self):
		return self.dec

	def set_dec(self, dec):
		self.dec = dec
		self.set_BW(self.samp_rate/(self.dec*4))
		self.set_BW2(self.samp_rate/(self.dec*4))
		self.set_BW3(self.samp_rate/(self.dec*4))
		self.wxgui_fftsink2_0.set_sample_rate(((self.disp==3)*(self.samp_rate-(self.samp_rate/self.dec)))+(self.samp_rate/self.dec))
		self.wxgui_waterfallsink2_0.set_sample_rate(((self.disp==3)*(self.samp_rate-(self.samp_rate/self.dec)))+(self.samp_rate/self.dec))
		self.gr_sig_source_x_0_0.set_sampling_freq(self.samp_rate/self.dec)
		self.gr_sig_source_x_0_0_0_0_0.set_sampling_freq(self.samp_rate/self.dec)
		self.low_pass_filter_0_0.set_taps(firdes.low_pass(1, self.samp_rate/self.dec, self.BW, 250, firdes.WIN_HAMMING, 6.76))
		self.low_pass_filter_0_0_1.set_taps(firdes.low_pass(1, self.samp_rate/self.dec, self.BW2, 250, firdes.WIN_HAMMING, 6.76))
		self.gr_sig_source_x_0_0_0.set_sampling_freq(self.samp_rate/self.dec)
		self.gr_sig_source_x_0_0_0_0_0_0.set_sampling_freq(self.samp_rate/self.dec)
		self.set_variable_static_text_0(self.dec)
		self.band_pass_filter_0_1.set_taps(firdes.band_pass(self.Volumen2, self.samp_rate/self.dec, 200, self.BW2, 150, firdes.WIN_HAMMING, 6.76))
		self.wxgui_fftsink2_1.set_sample_rate(self.samp_rate/self.dec)
		self.gr_sig_source_x_0_0_0_0_0_0_0.set_sampling_freq(self.samp_rate/self.dec)
		self.low_pass_filter_0_0_1_0.set_taps(firdes.low_pass(1, self.samp_rate/self.dec, self.BW3, 250, firdes.WIN_HAMMING, 6.76))
		self.gr_sig_source_x_0_0_0_1.set_sampling_freq(self.samp_rate/self.dec)
		self.band_pass_filter_0.set_taps(firdes.band_pass(self.Volumen, self.samp_rate/self.dec, 200, self.BW, 150, firdes.WIN_HAMMING, 6.76))
		self.band_pass_filter_0_1_0.set_taps(firdes.band_pass(self.Volumen3, self.samp_rate/self.dec, 200, self.BW3, 150, firdes.WIN_HAMMING, 6.76))
		self.gr_fractional_interpolator_xx_0_0_0_0.set_interp_ratio(((self.samp_rate/self.dec) *1.0) / self.audio_rate  )
		self.gr_fractional_interpolator_xx_0_0_0.set_interp_ratio(((self.samp_rate/self.dec) *1.0) / self.audio_rate  )
		self.gr_fractional_interpolator_xx_0_0.set_interp_ratio(((self.samp_rate/self.dec) *1.0) / self.audio_rate  )

	def get_audio_rate(self):
		return self.audio_rate

	def set_audio_rate(self, audio_rate):
		self.audio_rate = audio_rate
		self.gr_fractional_interpolator_xx_0_0_0_0.set_interp_ratio(((self.samp_rate/self.dec) *1.0) / self.audio_rate  )
		self.gr_fractional_interpolator_xx_0_0_0.set_interp_ratio(((self.samp_rate/self.dec) *1.0) / self.audio_rate  )
		self.gr_fractional_interpolator_xx_0_0.set_interp_ratio(((self.samp_rate/self.dec) *1.0) / self.audio_rate  )

	def get_hw(self):
		return self.hw

	def set_hw(self, hw):
		self.hw = hw
		self.set_variable_static_text_0_0_0(self.hw)

	def get_wavfile_st(self):
		return self.wavfile_st

	def set_wavfile_st(self, wavfile_st):
		self.wavfile_st = wavfile_st
		self.gr_wavfile_sink_0_0_0_0.open(self.wavfile_st)
		self._wavfile_st_text_box.set_value(self.wavfile_st)

	def get_wavfile3(self):
		return self.wavfile3

	def set_wavfile3(self, wavfile3):
		self.wavfile3 = wavfile3
		self._wavfile3_text_box.set_value(self.wavfile3)
		self.gr_wavfile_sink_0_0_0_1.open(self.wavfile3)

	def get_wavfile2(self):
		return self.wavfile2

	def set_wavfile2(self, wavfile2):
		self.wavfile2 = wavfile2
		self._wavfile2_text_box.set_value(self.wavfile2)
		self.gr_wavfile_sink_0_0_0.open(self.wavfile2)

	def get_wavfile(self):
		return self.wavfile

	def set_wavfile(self, wavfile):
		self.wavfile = wavfile
		self._wavfile_text_box.set_value(self.wavfile)
		self.gr_wavfile_sink_0_0.open(self.wavfile)

	def get_volst(self):
		return self.volst

	def set_volst(self, volst):
		self.volst = volst
		self._volst_slider.set_value(self.volst)
		self._volst_text_box.set_value(self.volst)
		self.low_pass_filter_1_0.set_taps(firdes.low_pass(20*self.volst, self.samp_rate, 14000, 2000, firdes.WIN_HAMMING, 6.76))
		self.low_pass_filter_1.set_taps(firdes.low_pass(20*self.volst, self.samp_rate, 14000, 2000, firdes.WIN_HAMMING, 6.76))

	def get_variable_static_text_0_0_0(self):
		return self.variable_static_text_0_0_0

	def set_variable_static_text_0_0_0(self, variable_static_text_0_0_0):
		self.variable_static_text_0_0_0 = variable_static_text_0_0_0
		self._variable_static_text_0_0_0_static_text.set_value(self.variable_static_text_0_0_0)

	def get_variable_static_text_0_0(self):
		return self.variable_static_text_0_0

	def set_variable_static_text_0_0(self, variable_static_text_0_0):
		self.variable_static_text_0_0 = variable_static_text_0_0
		self._variable_static_text_0_0_static_text.set_value(self.variable_static_text_0_0)

	def get_variable_static_text_0(self):
		return self.variable_static_text_0

	def set_variable_static_text_0(self, variable_static_text_0):
		self.variable_static_text_0 = variable_static_text_0
		self._variable_static_text_0_static_text.set_value(self.variable_static_text_0)

	def get_stereo(self):
		return self.stereo

	def set_stereo(self, stereo):
		self.stereo = stereo
		self.band_pass_filter_0_0_0.set_taps(firdes.band_pass(self.separation*self.stereo*500, self.samp_rate, 18600, 19400, 400, firdes.WIN_HAMMING, 6.76))
		self._stereo_check_box.set_value(self.stereo)

	def get_sqlst(self):
		return self.sqlst

	def set_sqlst(self, sqlst):
		self.sqlst = sqlst
		self._sqlst_slider.set_value(self.sqlst)
		self._sqlst_text_box.set_value(self.sqlst)
		self.gr_pwr_squelch_xx_0_0_0_0.set_threshold(self.sqlst)

	def get_separation(self):
		return self.separation

	def set_separation(self, separation):
		self.separation = separation
		self.band_pass_filter_0_0_0.set_taps(firdes.band_pass(self.separation*self.stereo*500, self.samp_rate, 18600, 19400, 400, firdes.WIN_HAMMING, 6.76))
		self._separation_slider.set_value(self.separation)
		self._separation_text_box.set_value(self.separation)

	def get_rec3(self):
		return self.rec3

	def set_rec3(self, rec3):
		self.rec3 = rec3
		self._rec3_check_box.set_value(self.rec3)
		self.blks2_valve_0_1_0_1.set_open(bool(self.rec3==0))

	def get_rec2(self):
		return self.rec2

	def set_rec2(self, rec2):
		self.rec2 = rec2
		self._rec2_check_box.set_value(self.rec2)
		self.blks2_valve_0_1_0.set_open(bool(self.rec2==0))

	def get_rec(self):
		return self.rec

	def set_rec(self, rec):
		self.rec = rec
		self._rec_check_box.set_value(self.rec)
		self.blks2_valve_0_1.set_open(bool(self.rec==0))

	def get_modulacion3(self):
		return self.modulacion3

	def set_modulacion3(self, modulacion3):
		self.modulacion3 = modulacion3
		self._modulacion3_chooser.set_value(self.modulacion3)
		self.gr_sig_source_x_0_0_0_0_1_0.set_frequency(-self.centro3+self.fine3-((self.modulacion3==2)*self.BW3)+((self.modulacion3==3)*self.BW3))
		self.gr_sig_source_x_0_0_0_0_0_0_0.set_frequency((self.modulacion3==2)*self.BW3-(self.modulacion3==3)*self.BW3)
		self.blks2_selector_0_0_0_0_0.set_output_index(int(self.modulacion3))
		self.blks2_selector_0_1_0_0_0.set_input_index(int(self.modulacion3))

	def get_modulacion2(self):
		return self.modulacion2

	def set_modulacion2(self, modulacion2):
		self.modulacion2 = modulacion2
		self._modulacion2_chooser.set_value(self.modulacion2)
		self.blks2_selector_0_1_0_0.set_input_index(int(self.modulacion2))
		self.blks2_selector_0_0_0_0.set_output_index(int(self.modulacion2))
		self.gr_sig_source_x_0_0_0_0_0_0.set_frequency((self.modulacion2==2)*self.BW2-(self.modulacion2==3)*self.BW2)
		self.gr_sig_source_x_0_0_0_0_1.set_frequency(-self.centro2+self.fine2-((self.modulacion2==2)*self.BW2)+((self.modulacion2==3)*self.BW2))

	def get_modulacion(self):
		return self.modulacion

	def set_modulacion(self, modulacion):
		self.modulacion = modulacion
		self._modulacion_chooser.set_value(self.modulacion)
		self.blks2_selector_0_0_0.set_output_index(int(self.modulacion))
		self.gr_sig_source_x_0_0_0_0.set_frequency(-self.centro+self.fine-((self.modulacion==2)*self.BW)+((self.modulacion==3)*self.BW))
		self.gr_sig_source_x_0_0_0_0_0.set_frequency((self.modulacion==2)*self.BW-(self.modulacion==3)*self.BW)
		self.blks2_selector_0_1_0.set_input_index(int(self.modulacion))

	def get_modfreq3(self):
		return self.modfreq3

	def set_modfreq3(self, modfreq3):
		self.modfreq3 = modfreq3
		self._modfreq3_slider.set_value(self.modfreq3)
		self._modfreq3_text_box.set_value(self.modfreq3)
		self.gr_sig_source_x_0_0_0_1.set_frequency(self.modfreq3)

	def get_modfreq2(self):
		return self.modfreq2

	def set_modfreq2(self, modfreq2):
		self.modfreq2 = modfreq2
		self._modfreq2_slider.set_value(self.modfreq2)
		self._modfreq2_text_box.set_value(self.modfreq2)
		self.gr_sig_source_x_0_0_0.set_frequency(self.modfreq2)

	def get_modfreq(self):
		return self.modfreq

	def set_modfreq(self, modfreq):
		self.modfreq = modfreq
		self._modfreq_slider.set_value(self.modfreq)
		self._modfreq_text_box.set_value(self.modfreq)
		self.gr_sig_source_x_0_0.set_frequency(self.modfreq)

	def get_iqrec(self):
		return self.iqrec

	def set_iqrec(self, iqrec):
		self.iqrec = iqrec
		self._iqrec_check_box.set_value(self.iqrec)
		self.blks2_valve_0_0_0_0_1_0.set_open(bool(self.iqrec==0))

	def get_iqfile(self):
		return self.iqfile

	def set_iqfile(self, iqfile):
		self.iqfile = iqfile
		self._iqfile_text_box.set_value(self.iqfile)
		self.gr_file_sink_0_0_0.open(self.iqfile)

	def get_iq3rec(self):
		return self.iq3rec

	def set_iq3rec(self, iq3rec):
		self.iq3rec = iq3rec
		self._iq3rec_check_box.set_value(self.iq3rec)
		self.blks2_valve_0_2_0_0.set_open(bool(self.iq3rec==0))

	def get_iq3file(self):
		return self.iq3file

	def set_iq3file(self, iq3file):
		self.iq3file = iq3file
		self._iq3file_text_box.set_value(self.iq3file)
		self.gr_file_sink_0_0_1.open(self.iq3file)

	def get_iq2rec(self):
		return self.iq2rec

	def set_iq2rec(self, iq2rec):
		self.iq2rec = iq2rec
		self.blks2_valve_0_2_0.set_open(bool(self.iq2rec==0))
		self._iq2rec_check_box.set_value(self.iq2rec)

	def get_iq2file(self):
		return self.iq2file

	def set_iq2file(self, iq2file):
		self.iq2file = iq2file
		self.gr_file_sink_0_0.open(self.iq2file)
		self._iq2file_text_box.set_value(self.iq2file)

	def get_iq1rec(self):
		return self.iq1rec

	def set_iq1rec(self, iq1rec):
		self.iq1rec = iq1rec
		self.blks2_valve_0_2.set_open(bool(self.iq1rec==0))
		self._iq1rec_check_box.set_value(self.iq1rec)

	def get_iq1file(self):
		return self.iq1file

	def set_iq1file(self, iq1file):
		self.iq1file = iq1file
		self._iq1file_text_box.set_value(self.iq1file)
		self.gr_file_sink_0.open(self.iq1file)

	def get_if3(self):
		return self.if3

	def set_if3(self, if3):
		self.if3 = if3
		self._if3_check_box.set_value(self.if3)
		self.blks2_valve_0_0_0_0_0_0_0.set_open(bool((self.if3==0)|(self.fmst==1)))

	def get_if2(self):
		return self.if2

	def set_if2(self, if2):
		self.if2 = if2
		self._if2_check_box.set_value(self.if2)
		self.blks2_valve_0_0_0_0_0_0.set_open(bool((self.if2==0)|(self.fmst==1)))

	def get_if1(self):
		return self.if1

	def set_if1(self, if1):
		self.if1 = if1
		self._if1_check_box.set_value(self.if1)
		self.blks2_valve_0_0_0_0_0.set_open(bool((self.if1==0)|(self.fmst==1)))

	def get_gain(self):
		return self.gain

	def set_gain(self, gain):
		self.gain = gain
		self._gain_slider.set_value(self.gain)
		self._gain_text_box.set_value(self.gain)
		self.gr_multiply_const_vxx_0_0_0_1_1.set_k((self.gain, ))

	def get_fmstrec(self):
		return self.fmstrec

	def set_fmstrec(self, fmstrec):
		self.fmstrec = fmstrec
		self._fmstrec_check_box.set_value(self.fmstrec)
		self.blks2_valve_0_1_0_0.set_open(bool(self.fmstrec==0))
		self.blks2_valve_0_1_0_0_0.set_open(bool(self.fmstrec==0))

	def get_fmst(self):
		return self.fmst

	def set_fmst(self, fmst):
		self.fmst = fmst
		self._fmst_check_box.set_value(self.fmst)
		self.blks2_valve_0_0.set_open(bool(self.fmst==0))
		self.blks2_valve_0_0_0_0_0.set_open(bool((self.if1==0)|(self.fmst==1)))
		self.blks2_valve_0_0_0_0_0_0.set_open(bool((self.if2==0)|(self.fmst==1)))
		self.blks2_valve_0_0_0_0_0_0_0.set_open(bool((self.if3==0)|(self.fmst==1)))

	def get_fine3(self):
		return self.fine3

	def set_fine3(self, fine3):
		self.fine3 = fine3
		self._fine3_slider.set_value(self.fine3)
		self._fine3_text_box.set_value(self.fine3)
		self.gr_sig_source_x_0_0_0_0_1_0.set_frequency(-self.centro3+self.fine3-((self.modulacion3==2)*self.BW3)+((self.modulacion3==3)*self.BW3))

	def get_fine2(self):
		return self.fine2

	def set_fine2(self, fine2):
		self.fine2 = fine2
		self._fine2_slider.set_value(self.fine2)
		self._fine2_text_box.set_value(self.fine2)
		self.gr_sig_source_x_0_0_0_0_1.set_frequency(-self.centro2+self.fine2-((self.modulacion2==2)*self.BW2)+((self.modulacion2==3)*self.BW2))

	def get_fine(self):
		return self.fine

	def set_fine(self, fine):
		self.fine = fine
		self.gr_sig_source_x_0_0_0_0.set_frequency(-self.centro+self.fine-((self.modulacion==2)*self.BW)+((self.modulacion==3)*self.BW))
		self._fine_slider.set_value(self.fine)
		self._fine_text_box.set_value(self.fine)

	def get_disp(self):
		return self.disp

	def set_disp(self, disp):
		self.disp = disp
		self.wxgui_fftsink2_0.set_sample_rate(((self.disp==3)*(self.samp_rate-(self.samp_rate/self.dec)))+(self.samp_rate/self.dec))
		self.wxgui_waterfallsink2_0.set_sample_rate(((self.disp==3)*(self.samp_rate-(self.samp_rate/self.dec)))+(self.samp_rate/self.dec))
		self._disp_chooser.set_value(self.disp)
		self.blks2_selector_0.set_input_index(int(self.disp))
		self.blks2_selector_0_0.set_input_index(int(self.disp))

	def get_centro3(self):
		return self.centro3

	def set_centro3(self, centro3):
		self.centro3 = centro3
		self._centro3_slider.set_value(self.centro3)
		self._centro3_text_box.set_value(self.centro3)
		self.gr_sig_source_x_0_0_0_0_1_0.set_frequency(-self.centro3+self.fine3-((self.modulacion3==2)*self.BW3)+((self.modulacion3==3)*self.BW3))

	def get_centro2(self):
		return self.centro2

	def set_centro2(self, centro2):
		self.centro2 = centro2
		self._centro2_slider.set_value(self.centro2)
		self._centro2_text_box.set_value(self.centro2)
		self.gr_sig_source_x_0_0_0_0_1.set_frequency(-self.centro2+self.fine2-((self.modulacion2==2)*self.BW2)+((self.modulacion2==3)*self.BW2))

	def get_centro(self):
		return self.centro

	def set_centro(self, centro):
		self.centro = centro
		self._centro_slider.set_value(self.centro)
		self._centro_text_box.set_value(self.centro)
		self.gr_sig_source_x_0_0_0_0.set_frequency(-self.centro+self.fine-((self.modulacion==2)*self.BW)+((self.modulacion==3)*self.BW))

	def get_Volumen3(self):
		return self.Volumen3

	def set_Volumen3(self, Volumen3):
		self.Volumen3 = Volumen3
		self._Volumen3_slider.set_value(self.Volumen3)
		self._Volumen3_text_box.set_value(self.Volumen3)
		self.band_pass_filter_0_1_0.set_taps(firdes.band_pass(self.Volumen3, self.samp_rate/self.dec, 200, self.BW3, 150, firdes.WIN_HAMMING, 6.76))

	def get_Volumen2(self):
		return self.Volumen2

	def set_Volumen2(self, Volumen2):
		self.Volumen2 = Volumen2
		self._Volumen2_slider.set_value(self.Volumen2)
		self._Volumen2_text_box.set_value(self.Volumen2)
		self.band_pass_filter_0_1.set_taps(firdes.band_pass(self.Volumen2, self.samp_rate/self.dec, 200, self.BW2, 150, firdes.WIN_HAMMING, 6.76))

	def get_Volumen(self):
		return self.Volumen

	def set_Volumen(self, Volumen):
		self.Volumen = Volumen
		self._Volumen_slider.set_value(self.Volumen)
		self._Volumen_text_box.set_value(self.Volumen)
		self.band_pass_filter_0.set_taps(firdes.band_pass(self.Volumen, self.samp_rate/self.dec, 200, self.BW, 150, firdes.WIN_HAMMING, 6.76))

	def get_Squelch3(self):
		return self.Squelch3

	def set_Squelch3(self, Squelch3):
		self.Squelch3 = Squelch3
		self._Squelch3_slider.set_value(self.Squelch3)
		self._Squelch3_text_box.set_value(self.Squelch3)
		self.gr_pwr_squelch_xx_0_0_0_1.set_threshold(self.Squelch3)

	def get_Squelch2(self):
		return self.Squelch2

	def set_Squelch2(self, Squelch2):
		self.Squelch2 = Squelch2
		self._Squelch2_slider.set_value(self.Squelch2)
		self._Squelch2_text_box.set_value(self.Squelch2)
		self.gr_pwr_squelch_xx_0_0_0.set_threshold(self.Squelch2)

	def get_Squelch(self):
		return self.Squelch

	def set_Squelch(self, Squelch):
		self.Squelch = Squelch
		self._Squelch_slider.set_value(self.Squelch)
		self._Squelch_text_box.set_value(self.Squelch)
		self.gr_pwr_squelch_xx_0_0.set_threshold(self.Squelch)

	def get_BW3(self):
		return self.BW3

	def set_BW3(self, BW3):
		self.BW3 = BW3
		self._BW3_slider.set_value(self.BW3)
		self._BW3_text_box.set_value(self.BW3)
		self.gr_sig_source_x_0_0_0_0_1_0.set_frequency(-self.centro3+self.fine3-((self.modulacion3==2)*self.BW3)+((self.modulacion3==3)*self.BW3))
		self.low_pass_filter_0_0_0_0_0.set_taps(firdes.low_pass(1, self.samp_rate, self.BW3, 1000, firdes.WIN_HAMMING, 6.76))
		self.gr_sig_source_x_0_0_0_0_0_0_0.set_frequency((self.modulacion3==2)*self.BW3-(self.modulacion3==3)*self.BW3)
		self.low_pass_filter_0_0_1_0.set_taps(firdes.low_pass(1, self.samp_rate/self.dec, self.BW3, 250, firdes.WIN_HAMMING, 6.76))
		self.band_pass_filter_0_1_0.set_taps(firdes.band_pass(self.Volumen3, self.samp_rate/self.dec, 200, self.BW3, 150, firdes.WIN_HAMMING, 6.76))

	def get_BW2(self):
		return self.BW2

	def set_BW2(self, BW2):
		self.BW2 = BW2
		self._BW2_slider.set_value(self.BW2)
		self._BW2_text_box.set_value(self.BW2)
		self.low_pass_filter_0_0_1.set_taps(firdes.low_pass(1, self.samp_rate/self.dec, self.BW2, 250, firdes.WIN_HAMMING, 6.76))
		self.gr_sig_source_x_0_0_0_0_0_0.set_frequency((self.modulacion2==2)*self.BW2-(self.modulacion2==3)*self.BW2)
		self.low_pass_filter_0_0_0_0.set_taps(firdes.low_pass(1, self.samp_rate, self.BW2, 1000, firdes.WIN_HAMMING, 6.76))
		self.band_pass_filter_0_1.set_taps(firdes.band_pass(self.Volumen2, self.samp_rate/self.dec, 200, self.BW2, 150, firdes.WIN_HAMMING, 6.76))
		self.gr_sig_source_x_0_0_0_0_1.set_frequency(-self.centro2+self.fine2-((self.modulacion2==2)*self.BW2)+((self.modulacion2==3)*self.BW2))

	def get_BW(self):
		return self.BW

	def set_BW(self, BW):
		self.BW = BW
		self._BW_slider.set_value(self.BW)
		self._BW_text_box.set_value(self.BW)
		self.gr_sig_source_x_0_0_0_0.set_frequency(-self.centro+self.fine-((self.modulacion==2)*self.BW)+((self.modulacion==3)*self.BW))
		self.low_pass_filter_0_0_0.set_taps(firdes.low_pass(1, self.samp_rate, self.BW, 1000, firdes.WIN_HAMMING, 6.76))
		self.gr_sig_source_x_0_0_0_0_0.set_frequency((self.modulacion==2)*self.BW-(self.modulacion==3)*self.BW)
		self.low_pass_filter_0_0.set_taps(firdes.low_pass(1, self.samp_rate/self.dec, self.BW, 250, firdes.WIN_HAMMING, 6.76))
		self.band_pass_filter_0.set_taps(firdes.band_pass(self.Volumen, self.samp_rate/self.dec, 200, self.BW, 150, firdes.WIN_HAMMING, 6.76))

if __name__ == '__main__':
	parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
	parser.add_option("-r", "--samp-rate", dest="samp_rate", type="intx", default=192000,
		help="Set rate [default=%default]")
	parser.add_option("-d", "--dec", dest="dec", type="intx", default=16,
		help="Set decimation [default=%default]")
	parser.add_option("-a", "--audio-rate", dest="audio_rate", type="intx", default=44100,
		help="Set audio [default=%default]")
	parser.add_option("-w", "--hw", dest="hw", type="string", default='hw:1',
		help="Set hw [default=%default]")
	(options, args) = parser.parse_args()
	tb = FCD_analog_receiver_v2(samp_rate=options.samp_rate, dec=options.dec, audio_rate=options.audio_rate, hw=options.hw)
	tb.Run(True)

