GNU Radio World

FM Receiver from Recording

Broadcast FM receiver - a hosted 250 kHz IQ recording demodulated to audio and played through the speakers, with a live volume control

Press Load to open this flowgraph in an editor embedded above, then ▶ to run it. Nothing is downloaded until you do.

Open in the full editor ▶ Download the .grc

Blocks used

BlockModuleUsed
VariableGNU Radio3
QT GUI Frequency SinkGNU Radio2
Audio SinkGNU Radio1
GR World RecordingGNU Radio1
GUI LayoutGNU Radio1
Multiply ConstGNU Radio1
QT GUI RangeGNU Radio1
Rational ResamplerGNU Radio1
WBFM ReceiveGNU Radio1

Flowgraph source

audio/fm_receiver_recording.grc
options:
    parameters:
        author: Claude
        comment: ''
        copyright: ''
        description: Broadcast FM receiver - a hosted 250 kHz IQ recording demodulated to audio and played through the speakers, with a live volume control
        generate_options: qt_gui
        id: FM_Receiver_from_Recording
        title: FM Receiver from Recording
    states:
        coordinate: [10, 10]
        rotation: 0
        state: enabled
blocks:
-   name: audio_rate
    id: variable
    parameters:
        comment: ''
        value: '48000'
    states:
        coordinate: [590, 10]
        rotation: 0
        state: enabled
-   name: quad_rate
    id: variable
    parameters:
        comment: ''
        value: '240000'
    states:
        coordinate: [760, 10]
        rotation: 0
        state: enabled
-   name: samp_rate
    id: variable
    parameters:
        comment: ''
        value: '250000'
    states:
        coordinate: [930, 10]
        rotation: 0
        state: enabled
-   name: volume
    id: variable_qtgui_range
    parameters:
        comment: ''
        label: Volume
        min_len: '240'
        orient: QtCore.Qt.Horizontal
        rangeType: float
        start: '0'
        step: '0.01'
        stop: '1'
        value: '0.3'
        widget: counter_slider
    states:
        coordinate: [1100, 10]
        rotation: 0
        state: enabled
-   name: audio_spectrum
    id: qtgui_freq_sink_x
    parameters:
        affinity: ''
        alias: ''
        alpha1: '1'
        alpha10: '1'
        alpha2: '1'
        alpha3: '1'
        alpha4: '1'
        alpha5: '1'
        alpha6: '1'
        alpha7: '1'
        alpha8: '1'
        alpha9: '1'
        autoscale: 'False'
        average: '1.0'
        axislabels: 'True'
        color1: '"blue"'
        color10: '"dark blue"'
        color2: '"red"'
        color3: '"green"'
        color4: '"black"'
        color5: '"cyan"'
        color6: '"magenta"'
        color7: '"yellow"'
        color8: '"dark red"'
        color9: '"dark green"'
        comment: ''
        ctrlpanel: 'False'
        fc: '0'
        fftsize: '1024'
        freqhalf: 'False'
        grid: 'True'
        label1: Audio
        label10: ''
        label2: ''
        label3: ''
        label4: ''
        label5: ''
        label6: ''
        label7: ''
        label8: ''
        label9: ''
        legend: 'False'
        marker1: '-1'
        marker10: '-1'
        marker2: '-1'
        marker3: '-1'
        marker4: '-1'
        marker5: '-1'
        marker6: '-1'
        marker7: '-1'
        marker8: '-1'
        marker9: '-1'
        maxoutbuf: '0'
        minoutbuf: '0'
        name: Demodulated audio (19 kHz stereo pilot visible)
        nconnections: '1'
        samp_rate: audio_rate
        style1: '1'
        style10: '1'
        style2: '1'
        style3: '1'
        style4: '1'
        style5: '1'
        style6: '1'
        style7: '1'
        style8: '1'
        style9: '1'
        tr_chan: '0'
        tr_level: '0'
        tr_mode: qtgui.TRIG_MODE_FREE
        tr_tag: ''
        type: float
        update_time: '0.1'
        width1: '1'
        width10: '1'
        width2: '1'
        width3: '1'
        width4: '1'
        width5: '1'
        width6: '1'
        width7: '1'
        width8: '1'
        width9: '1'
        ymax: '-20'
        ymin: '-120'
    states:
        coordinate: [1410, 210]
        rotation: 0
        state: enabled
