FM receiver V3.15
========================================================================
Some significant modifications were made by Thomas Neder, apart from the "skin", most mods were "under the hood".
The version number is now 3.15
New is a so-called PSS (perfect stereo separation) control on the main widget, contributed by TomNeda.
In computing the 38 Khz signal to decode the L-R signal, from the 19 KHz pilot signal, an error may occur, an offset of a few Hz. The PSS algorithm applies some techniques to figure out what correction on the recomputed 38 KHz carrier that has to be applied for a perfect match.
While in previous versions the list of configure devices was checked on program start up, to find an attacted device, the current version is slightly different. On program start up, the software will try to start the device (if any) that was used on the last occasion, if no such device can be found, a small devide selection widget will show. (Note that different from e.g. Qt-DAB, once a device is selected and opened, no selection for another device is possible during this program invocation)
Since the number of controls in the main widget was growing, some controls were transferred to a separate "control" widget. The main widget has a button, labeled Config with which one can select and deselect this control widget.
Buttons on the control widget are typically those that are not often touched when just listening to the radio. Buttons for setting the deemphasis and the pty labels are therefore now on the configuration widget, since their setting depends on the country you are in. Furthermore, the control widget contains a widget, Combinear on the picture, that can be used to dynamically set another "skin"
The inputfiltering, i.e. separation between transmissions close to each other in frequency, or even with (slightly) overlapping frequencies, is improved. The filter is pretty strong, but that also means that the filter requires some serious cpu use.
If the filter is switched "Off", it is excluded from the processing chain.
As usual, next to the sources, an AppImage (for Linux x64) and a Windows installer are available in the releases section.
Devices that are supported are
There is also support for file input, however, right now only for "wav" files with a samplerate of 2304000.
While there is an installer for Windows, and an appImage for Linux64, it is of course possible to generate an executable.
For compiling and linking lots of libraries and utilities have to be installed On Ubuntu, in any case, the (older) 16 version that I use to create appImages. I use qmake for generating a Makefile, if you have cmake installed, it is possible to use that instead, here it is assumed that qmake is used
Summarizing:
Obviously, we need a C++ compiler and associated libraries
The GUI is developed using the Qt5 framework, for qt5 one needs to install the qt5-qmake utility (which may have a lightly different name on other distributions), the qt5 environment and dependent libraries (here qt5-default, mesa-common-dev libgl1-mesa-dev, libqt5opengh5-dev, qtbase5-dev)
Furthermore, we need qwt, which is built on Qt5, but a separate library (here libqwt-qt5-dev) Note that on different systems, the qwt library and coreresponding include files may reside on different locations.
Fast fourier transforms, both for generating spectra and for some advanced filtering, is using the fftw3 subsystem. Note that the implementation uses the fftw3f (i.e. "float") version, not the "double".
For handling the audio output, the portaudio library is used. Note that the Version 19 library is used, not the older version 18.
For handling file I/O the library libsndfile is used, and for (some) rate conversions the library libsamplerate.
To allow distributions to run on systems were not all device libraries are installed, the approach taken is than when selecting a device, the required functions needed by the interface software are dynamically loaded. Since all devices use some form of I/O over USB, the libusb library is also needed.
Once the libraries are loaded, one should look at the "fmreceiver.pro" file, which is basically a configuration file. The qmake (whatever version) is able to generate a real Makefile from it. Of course, the "fmreceiver.pro" file might have to be adapted. It contains a section for "unix" and one for "win" (i.e. windows. The system dependencies are two parts:
the compiler flags, set by default on maximum optimization (after all the program is a serious user of resources). In some cases the "-flto" flag is known not to be available
the devices.
On selecting a device, the program dynamically loads the functions from the device library. The advantage is that devices for which no device library is installed can be part of the configuration. Of course, for a device you want to use, the device library should be installed.
The program supports sdrplay RSP devices (both using the "old" 2.13 library (which does not support the RSPdx) and the 3.XX (XX = 11 on Windows), When using the 3.10 library or higher on Windows, the 2.13 library cannot be reached, and the 3.10 library does not support the very first RSP, the RSP 1.
The program support the airspy devices, The program supports "dabsticks", The program supports lime devices, program supports hackrf devices and the program supports the Adalm pluto.
Note that this version does NOT support devices using a soundcard for data input.
Adapt the configuration (the "CONFIG += XXX" elements in the ".pro" file, most likely comment out devices that you do not want to include
run 'qmake' (variants of the name are qt5-qmake and qmake-qt5) which generates a Makefile
if all libraries are installed run "Make",
The AppImage, part of the distribution on the releases section, is created on an Ubuntu 16 VM. If you want to experiment, the file fm-build-script is there that - as the name suggests - is the script being used to create such an AppImage
Copyright of the fm software is by J Van Katwijk, but parts of the mods to older versions are done by Thomas Neder, obviously for the parts he contributed, he the copyrights are his.
- Good luck