Created
March 18, 2024 09:09
-
-
Save Synergyst/e19440013285fdf82cce58cbeb26b53a to your computer and use it in GitHub Desktop.
Nearband FM transmitter/receiver GNURadio Companion example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| options: | |
| parameters: | |
| author: Synergyst | |
| catch_exceptions: 'True' | |
| category: '[GRC Hier Blocks]' | |
| cmake_opt: '' | |
| comment: '' | |
| copyright: '' | |
| description: '' | |
| gen_cmake: 'On' | |
| gen_linking: dynamic | |
| generate_options: qt_gui | |
| hier_block_src_path: '.:' | |
| id: NFM_RXTX | |
| max_nouts: '0' | |
| output_language: python | |
| placement: (0,0) | |
| qt_qss_theme: '' | |
| realtime_scheduling: '' | |
| run: 'True' | |
| run_command: '{python} -u {filename}' | |
| run_options: prompt | |
| sizing_mode: fixed | |
| thread_safe_setters: '' | |
| title: NFM_RXTX | |
| window_size: (1000,1000) | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [8, 4.0] | |
| rotation: 0 | |
| state: enabled | |
| blocks: | |
| - name: rcv_btn | |
| id: variable_qtgui_toggle_button_msg | |
| parameters: | |
| comment: '' | |
| gui_hint: 0,0,1,1 | |
| initPressed: 'False' | |
| label: PTT | |
| outputmsgname: value | |
| pressBackgroundColor: purple | |
| pressFontColor: silver | |
| pressed: 'True' | |
| relBackgroundColor: default | |
| relFontColor: default | |
| released: 'False' | |
| type: bool | |
| value: 'False' | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [0, 1068.0] | |
| rotation: 0 | |
| state: true | |
| - name: rx_freq | |
| id: variable_qtgui_range | |
| parameters: | |
| comment: '' | |
| gui_hint: 3,0,1,1 | |
| label: RX_FREQ | |
| min_len: '200' | |
| orient: QtCore.Qt.Horizontal | |
| outputmsgname: value | |
| rangeType: float | |
| showports: 'False' | |
| start: 151.82e3 | |
| step: '1' | |
| stop: 154.6e3 | |
| value: 154.57e3 | |
| widget: counter_slider | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [0, 700.0] | |
| rotation: 0 | |
| state: true | |
| - name: rx_gain | |
| id: variable_qtgui_range | |
| parameters: | |
| comment: '' | |
| gui_hint: 2,0,1,1 | |
| label: RX_GAIN | |
| min_len: '200' | |
| orient: QtCore.Qt.Horizontal | |
| outputmsgname: value | |
| rangeType: float | |
| showports: 'False' | |
| start: '0' | |
| step: '1' | |
| stop: '32' | |
| value: '0' | |
| widget: counter_slider | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [0, 828.0] | |
| rotation: 0 | |
| state: true | |
| - name: rx_lna | |
| id: variable_qtgui_check_box | |
| parameters: | |
| comment: '' | |
| 'false': '0' | |
| gui_hint: 1,0,1,1 | |
| label: RX_LNA | |
| 'true': '14' | |
| type: int | |
| value: '0' | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [0, 956.0] | |
| rotation: 0 | |
| state: true | |
| - name: rx_quad_rate | |
| id: variable | |
| parameters: | |
| comment: '' | |
| value: rx_samp_rate*12 | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [0, 1260.0] | |
| rotation: 0 | |
| state: true | |
| - name: rx_samp_rate | |
| id: variable | |
| parameters: | |
| comment: '' | |
| value: '96000' | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [0, 1196.0] | |
| rotation: 0 | |
| state: enabled | |
| - name: rx_vol | |
| id: variable_qtgui_range | |
| parameters: | |
| comment: '' | |
| gui_hint: 4,0,1,1 | |
| label: RX_VOL | |
| min_len: '200' | |
| orient: QtCore.Qt.Horizontal | |
| outputmsgname: value | |
| rangeType: float | |
| showports: 'False' | |
| start: '0' | |
| step: '0.1' | |
| stop: '1' | |
| value: '1.0' | |
| widget: counter_slider | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [0, 572.0] | |
| rotation: 0 | |
| state: true | |
| - name: tx_freq | |
| id: variable_qtgui_range | |
| parameters: | |
| comment: '' | |
| gui_hint: 3,1,1,1 | |
| label: TX_FREQ | |
| min_len: '200' | |
| orient: QtCore.Qt.Horizontal | |
| outputmsgname: value | |
| rangeType: float | |
| showports: 'False' | |
| start: 151.82e3 | |
| step: '1' | |
| stop: 154.6e3 | |
| value: 154.6e3 | |
| widget: counter_slider | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [200, 700.0] | |
| rotation: 0 | |
| state: true | |
| - name: tx_gain | |
| id: variable_qtgui_range | |
| parameters: | |
| comment: '' | |
| gui_hint: 2,1,1,1 | |
| label: TX_GAIN | |
| min_len: '200' | |
| orient: QtCore.Qt.Horizontal | |
| outputmsgname: value | |
| rangeType: int | |
| showports: 'False' | |
| start: '0' | |
| step: '1' | |
| stop: '47' | |
| value: '16' | |
| widget: counter_slider | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [112, 828.0] | |
| rotation: 0 | |
| state: true | |
| - name: tx_lna | |
| id: variable_qtgui_check_box | |
| parameters: | |
| comment: '' | |
| 'false': '0' | |
| gui_hint: 1,1,1,1 | |
| label: TX_LNA | |
| 'true': '14' | |
| type: int | |
| value: '14' | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [128, 956.0] | |
| rotation: 0 | |
| state: enabled | |
| - name: tx_quad_rate | |
| id: variable | |
| parameters: | |
| comment: '' | |
| value: tx_samp_rate*12 | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [184, 1260.0] | |
| rotation: 0 | |
| state: true | |
| - name: tx_samp_rate | |
| id: variable | |
| parameters: | |
| comment: '' | |
| value: '96000' | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [104, 1196.0] | |
| rotation: 0 | |
| state: enabled | |
| - name: tx_vol | |
| id: variable_qtgui_range | |
| parameters: | |
| comment: '' | |
| gui_hint: 4,1,1,1 | |
| label: TX_VOL | |
| min_len: '200' | |
| orient: QtCore.Qt.Horizontal | |
| outputmsgname: value | |
| rangeType: float | |
| showports: 'False' | |
| start: '0' | |
| step: '0.01' | |
| stop: '1' | |
| value: '1.0' | |
| widget: counter_slider | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [112, 572.0] | |
| rotation: 0 | |
| state: true | |
| - name: analog_nbfm_rx_0 | |
| id: analog_nbfm_rx | |
| parameters: | |
| affinity: '' | |
| alias: '' | |
| audio_rate: rx_samp_rate | |
| comment: '' | |
| max_dev: 5e3 | |
| maxoutbuf: '0' | |
| minoutbuf: '0' | |
| quad_rate: rx_quad_rate | |
| tau: 75e-6 | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [568, 220.0] | |
| rotation: 0 | |
| state: enabled | |
| - name: analog_nbfm_tx_0 | |
| id: analog_nbfm_tx | |
| parameters: | |
| affinity: '' | |
| alias: '' | |
| audio_rate: tx_samp_rate | |
| comment: '' | |
| fh: '-1.0' | |
| max_dev: 5e3 | |
| maxoutbuf: '0' | |
| minoutbuf: '0' | |
| quad_rate: tx_quad_rate | |
| tau: 75e-6 | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [480, 468.0] | |
| rotation: 0 | |
| state: true | |
| - name: audio_sink_0 | |
| id: audio_sink | |
| parameters: | |
| affinity: '' | |
| alias: '' | |
| comment: '' | |
| device_name: pipewire | |
| num_inputs: '1' | |
| ok_to_block: 'True' | |
| samp_rate: int(rx_samp_rate/1) | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [1088, 236.0] | |
| rotation: 0 | |
| state: enabled | |
| - name: audio_source_0 | |
| id: audio_source | |
| parameters: | |
| affinity: '' | |
| alias: '' | |
| comment: '' | |
| device_name: pipewire | |
| maxoutbuf: '0' | |
| minoutbuf: '0' | |
| num_outputs: '1' | |
| ok_to_block: 'True' | |
| samp_rate: tx_samp_rate | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [0, 492.0] | |
| rotation: 0 | |
| state: true | |
| - name: blocks_mute_xx_0_0 | |
| id: blocks_mute_xx | |
| parameters: | |
| affinity: '' | |
| alias: '' | |
| comment: '' | |
| maxoutbuf: '0' | |
| minoutbuf: '0' | |
| mute: not rcv_btn | |
| type: complex | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [1096, 512.0] | |
| rotation: 0 | |
| state: true | |
| - name: osmosdr_sink_0 | |
| id: osmosdr_sink | |
| parameters: | |
| affinity: '' | |
| alias: '' | |
| ant0: '' | |
| ant1: '' | |
| ant10: '' | |
| ant11: '' | |
| ant12: '' | |
| ant13: '' | |
| ant14: '' | |
| ant15: '' | |
| ant16: '' | |
| ant17: '' | |
| ant18: '' | |
| ant19: '' | |
| ant2: '' | |
| ant20: '' | |
| ant21: '' | |
| ant22: '' | |
| ant23: '' | |
| ant24: '' | |
| ant25: '' | |
| ant26: '' | |
| ant27: '' | |
| ant28: '' | |
| ant29: '' | |
| ant3: '' | |
| ant30: '' | |
| ant31: '' | |
| ant4: '' | |
| ant5: '' | |
| ant6: '' | |
| ant7: '' | |
| ant8: '' | |
| ant9: '' | |
| args: hackrf=1 | |
| bb_gain0: '20' | |
| bb_gain1: '20' | |
| bb_gain10: '20' | |
| bb_gain11: '20' | |
| bb_gain12: '20' | |
| bb_gain13: '20' | |
| bb_gain14: '20' | |
| bb_gain15: '20' | |
| bb_gain16: '20' | |
| bb_gain17: '20' | |
| bb_gain18: '20' | |
| bb_gain19: '20' | |
| bb_gain2: '20' | |
| bb_gain20: '20' | |
| bb_gain21: '20' | |
| bb_gain22: '20' | |
| bb_gain23: '20' | |
| bb_gain24: '20' | |
| bb_gain25: '20' | |
| bb_gain26: '20' | |
| bb_gain27: '20' | |
| bb_gain28: '20' | |
| bb_gain29: '20' | |
| bb_gain3: '20' | |
| bb_gain30: '20' | |
| bb_gain31: '20' | |
| bb_gain4: '20' | |
| bb_gain5: '20' | |
| bb_gain6: '20' | |
| bb_gain7: '20' | |
| bb_gain8: '20' | |
| bb_gain9: '20' | |
| bw0: '0' | |
| bw1: '0' | |
| bw10: '0' | |
| bw11: '0' | |
| bw12: '0' | |
| bw13: '0' | |
| bw14: '0' | |
| bw15: '0' | |
| bw16: '0' | |
| bw17: '0' | |
| bw18: '0' | |
| bw19: '0' | |
| bw2: '0' | |
| bw20: '0' | |
| bw21: '0' | |
| bw22: '0' | |
| bw23: '0' | |
| bw24: '0' | |
| bw25: '0' | |
| bw26: '0' | |
| bw27: '0' | |
| bw28: '0' | |
| bw29: '0' | |
| bw3: '0' | |
| bw30: '0' | |
| bw31: '0' | |
| bw4: '0' | |
| bw5: '0' | |
| bw6: '0' | |
| bw7: '0' | |
| bw8: '0' | |
| bw9: '0' | |
| clock_source0: '' | |
| clock_source1: '' | |
| clock_source2: '' | |
| clock_source3: '' | |
| clock_source4: '' | |
| clock_source5: '' | |
| clock_source6: '' | |
| clock_source7: '' | |
| comment: '' | |
| corr0: '0' | |
| corr1: '0' | |
| corr10: '0' | |
| corr11: '0' | |
| corr12: '0' | |
| corr13: '0' | |
| corr14: '0' | |
| corr15: '0' | |
| corr16: '0' | |
| corr17: '0' | |
| corr18: '0' | |
| corr19: '0' | |
| corr2: '0' | |
| corr20: '0' | |
| corr21: '0' | |
| corr22: '0' | |
| corr23: '0' | |
| corr24: '0' | |
| corr25: '0' | |
| corr26: '0' | |
| corr27: '0' | |
| corr28: '0' | |
| corr29: '0' | |
| corr3: '0' | |
| corr30: '0' | |
| corr31: '0' | |
| corr4: '0' | |
| corr5: '0' | |
| corr6: '0' | |
| corr7: '0' | |
| corr8: '0' | |
| corr9: '0' | |
| freq0: tx_freq*1000.0 | |
| freq1: 100e6 | |
| freq10: 100e6 | |
| freq11: 100e6 | |
| freq12: 100e6 | |
| freq13: 100e6 | |
| freq14: 100e6 | |
| freq15: 100e6 | |
| freq16: 100e6 | |
| freq17: 100e6 | |
| freq18: 100e6 | |
| freq19: 100e6 | |
| freq2: 100e6 | |
| freq20: 100e6 | |
| freq21: 100e6 | |
| freq22: 100e6 | |
| freq23: 100e6 | |
| freq24: 100e6 | |
| freq25: 100e6 | |
| freq26: 100e6 | |
| freq27: 100e6 | |
| freq28: 100e6 | |
| freq29: 100e6 | |
| freq3: 100e6 | |
| freq30: 100e6 | |
| freq31: 100e6 | |
| freq4: 100e6 | |
| freq5: 100e6 | |
| freq6: 100e6 | |
| freq7: 100e6 | |
| freq8: 100e6 | |
| freq9: 100e6 | |
| gain0: tx_lna | |
| gain1: '10' | |
| gain10: '10' | |
| gain11: '10' | |
| gain12: '10' | |
| gain13: '10' | |
| gain14: '10' | |
| gain15: '10' | |
| gain16: '10' | |
| gain17: '10' | |
| gain18: '10' | |
| gain19: '10' | |
| gain2: '10' | |
| gain20: '10' | |
| gain21: '10' | |
| gain22: '10' | |
| gain23: '10' | |
| gain24: '10' | |
| gain25: '10' | |
| gain26: '10' | |
| gain27: '10' | |
| gain28: '10' | |
| gain29: '10' | |
| gain3: '10' | |
| gain30: '10' | |
| gain31: '10' | |
| gain4: '10' | |
| gain5: '10' | |
| gain6: '10' | |
| gain7: '10' | |
| gain8: '10' | |
| gain9: '10' | |
| if_gain0: tx_gain | |
| if_gain1: '20' | |
| if_gain10: '20' | |
| if_gain11: '20' | |
| if_gain12: '20' | |
| if_gain13: '20' | |
| if_gain14: '20' | |
| if_gain15: '20' | |
| if_gain16: '20' | |
| if_gain17: '20' | |
| if_gain18: '20' | |
| if_gain19: '20' | |
| if_gain2: '20' | |
| if_gain20: '20' | |
| if_gain21: '20' | |
| if_gain22: '20' | |
| if_gain23: '20' | |
| if_gain24: '20' | |
| if_gain25: '20' | |
| if_gain26: '20' | |
| if_gain27: '20' | |
| if_gain28: '20' | |
| if_gain29: '20' | |
| if_gain3: '20' | |
| if_gain30: '20' | |
| if_gain31: '20' | |
| if_gain4: '20' | |
| if_gain5: '20' | |
| if_gain6: '20' | |
| if_gain7: '20' | |
| if_gain8: '20' | |
| if_gain9: '20' | |
| maxoutbuf: '0' | |
| minoutbuf: '0' | |
| nchan: '1' | |
| num_mboards: '1' | |
| sample_rate: tx_quad_rate | |
| sync: sync | |
| time_source0: '' | |
| time_source1: '' | |
| time_source2: '' | |
| time_source3: '' | |
| time_source4: '' | |
| time_source5: '' | |
| time_source6: '' | |
| time_source7: '' | |
| type: fc32 | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [1328, 436.0] | |
| rotation: 0 | |
| state: enabled | |
| - name: osmosdr_source_0 | |
| id: osmosdr_source | |
| parameters: | |
| affinity: '' | |
| alias: '' | |
| ant0: '' | |
| ant1: '' | |
| ant10: '' | |
| ant11: '' | |
| ant12: '' | |
| ant13: '' | |
| ant14: '' | |
| ant15: '' | |
| ant16: '' | |
| ant17: '' | |
| ant18: '' | |
| ant19: '' | |
| ant2: '' | |
| ant20: '' | |
| ant21: '' | |
| ant22: '' | |
| ant23: '' | |
| ant24: '' | |
| ant25: '' | |
| ant26: '' | |
| ant27: '' | |
| ant28: '' | |
| ant29: '' | |
| ant3: '' | |
| ant30: '' | |
| ant31: '' | |
| ant4: '' | |
| ant5: '' | |
| ant6: '' | |
| ant7: '' | |
| ant8: '' | |
| ant9: '' | |
| args: hackrf=0 | |
| bb_gain0: '0' | |
| bb_gain1: '20' | |
| bb_gain10: '20' | |
| bb_gain11: '20' | |
| bb_gain12: '20' | |
| bb_gain13: '20' | |
| bb_gain14: '20' | |
| bb_gain15: '20' | |
| bb_gain16: '20' | |
| bb_gain17: '20' | |
| bb_gain18: '20' | |
| bb_gain19: '20' | |
| bb_gain2: '20' | |
| bb_gain20: '20' | |
| bb_gain21: '20' | |
| bb_gain22: '20' | |
| bb_gain23: '20' | |
| bb_gain24: '20' | |
| bb_gain25: '20' | |
| bb_gain26: '20' | |
| bb_gain27: '20' | |
| bb_gain28: '20' | |
| bb_gain29: '20' | |
| bb_gain3: '20' | |
| bb_gain30: '20' | |
| bb_gain31: '20' | |
| bb_gain4: '20' | |
| bb_gain5: '20' | |
| bb_gain6: '20' | |
| bb_gain7: '20' | |
| bb_gain8: '20' | |
| bb_gain9: '20' | |
| bw0: '0' | |
| bw1: '0' | |
| bw10: '0' | |
| bw11: '0' | |
| bw12: '0' | |
| bw13: '0' | |
| bw14: '0' | |
| bw15: '0' | |
| bw16: '0' | |
| bw17: '0' | |
| bw18: '0' | |
| bw19: '0' | |
| bw2: '0' | |
| bw20: '0' | |
| bw21: '0' | |
| bw22: '0' | |
| bw23: '0' | |
| bw24: '0' | |
| bw25: '0' | |
| bw26: '0' | |
| bw27: '0' | |
| bw28: '0' | |
| bw29: '0' | |
| bw3: '0' | |
| bw30: '0' | |
| bw31: '0' | |
| bw4: '0' | |
| bw5: '0' | |
| bw6: '0' | |
| bw7: '0' | |
| bw8: '0' | |
| bw9: '0' | |
| clock_source0: '' | |
| clock_source1: '' | |
| clock_source2: '' | |
| clock_source3: '' | |
| clock_source4: '' | |
| clock_source5: '' | |
| clock_source6: '' | |
| clock_source7: '' | |
| comment: '' | |
| corr0: '0' | |
| corr1: '0' | |
| corr10: '0' | |
| corr11: '0' | |
| corr12: '0' | |
| corr13: '0' | |
| corr14: '0' | |
| corr15: '0' | |
| corr16: '0' | |
| corr17: '0' | |
| corr18: '0' | |
| corr19: '0' | |
| corr2: '0' | |
| corr20: '0' | |
| corr21: '0' | |
| corr22: '0' | |
| corr23: '0' | |
| corr24: '0' | |
| corr25: '0' | |
| corr26: '0' | |
| corr27: '0' | |
| corr28: '0' | |
| corr29: '0' | |
| corr3: '0' | |
| corr30: '0' | |
| corr31: '0' | |
| corr4: '0' | |
| corr5: '0' | |
| corr6: '0' | |
| corr7: '0' | |
| corr8: '0' | |
| corr9: '0' | |
| dc_offset_mode0: '0' | |
| dc_offset_mode1: '0' | |
| dc_offset_mode10: '0' | |
| dc_offset_mode11: '0' | |
| dc_offset_mode12: '0' | |
| dc_offset_mode13: '0' | |
| dc_offset_mode14: '0' | |
| dc_offset_mode15: '0' | |
| dc_offset_mode16: '0' | |
| dc_offset_mode17: '0' | |
| dc_offset_mode18: '0' | |
| dc_offset_mode19: '0' | |
| dc_offset_mode2: '0' | |
| dc_offset_mode20: '0' | |
| dc_offset_mode21: '0' | |
| dc_offset_mode22: '0' | |
| dc_offset_mode23: '0' | |
| dc_offset_mode24: '0' | |
| dc_offset_mode25: '0' | |
| dc_offset_mode26: '0' | |
| dc_offset_mode27: '0' | |
| dc_offset_mode28: '0' | |
| dc_offset_mode29: '0' | |
| dc_offset_mode3: '0' | |
| dc_offset_mode30: '0' | |
| dc_offset_mode31: '0' | |
| dc_offset_mode4: '0' | |
| dc_offset_mode5: '0' | |
| dc_offset_mode6: '0' | |
| dc_offset_mode7: '0' | |
| dc_offset_mode8: '0' | |
| dc_offset_mode9: '0' | |
| freq0: rx_freq*1000.0 | |
| freq1: 100e6 | |
| freq10: 100e6 | |
| freq11: 100e6 | |
| freq12: 100e6 | |
| freq13: 100e6 | |
| freq14: 100e6 | |
| freq15: 100e6 | |
| freq16: 100e6 | |
| freq17: 100e6 | |
| freq18: 100e6 | |
| freq19: 100e6 | |
| freq2: 100e6 | |
| freq20: 100e6 | |
| freq21: 100e6 | |
| freq22: 100e6 | |
| freq23: 100e6 | |
| freq24: 100e6 | |
| freq25: 100e6 | |
| freq26: 100e6 | |
| freq27: 100e6 | |
| freq28: 100e6 | |
| freq29: 100e6 | |
| freq3: 100e6 | |
| freq30: 100e6 | |
| freq31: 100e6 | |
| freq4: 100e6 | |
| freq5: 100e6 | |
| freq6: 100e6 | |
| freq7: 100e6 | |
| freq8: 100e6 | |
| freq9: 100e6 | |
| gain0: rx_lna | |
| gain1: '10' | |
| gain10: '10' | |
| gain11: '10' | |
| gain12: '10' | |
| gain13: '10' | |
| gain14: '10' | |
| gain15: '10' | |
| gain16: '10' | |
| gain17: '10' | |
| gain18: '10' | |
| gain19: '10' | |
| gain2: '10' | |
| gain20: '10' | |
| gain21: '10' | |
| gain22: '10' | |
| gain23: '10' | |
| gain24: '10' | |
| gain25: '10' | |
| gain26: '10' | |
| gain27: '10' | |
| gain28: '10' | |
| gain29: '10' | |
| gain3: '10' | |
| gain30: '10' | |
| gain31: '10' | |
| gain4: '10' | |
| gain5: '10' | |
| gain6: '10' | |
| gain7: '10' | |
| gain8: '10' | |
| gain9: '10' | |
| gain_mode0: 'False' | |
| gain_mode1: 'False' | |
| gain_mode10: 'False' | |
| gain_mode11: 'False' | |
| gain_mode12: 'False' | |
| gain_mode13: 'False' | |
| gain_mode14: 'False' | |
| gain_mode15: 'False' | |
| gain_mode16: 'False' | |
| gain_mode17: 'False' | |
| gain_mode18: 'False' | |
| gain_mode19: 'False' | |
| gain_mode2: 'False' | |
| gain_mode20: 'False' | |
| gain_mode21: 'False' | |
| gain_mode22: 'False' | |
| gain_mode23: 'False' | |
| gain_mode24: 'False' | |
| gain_mode25: 'False' | |
| gain_mode26: 'False' | |
| gain_mode27: 'False' | |
| gain_mode28: 'False' | |
| gain_mode29: 'False' | |
| gain_mode3: 'False' | |
| gain_mode30: 'False' | |
| gain_mode31: 'False' | |
| gain_mode4: 'False' | |
| gain_mode5: 'False' | |
| gain_mode6: 'False' | |
| gain_mode7: 'False' | |
| gain_mode8: 'False' | |
| gain_mode9: 'False' | |
| if_gain0: rx_gain | |
| if_gain1: '20' | |
| if_gain10: '20' | |
| if_gain11: '20' | |
| if_gain12: '20' | |
| if_gain13: '20' | |
| if_gain14: '20' | |
| if_gain15: '20' | |
| if_gain16: '20' | |
| if_gain17: '20' | |
| if_gain18: '20' | |
| if_gain19: '20' | |
| if_gain2: '20' | |
| if_gain20: '20' | |
| if_gain21: '20' | |
| if_gain22: '20' | |
| if_gain23: '20' | |
| if_gain24: '20' | |
| if_gain25: '20' | |
| if_gain26: '20' | |
| if_gain27: '20' | |
| if_gain28: '20' | |
| if_gain29: '20' | |
| if_gain3: '20' | |
| if_gain30: '20' | |
| if_gain31: '20' | |
| if_gain4: '20' | |
| if_gain5: '20' | |
| if_gain6: '20' | |
| if_gain7: '20' | |
| if_gain8: '20' | |
| if_gain9: '20' | |
| iq_balance_mode0: '0' | |
| iq_balance_mode1: '0' | |
| iq_balance_mode10: '0' | |
| iq_balance_mode11: '0' | |
| iq_balance_mode12: '0' | |
| iq_balance_mode13: '0' | |
| iq_balance_mode14: '0' | |
| iq_balance_mode15: '0' | |
| iq_balance_mode16: '0' | |
| iq_balance_mode17: '0' | |
| iq_balance_mode18: '0' | |
| iq_balance_mode19: '0' | |
| iq_balance_mode2: '0' | |
| iq_balance_mode20: '0' | |
| iq_balance_mode21: '0' | |
| iq_balance_mode22: '0' | |
| iq_balance_mode23: '0' | |
| iq_balance_mode24: '0' | |
| iq_balance_mode25: '0' | |
| iq_balance_mode26: '0' | |
| iq_balance_mode27: '0' | |
| iq_balance_mode28: '0' | |
| iq_balance_mode29: '0' | |
| iq_balance_mode3: '0' | |
| iq_balance_mode30: '0' | |
| iq_balance_mode31: '0' | |
| iq_balance_mode4: '0' | |
| iq_balance_mode5: '0' | |
| iq_balance_mode6: '0' | |
| iq_balance_mode7: '0' | |
| iq_balance_mode8: '0' | |
| iq_balance_mode9: '0' | |
| maxoutbuf: '0' | |
| minoutbuf: '0' | |
| nchan: '1' | |
| num_mboards: '1' | |
| sample_rate: rx_quad_rate | |
| sync: sync | |
| time_source0: '' | |
| time_source1: '' | |
| time_source2: '' | |
| time_source3: '' | |
| time_source4: '' | |
| time_source5: '' | |
| time_source6: '' | |
| time_source7: '' | |
| type: fc32 | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [0, 132.0] | |
| rotation: 0 | |
| state: true | |
| - name: qtgui_ledindicator_0 | |
| id: qtgui_ledindicator | |
| parameters: | |
| affinity: '' | |
| alias: '' | |
| cellalignment: '1' | |
| comment: '' | |
| gui_hint: 0,1,1,1 | |
| label: TX | |
| maxSize: '24' | |
| offColor: gray | |
| onColor: purple | |
| position: '1' | |
| state: rcv_btn | |
| verticalalignment: '1' | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [216, 1092.0] | |
| rotation: 0 | |
| state: true | |
| - name: qtgui_waterfall_sink_x_0 | |
| id: qtgui_waterfall_sink_x | |
| parameters: | |
| affinity: '' | |
| alias: '' | |
| alpha1: '1.0' | |
| alpha10: '1.0' | |
| alpha2: '1.0' | |
| alpha3: '1.0' | |
| alpha4: '1.0' | |
| alpha5: '1.0' | |
| alpha6: '1.0' | |
| alpha7: '1.0' | |
| alpha8: '1.0' | |
| alpha9: '1.0' | |
| axislabels: 'True' | |
| bw: rx_quad_rate | |
| color1: '0' | |
| color10: '0' | |
| color2: '0' | |
| color3: '0' | |
| color4: '0' | |
| color5: '0' | |
| color6: '0' | |
| color7: '0' | |
| color8: '0' | |
| color9: '0' | |
| comment: '' | |
| fc: '0' | |
| fftsize: '1024' | |
| freqhalf: 'True' | |
| grid: 'True' | |
| gui_hint: '' | |
| int_max: '10' | |
| int_min: '-200' | |
| label1: '' | |
| label10: '' | |
| label2: '' | |
| label3: '' | |
| label4: '' | |
| label5: '' | |
| label6: '' | |
| label7: '' | |
| label8: '' | |
| label9: '' | |
| legend: 'True' | |
| maxoutbuf: '0' | |
| minoutbuf: '0' | |
| name: '""' | |
| nconnections: '1' | |
| showports: 'False' | |
| type: complex | |
| update_time: '0.01' | |
| wintype: window.WIN_BLACKMAN_hARRIS | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [272, 100.0] | |
| rotation: 0 | |
| state: enabled | |
| - name: rx_lpf | |
| id: low_pass_filter | |
| parameters: | |
| affinity: '' | |
| alias: '' | |
| beta: '6.76' | |
| comment: '' | |
| cutoff_freq: '5000' | |
| decim: '1' | |
| gain: '1' | |
| interp: '1' | |
| maxoutbuf: '0' | |
| minoutbuf: '0' | |
| samp_rate: rx_quad_rate | |
| type: fir_filter_ccf | |
| width: '2000' | |
| win: window.WIN_HAMMING | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [272, 196.0] | |
| rotation: 0 | |
| state: enabled | |
| - name: rx_noisereduce | |
| id: epy_block | |
| parameters: | |
| _source_code: "import numpy as np\nfrom gnuradio import gr\nimport noisereduce\ | |
| \ as nr\n\nclass blk(gr.sync_block):\n def __init__(self, sample_rate=96000,\ | |
| \ gain=1.0, mute=False):\n gr.sync_block.__init__(\n self,\n\ | |
| \ name='Code Block',\n in_sig=[np.float32],\n \ | |
| \ out_sig=[np.float32]\n )\n self.sample_rate = sample_rate\n\ | |
| \ self.gain = gain\n self.mute = mute\n def work(self, input_items,\ | |
| \ output_items):\n # Convert numpy float32 array to bytes and write to\ | |
| \ stdin of the C++ program\n #input_bytes = input_items[0].astype(np.float32).tostring()\n\ | |
| \ if (self.mute):\n return len(output_items[0])\n output_items[0][:]\ | |
| \ = input_items[0] * self.gain\n output_items[0][:] = nr.reduce_noise(y=input_items[0],\ | |
| \ sr=self.sample_rate)\n # Convert the output bytes back to a numpy float32\ | |
| \ array\n #output_items[0][:] = np.frombuffer(input_bytes, dtype=np.float32)\n\ | |
| \ return len(output_items[0])\n" | |
| affinity: '' | |
| alias: '' | |
| comment: '' | |
| gain: rx_vol | |
| maxoutbuf: '0' | |
| minoutbuf: '0' | |
| mute: rcv_btn | |
| sample_rate: rx_samp_rate | |
| states: | |
| _io_cache: ('Code Block', 'blk', [('sample_rate', '96000'), ('gain', '1.0'), ('mute', | |
| 'False')], [('0', 'float', 1)], [('0', 'float', 1)], '', ['gain', 'mute', 'sample_rate']) | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [848, 228.0] | |
| rotation: 0 | |
| state: enabled | |
| - name: tx_lpf | |
| id: low_pass_filter | |
| parameters: | |
| affinity: '' | |
| alias: '' | |
| beta: '6.76' | |
| comment: '' | |
| cutoff_freq: '5000' | |
| decim: '1' | |
| gain: '1' | |
| interp: '1' | |
| maxoutbuf: '0' | |
| minoutbuf: '0' | |
| samp_rate: tx_quad_rate | |
| type: fir_filter_ccf | |
| width: '2000' | |
| win: window.WIN_HAMMING | |
| states: | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [760, 452.0] | |
| rotation: 0 | |
| state: true | |
| - name: tx_noisereduce | |
| id: epy_block | |
| parameters: | |
| _source_code: "import numpy as np\nfrom gnuradio import gr\nimport noisereduce\ | |
| \ as nr\n\nclass blk(gr.sync_block):\n def __init__(self, sample_rate=96000,\ | |
| \ gain=1.0):\n gr.sync_block.__init__(\n self,\n \ | |
| \ name='Code Block',\n in_sig=[np.float32],\n out_sig=[np.float32]\n\ | |
| \ )\n self.sample_rate = sample_rate\n self.gain = gain\n\ | |
| \ def work(self, input_items, output_items):\n # Convert numpy float32\ | |
| \ array to bytes and write to stdin of the C++ program\n #input_bytes\ | |
| \ = input_items[0].astype(np.float32).tostring()\n output_items[0][:]\ | |
| \ = input_items[0] * self.gain\n output_items[0][:] = nr.reduce_noise(y=input_items[0],\ | |
| \ sr=self.sample_rate)\n # Convert the output bytes back to a numpy float32\ | |
| \ array\n #output_items[0][:] = np.frombuffer(input_bytes, dtype=np.float32)\n\ | |
| \ return len(output_items[0])\n" | |
| affinity: '' | |
| alias: '' | |
| comment: '' | |
| gain: tx_vol | |
| maxoutbuf: '0' | |
| minoutbuf: '0' | |
| sample_rate: tx_samp_rate | |
| states: | |
| _io_cache: ('Code Block', 'blk', [('sample_rate', '96000'), ('gain', '1.0')], | |
| [('0', 'float', 1)], [('0', 'float', 1)], '', ['gain', 'sample_rate']) | |
| bus_sink: false | |
| bus_source: false | |
| bus_structure: null | |
| coordinate: [240, 492.0] | |
| rotation: 0 | |
| state: enabled | |
| connections: | |
| - [analog_nbfm_rx_0, '0', rx_noisereduce, '0'] | |
| - [analog_nbfm_tx_0, '0', tx_lpf, '0'] | |
| - [audio_source_0, '0', tx_noisereduce, '0'] | |
| - [blocks_mute_xx_0_0, '0', osmosdr_sink_0, '0'] | |
| - [osmosdr_source_0, '0', qtgui_waterfall_sink_x_0, '0'] | |
| - [osmosdr_source_0, '0', rx_lpf, '0'] | |
| - [rx_lpf, '0', analog_nbfm_rx_0, '0'] | |
| - [rx_noisereduce, '0', audio_sink_0, '0'] | |
| - [tx_lpf, '0', blocks_mute_xx_0_0, '0'] | |
| - [tx_noisereduce, '0', analog_nbfm_tx_0, '0'] | |
| metadata: | |
| file_format: 1 | |
| grc_version: 3.10.4.0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment