GNU Radio World

AM Modulation

Interactive amplitude modulation demo with time- and frequency-domain views

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
Signal SourceGNU Radio2
AddGNU Radio1
Constant SourceGNU Radio1
Float To ComplexGNU Radio1
MultiplyGNU Radio1
QT GUI Frequency SinkGNU Radio1
QT GUI RangeGNU Radio1
QT GUI Time SinkGNU Radio1
ThrottleGNU Radio1

Flowgraph source

analog/am_modulation.grc
options:
    parameters:
        author: Claude
        copyright: ''
        description: Interactive amplitude modulation demo with time- and frequency-domain views
        generate_options: qt_gui
        id: AM_Modulation
        title: AM Modulation
    states:
        coordinate: [10, 10]
        rotation: 0
        state: enabled
blocks:
-   name: modulation_depth
    id: variable_qtgui_range
    parameters:
        comment: ''
        label: Modulation depth
        min_len: '240'
        orient: QtCore.Qt.Horizontal
        rangeType: float
        start: '0'
        step: '0.05'
        stop: '1'
        value: '0.7'
        widget: counter_slider
    states:
        coordinate: [580, 10]
        rotation: 0
        state: enabled
-   name: am_spectrum
    id: qtgui_freq_sink_x
    parameters:
        affinity: ''
        alias: ''
        alpha1: '1'
        autoscale: 'False'
        average: '0.2'
        axislabels: 'True'
        color1: '"blue"'
        comment: ''
        ctrlpanel: 'False'
        fc: '0'
        fftsize: '2048'
        grid: 'True'
        label1: AM signal
        legend: 'True'
        marker1: '-1'
        maxoutbuf: '0'
        minoutbuf: '0'
        name: AM Spectrum - Carrier and Sidebands
        samp_rate: '48000'
        style1: '1'
        tr_chan: '0'
        tr_level: '0'
        tr_mode: qtgui.TRIG_MODE_FREE
        tr_tag: ''
        update_time: '0.1'
        width1: '1'
        ymax: '10'
        ymin: '-100'
    states:
        coordinate: [1420, 230]
        rotation: 0
        state: enabled
-   name: am_waveform
    id: qtgui_time_sink_x
    parameters:
        affinity: ''
        alias: ''
        alpha1: '1'
        alpha2: '1'
        autoscale: 'False'
        axislabels: 'True'
        color1: blue
        color2: red
        comment: ''
        ctrlpanel: 'False'
        grid: 'True'
        label1: In-phase
        label2: Quadrature
        legend: 'True'
        marker1: '-1'
        marker2: '-1'
        name: AM Waveform and Envelope
        samp_rate: '48000'
        size: '1024'
        stemplot: 'False'
        style1: '1'
        style2: '1'
        tr_chan: '0'
        tr_delay: '0'
        tr_level: '0'
        tr_mode: qtgui.TRIG_MODE_FREE
        tr_slope: qtgui.TRIG_SLOPE_POS
        tr_tag: ''
        type: complex
        update_time: '0.1'
        width1: '1'
        width2: '1'
        ylabel: Amplitude
        ymax: '2'
        ymin: '-2'
        yunit: ''
    states:
        coordinate: [1420, 390]
        rotation: 0
        state: enabled
-   name: audio_tone
    id: analog_sig_source_x
    parameters:
        affinity: ''
        alias: ''
        amplitude: modulation_depth
        comment: ''
        frequency: '1000'
        maxoutbuf: '0'
        minoutbuf: '0'
        samp_rate: '48000'
        type: float
        waveform: analog.GR_COS_WAVE
    states:
        coordinate: [10, 210]
        rotation: 0
        state: enabled
-   name: carrier
    id: analog_sig_source_x
    parameters:
        affinity: ''
        alias: ''
        amplitude: '1'
        comment: ''
        frequency: '10000'
        maxoutbuf: '0'
        minoutbuf: '0'
        samp_rate: '48000'
        type: complex
        waveform: analog.GR_COS_WAVE
    states:
        coordinate: [550, 360]
        rotation: 0
        state: enabled
-   name: carrier_level
    id: analog_const_source_x
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        const: '1'
        maxoutbuf: '0'
        minoutbuf: '0'
        type: float
    states:
        coordinate: [10, 350]
        rotation: 0
        state: enabled
-   name: envelope
    id: blocks_add_xx
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
        num_inputs: '2'
        type: float
        vlen: '1'
    states:
        coordinate: [310, 230]
        rotation: 0
        state: enabled
-   name: envelope_to_complex
    id: blocks_float_to_complex
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
    states:
        coordinate: [550, 240]
        rotation: 0
        state: enabled
-   name: modulator
    id: blocks_multiply_xx
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
        num_inputs: '2'
        type: complex
        vlen: '1'
    states:
        coordinate: [850, 250]
        rotation: 0
        state: enabled
-   name: throttle
    id: blocks_throttle2
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        ignoretag: 'True'
        limit: auto
        maximum: '0.1'
        maxoutbuf: '0'
        minoutbuf: '0'
        samples_per_second: '48000'
        type: complex
        vlen: '1'
    states:
        coordinate: [1090, 240]
        rotation: 0
        state: enabled
connections:
- [audio_tone, '0', envelope, '0']
- [carrier, '0', modulator, '1']
- [carrier_level, '0', envelope, '1']
- [envelope, '0', envelope_to_complex, '0']
- [envelope_to_complex, '0', modulator, '0']
- [modulator, '0', throttle, '0']
- [throttle, '0', am_spectrum, '0']
- [throttle, '0', am_waveform, '0']
metadata:
    file_format: 1
    grc_version: 3.11.0.0