c966f1cb5a
Add sizeToContents in ChannelGUI and FeatureGUI, called when widget is rolled, so we can remove resizing code from all of the individual channels and features. In RollupContents, use minimumSizeHint for calculated size, so that minimumWidth can come from .ui file. In DeviceGUI::sizeToContents(), call adjustSize(), so Device GUIs start out at minimum needed size (which should restore appearance prior to last patch). In stackSubWindows, use available space for channels if no spectrum/features present. In stackSubWindows, fix spectrum from being sized too big, resulting in scroll bars appearing. Reset user-defined channel width in stackSubWindows, when channels are removed. Don't stack maximized windows. There's one hack in Channel/FeatureGUI::maximizeWindow(). It seems that when maximimzing a window, QOpenGLWidgets aren't always paint properly immediately afterwards, so the code forces an additional update. I can't see why the first call to paintGL doesn't work. |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
m17mod.cpp | ||
m17mod.h | ||
m17modax25.cpp | ||
m17modax25.h | ||
m17modbaseband.cpp | ||
m17modbaseband.h | ||
m17moddecimator.cpp | ||
m17moddecimator.h | ||
m17modfifo.cpp | ||
m17modfifo.h | ||
m17modgui.cpp | ||
m17modgui.h | ||
m17modgui.ui | ||
m17modplugin.cpp | ||
m17modplugin.h | ||
m17modprocessor.cpp | ||
m17modprocessor.h | ||
m17modsettings.cpp | ||
m17modsettings.h | ||
m17modsource.cpp | ||
m17modsource.h | ||
m17modwebapiadapter.cpp | ||
m17modwebapiadapter.h | ||
readme.md |
M17 modulator
Introduction
This plugin is available only on Linux.
This plugin encodes and modulates transmissions made in the M17 protocol. M17 is a fully Open Source and Open Source audio codec based project (Codec2) for FM based digital voice amateur radio. More information is available here
Main interface
There are 4 collapsible main sections in the GUI
- A: Settings: General RF settings
- B: Audio: Audio related settings
- C: Packet: Packet mode related settings
- D: Digital: Settings specific to digital
A: Settings
This is similar to what is found in the NFM modulator.
A.1: Frequency shift from center frequency of transmission
Use the wheels to adjust the frequency shift in Hz from the center frequency of transmission. Left click on a digit sets the cursor position at this digit. Right click on a digit sets all digits on the right to zero. This effectively floors value at the digit position. Wheels are moved with the mousewheel while pointing at the wheel or by selecting the wheel with the left mouse click and using the keyboard arrows. Pressing shift simultaneously moves digit by 5 and pressing control moves it by 2.
A.2: Channel power
Average total power in dB relative to a ±1.0 amplitude signal generated in the pass band.
A.3: Channel mute
Use this button to toggle mute for this channel.
A.4: RF bandwidth
This is the bandwidth in kHz of the channel signal filtered after modulation.
A.5: Frequency deviation
This is the peak FM deviation in ±kHz that will be effective for nominal (1.0) audio volume (FM analog) or extreme symbols (digital). As per M17 standard the value of ±2.4 kHz shall be used. However different values can be chosen for experimentation.
A.6: Volume
This is the volume of the audio signal from 0.0 (mute) to 2.0 (maximum). It can be varied continuously in 0.1 steps using the dial button.
A.7: Level meter in %
Shows the level of the modulating FM signal.
- top bar (beige): average value
- bottom bar (brown): instantaneous peak value
- tip vertical bar (bright red): peak hold value
B: Audio
B.1: Tone input select
Works only in FM analog mode (B.3). Switches to audio tone input.
B.2: Tone frequency (kHz)
Adjusts the tone frequency from 0.1 to 2.5 kHz in 0.01 kHz steps
B.3: FM analog
Toggle analog modulation for audio (tone B.1, mic B.4 or file B.8 inputs). Used for testing purposes.
B.4: Mic (line in) input
Left click to switch to the audio input. You must switch it off to make other inputs available.
Right click to select audio input device. See audio management documentation for details.
B.5: Audio feedback
Activate or de-activate the input source audio feedback. The audio output device may be selected by right clicking on the button.
B.6: Audio feedback volume
Adjust audio feedback volume.
B.7: Audio file path
The path to the selected audio file to be played or dots if unselected
B.8: Audio file select
Opens a file dialog to select the audio file to be played. It must be mono 48 kHz F32LE raw format. Using sox a .wav file can be converted with this command: sox piano.wav -t raw -r 48k -c 1 -b 32 -L -e float piano.raw
B.9: Audio file loop
Play the audio file in an infinite loop
B.10: Play/pause file play
Toggle play/pause file play. When paused the slider below (B.13) can be used to randomly set the position in the file when re-starting.
B.11: Play file current position
This is the current audio file play position in time units relative to the start
B.12: Play file length
This is the audio file play length in time units
B.13: Play file position slider
This slider can be used to randomly set the current position in the file when file play is in pause state (button B.10)
C: Packet
C.1: Packet mode
Turn on packet mode. No other mode must be selected.
C.2: Initiate packet transmission
Send packet frames immediately
C.3: Send packets repeatedly
Send packet frames in an infinite loop with a delay between transmissions set by (C.4)
C.4: Delay between packets
Delay between packet frames in seconds when in loop mode (C.3)
C.5: BERT mode
This is a special mode for Bit Error Rate Testing. In this mode only a synchronization word followed by a chunk of bits taken from a pseudo random generator is sent for each frame. It can be selected only if no other mode is selected.
C.6: Packet tabbed panels
Panels corresponding to each available packet type are arranged in a tabbed setup. Tabs can be selected with icons on the right. These are:
- SMS: SMS data with the chat icon. Selects SMS packet tyoe.
- APRS: APRS data with the world icon. Selects APRS packet type.
C.6.1: SMS data
Selected with the tab with chat icon (top most). Selecting this tab will set the packet mode to SMS.
This is simply a text edit window where you can type your SMS message. As per M17 standard the maximum number of characters is 798 and text will be truncated to this size if it is larger.
C.6.2: APRS data
Selected with the tab with word icon (bottom most). Selecting this tab will set the packet mode to APRS.
C.6.2.1: From idnetifier
This is the "FROM" of APRS message and usuaiiy is the station callsign followed by a dash and a numeric suffix.
C.6.2.2: Add location data
When toggled messages with data (C.6.2.5) and location payloads are sent alternatively. Location data (latitude and longitude) are taken from the global station position settings.
C.6.2.3: To identifier
This is the "TO" of APRS message. There is a choice between "APRS¨, "APZ¨, "CQ", "BEACON", "CALLSIGN-SSID" or custom.
C.6.2.4: Via identifier
This is the "VIA" of APRS mesage. There is a choice between "WIDE2-2", "ARISS" or custom.
C.6.2.5: Data payload
Arbitrary data payload to be added to the APRS message. As per APRS standard it must be prefixed with the >
sign for text payloads.
D: Digital
D.1: Baud rate
Only the standard 4.8 kBaud rate is available. This is a provision for possible future experimnentations.
D.2: Source call
This is the source callsign
D.3: Add GNSS data
Check this button to add GNSS data to the LSF (Link Setup Frame) data. Latitude, longitude and altitude are taken from the global station position settings.
D.4: Destination call
This is the destination callsign. Keep empty for a general (CQ or BROADCAST) call.
D.5: Channel Access Number
This is the 0..15 channel access number sent in the LSF (Link Setup Frame).