-   name: recording
    id: wasm_gr_world_recording
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        length: '0'
        maxoutbuf: '0'
        minoutbuf: '0'
        offset: '0'
        recording: fm_rds_250k_1Msamples
        repeat: 'True'
        type: complex
    states:
        coordinate: [10, 250]
        rotation: 0
        state: enabled
-   name: resample_to_quad
    id: rational_resampler_xxx
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        decim: '25'
        fbw: '0'
        interp: '24'
        maxoutbuf: '0'
        minoutbuf: '0'
        taps: '[]'
        type: ccc
    states:
        coordinate: [390, 230]
        rotation: 0
        state: enabled
-   name: rf_spectrum
    id: qtgui_freq_sink_x
    parameters:
        affinity: ''
        alias: ''
        alpha1: '1'
        alpha10: '1'
        alpha2: '1'
        alpha3: '1'
        alpha4: '1'
        alpha5: '1'
        alpha6: '1'
        alpha7: '1'
        alpha8: '1'
        alpha9: '1'
        autoscale: 'False'
        average: '1.0'
        axislabels: 'True'
        color1: '"blue"'
        color10: '"dark blue"'
        color2: '"red"'
        color3: '"green"'
        color4: '"black"'
        color5: '"cyan"'
        color6: '"magenta"'
        color7: '"yellow"'
        color8: '"dark red"'
        color9: '"dark green"'
        comment: ''
        ctrlpanel: 'False'
        fc: '100000000'
        fftsize: '1024'
        freqhalf: 'True'
        grid: 'True'
        label1: FM station
        label10: ''
        label2: ''
        label3: ''
        label4: ''
        label5: ''
        label6: ''
        label7: ''
        label8: ''
        label9: ''
        legend: 'False'
        marker1: '-1'
        marker10: '-1'
        marker2: '-1'
        marker3: '-1'
        marker4: '-1'
        marker5: '-1'
        marker6: '-1'
        marker7: '-1'
        marker8: '-1'
        marker9: '-1'
        maxoutbuf: '0'
        minoutbuf: '0'
        name: RF spectrum
        nconnections: '1'
        samp_rate: samp_rate
        style1: '1'
        style10: '1'
        style2: '1'
        style3: '1'
        style4: '1'
        style5: '1'
        style6: '1'
        style7: '1'
        style8: '1'
        style9: '1'
        tr_chan: '0'
        tr_level: '0'
        tr_mode: qtgui.TRIG_MODE_FREE
        tr_tag: ''
        type: complex
        update_time: '0.1'
        width1: '1'
        width10: '1'
        width2: '1'
        width3: '1'
        width4: '1'
        width5: '1'
        width6: '1'
        width7: '1'
        width8: '1'
        width9: '1'
        ymax: '10'
        ymin: '-100'
    states:
        coordinate: [390, 370]
        rotation: 0
        state: enabled
-   name: speakers
    id: audio_sink
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        device_name: ''
        num_inputs: '1'
        ok_to_block: 'True'
        samp_rate: audio_rate
    states:
        coordinate: [1410, 390]
        rotation: 0
        state: enabled
-   name: volume_gain
    id: blocks_multiply_const_vxx
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        const: volume
        maxoutbuf: '0'
        minoutbuf: '0'
        mode: scalar
        type: float
        vlen: '1'
    states:
        coordinate: [1100, 250]
        rotation: 0
        state: enabled
-   name: wasm_gui_layout_0
    id: wasm_gui_layout
    parameters:
        affinity: ''
        alias: ''
        columns: '12'
        comment: ''
        layout: '{}'
        row_height: '60'
    states:
        coordinate: [300, 10]
        rotation: 0
        state: enabled
-   name: wbfm_demod
    id: analog_wfm_rcv
    parameters:
        affinity: ''
        alias: ''
        audio_decimation: '5'
        comment: ''
        deemph_tau: '0.000075'
        maxoutbuf: '0'
        minoutbuf: '0'
        quad_rate: quad_rate
    states:
        coordinate: [740, 240]
        rotation: 0
        state: enabled
connections:
- [recording, '0', resample_to_quad, '0']
- [recording, '0', rf_spectrum, '0']
- [resample_to_quad, '0', wbfm_demod, '0']
- [volume_gain, '0', audio_spectrum, '0']
- [volume_gain, '0', speakers, '0']
- [wbfm_demod, '0', volume_gain, '0']
metadata:
    file_format: 1
    grc_version: 3.11.0.0