1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2024-11-25 09:18:54 -05:00
sdrangel/plugins/feature/morsedecoder
2024-10-06 10:53:38 +02:00
..
CMakeLists.txt Merge pull request #2252 from srcejon/freq_scanner 2024-09-13 21:07:04 +02:00
morsedecoder.cpp Update channel list upon Morse Decoder and Demod Analyzer GUI creation. Fixes #2263 2024-10-05 17:13:03 +02:00
morsedecoder.h Update channel list upon Morse Decoder and Demod Analyzer GUI creation. Fixes #2263 2024-10-05 17:13:03 +02:00
morsedecodergui.cpp Update channel list upon Morse Decoder and Demod Analyzer GUI creation. Fixes #2263 2024-10-05 17:13:03 +02:00
morsedecodergui.h Morse Decoder: added option to show decoder thershold trace or not 2024-05-23 18:51:54 +02:00
morsedecodergui.ui Morse Decoder: added option to show decoder thershold trace or not 2024-05-23 18:51:54 +02:00
morsedecoderplugin.cpp Updated plugin versions 2024-10-06 10:53:38 +02:00
morsedecoderplugin.h Morse Decoder: initial commit 2024-05-20 22:49:48 +02:00
morsedecodersettings.cpp WDSP receiver: fixed FM demod amd implement equalizer 2024-07-11 21:25:53 +02:00
morsedecodersettings.h Morse Decoder: added option to show decoder thershold trace or not 2024-05-23 18:51:54 +02:00
morsedecoderwebapiadapter.cpp Morse Decoder: implemented API. For #2112 2024-05-21 02:43:51 +02:00
morsedecoderwebapiadapter.h Morse Decoder: initial commit 2024-05-20 22:49:48 +02:00
morsedecoderworker.cpp Morse feature: Add cast to fix build on Qt6. 2024-05-24 09:20:44 +01:00
morsedecoderworker.h Morse Decoder: set buffer size to analysis time window (3s) 2024-05-20 22:49:48 +02:00
readme.md Fix typos in help files 2024-07-10 23:06:29 +02:00

Morse Decoder Plugin

Introduction

This feature plugin can be used to decode Morse (CW) transmissions. It is based on a decoding library called GGMorse. You must compile and install this library to build this plugin. The GGMorse installation folder is specified as -DGGMORSE_DIR on the cmake command line.

This plugin uses the demodulated audio of some Rx channel plugins.

  • AM demodulator
  • NFM demodulator
  • SSB demodulator (use mono audio - not binaural)
  • WFM demodulator

Typical sequence of operations:

  1. Start the plugin (1)
  2. Select channel (2)
  3. If channel is unique or default selection has not been changed press the (re)apply button (3)

Interface

The top and bottom bars of the channel window are described here

Morse decoder plugin GUI

1: Start/Stop plugin

This button starts or stops the plugin

2: Channel selection

Use this combo to select which channel to use for display. Channel is selected upon change. If channel is not changed or there is only one in the list you have to use the (re)apply button (A.4) to effectively connect the channel to the analyzer.

3: (Re)apply channel selection

Applies or re-applies channel selection (A.3) so that the channel gets effectively connected to the analyzer and signal is displayed. This will update the sample rate.

4: Input sample rate

This is the sample rate of the stream sent by the channel. GGMorse uses a sample rate of 4 kS/s internally and has its own decimation stage. However the input sample rate must be a multiple of 4 kS/s.

5: UDP

When checked, decoded text is forwarded to the specified UDP address (6) and port (7).

6: UDP address

IP address of the host to forward decoded text to via UDP.

7: UDP port

UDP port number to forward decoded text to.

8: Detected pitch

This is the CW tone pitch detected by GGMorse.

9: Detected keying speed

This is Morse keying speed detected by GGMorse.

10: Lock pitch and speed

Lock the pitch and speed to the current values detected by GGMorse. Unlock to return to auto detection.

11: Decoder cost factor

This is the GGMorse decoder cost factor. Successful decodes yield from a few millis to a few tens of millis.

11a: Show decoder threshold

Enable or disable the GGMorse decoder threshold display on the imaginary trace of the scope.

12: Start/stop Logging Messages to .txt file

When checked, writes all received characters to the .txt file specified by (13).

13: .txt Log Filename

Click to specify the name of the .txt file which decoded text is logged to.

14: Clear text

Push this button to clear the text in the text window (15)

15: Decoded Text

This area shows the decoded text. New text appears every 3 seconds which is the GGMorse analysis window length.

16. Waveforms view

This scope display shows waveforms related to the decoding with GGMorse.

  • On the real part it shows the average output of the Goertzel filter as exposed by GGMorse and that is used for decoding.
  • On the imaginary part
    • When the show decoder threshold is set (11a) it shows the threshold level being used in GGMorse for decoding. It is not necessary on the same scale as the Goertzel output.
    • When the show decoder threshold is not set (11a) a constant 0.0316227766017 is applied which corresponds to a power of -30 dB.

The elementary trace length is 3 seconds. This is the time window used by GGMorse thus a new trace appears every 3 seconds. The actual traces are interpolated to fit in the 4800 samples of the elementary trace. Thus the sample rate is a fixed 1.6 kS/s.

The best settings to visualize the Goertzel waveform is the following:

  • For "Real" (X) and "Imag" (Y) display mode:

    • For the X trace (real): Morse decoder X settings
    • For the Y trace (imag): Morse decoder Y settings
  • For "MagDB" display mode (X trace): Morse decoder Mag settings

Note: the scope display has memories so you can come back to previous waveforms using the "M" dial button: Morse decoder memorise. You can also save and load traces.