Wed Mar 17 02:10:01 2010 options id mdvh_AFC_FM_demo_WFM _enabled True title Automatic Frequency Compensation Demo author Martin Dudok van Heel description FM AFC demo using variable sink window_size 1280, 1024 generate_options wx_gui category Custom run_options prompt run True realtime_scheduling _coordinate (7, 5) _rotation 0 variable_slider id freq_src _enabled True label value 1000 min -20000 max 20000 num_steps 100 style wx.SL_HORIZONTAL converver float_converter grid_pos notebook _coordinate (2, 491) _rotation 0 variable id alpha _enabled True value 0.25*channel_bandwidth * math.pi / samp_rate _coordinate (364, 220) _rotation 0 gr_throttle id throttle _enabled True type float samples_per_second samp_rate vlen 1 _coordinate (176, 137) _rotation 0 blks2_nbfm_tx id nbfm_tx _enabled True audio_rate audio_rate quad_rate samp_rate tau 75e-6 max_dev max_dev _coordinate (357, 113) _rotation 0 note id note_0 _enabled True note uses AFC_freq_comp _coordinate (575, 59) _rotation 0 wxgui_fftsink2 id fftsink _enabled True type complex title FFT Plot samp_rate samp_rate baseband_freq 0 y_per_div 10 y_divs 10 ref_level 50 ref_scale 2.0 fft_size 1024 fft_rate 30 peak_hold False average False avg_alpha 0 win None win_size grid_pos notebook _coordinate (840, 0) _rotation 0 variable id AFC_variable _enabled True value 0 _coordinate (507, 510) _rotation 0 variable id max_dev_radians_per_sec _enabled True value 2.0*math.pi*2.0*max_dev/samp_rate _coordinate (117, 623) _rotation 0 import id import_0 _enabled True import import math _coordinate (1, 632) _rotation 0 gr_sig_source_x id src_audio _enabled True type float samp_rate audio_rate waveform gr.GR_COS_WAVE freq 1000 amp 1 offset (freq_src/20000) _coordinate (0, 105) _rotation 0 gr_freq_xlating_fir_filter_xxx id freq_compensating_channel_filter _enabled True type ccf decim 1 taps gr.firdes.low_pass (1.0, samp_rate,(0.5+0.1)*channel_bandwidth, 0.1*channel_bandwidth, gr.firdes.WIN_HANN) center_freq AFC_freq_comp samp_rate samp_rate _coordinate (576, 113) _rotation 0 variable id AFC_freq_comp _enabled True value max_dev*min(max(AFC_linear,-1.0),1.0) _coordinate (763, 501) _rotation 0 blks2_nbfm_rx id nbfm_rx _enabled True audio_rate audio_rate quad_rate samp_rate tau 75e-6 max_dev max_dev _coordinate (840, 192) _rotation 0 wxgui_scopesink2 id scopesink _enabled True type float title Scope Plot samp_rate audio_rate v_scale 0.0125 v_offset 0 t_scale 0 ac_couple False xy_mode False num_inputs 1 win_size grid_pos notebook _coordinate (1106, 95) _rotation 0 variable id samp_rate _enabled True value 320000 _coordinate (2, 270) _rotation 0 variable id audio_rate _enabled True value samp_rate/10 _coordinate (107, 275) _rotation 0 variable id max_dev _enabled True value 75e3 _coordinate (2, 358) _rotation 0 variable id channel_bandwidth _enabled True value 200e3 _coordinate (106, 357) _rotation 0 variable id AFC_gain _enabled True value 1.0e4 _coordinate (337, 442) _rotation 0 variable id AFC_IIR_alpha _enabled True value 1.0e-8 _coordinate (333, 512) _rotation 0 gr_single_pole_iir_filter_xx id AFC_iir _enabled True type float alpha AFC_IIR_alpha vlen 1 _coordinate (369, 337) _rotation 0 variable id AFC_linear _enabled True value -AFC_gain*AFC_variable _coordinate (638, 469) _rotation 0 variable id AFC_log _enabled True value -1.0*math.copysign(math.log(1+abs(AFC_gain*AFC_variable)),AFC_variable) _coordinate (640, 541) _rotation 0 variable id AFC_update_rate _enabled True value 1.0 _coordinate (336, 581) _rotation 0 blks2_variable_sink_x id AFC_variable_sink _enabled True type float variable AFC_variable decim int(samp_rate/AFC_update_rate) vlen 1 _coordinate (615, 329) _rotation 0 nbfm_rx scopesink 0 0 src_audio throttle 0 0 throttle nbfm_tx 0 0 nbfm_rx AFC_iir 0 0 AFC_iir AFC_variable_sink 0 0 nbfm_tx freq_compensating_channel_filter 0 0 freq_compensating_channel_filter nbfm_rx 0 0 freq_compensating_channel_filter fftsink 0 0