QIRX Remote: Technical Overview
This page provides a technical introduction into the QIRX Remote software.
But please note that it is not necessary to know it for getting started with QIRX Remote.
The following picture shows an overview of the QIRX Remote software architecture:
-
Horizontal line of boxes
The horizontal line of boxes, starting at the left with the hardware, and ending
at the right with the speaker, indicates essentially the usual QIRX processing, without a GUI.
The Rx hardware feeds its I/Q data in the normal TCP/IP drivers used by QIRX.
The QIRX Kernel is at the heart of the processing by demodulating the IQ data according
to the selected demodulator like DAB.
In the case of DAB, it feeds the AAC audio data via UDP into the qirx_audio
process, which converts them to PCM samples and sends it to the speaker, via the
standard PortAudio Software. It might be noted here that the qirx_audio reflects the PCM data back to the QIRX Kernel,
transferring them here to the QIRX Server, which prepares them for the transmission to the web client, e.g. a smartphone.
The QIRX Kernel is a DLL ("Resources.dll"), identical in all flavors of qirx, like the windows GUI version, the QIRX console
variant for Windows or Linux. QIRX Kernel is completely agnostic of the GUI.
-
QIRX Server
It is a newly developed piece of software, managed by the Kestrel webserver.
Communicating with the QIRX Kernel via the Kernel's published interfaces, it
receives the audio PCM data from qirx_audio, prepares them for the transfer
across the air and hands them over to the signalR middleware.
It handles all communication between the web client, containing the GUI and the QIRX Kernel.
-
signalR
It is a standard "communication middleware", provided by Microsoft and suitable for realtime transfer
of the audio data stream.
However, not only the audio, but also all other commands or indications go via signalR.
-
Kestrel Web Server
All of the above is hosted by the "Kestrel" web server, provided by Microsoft.
Kestrel, as a web server, must of course be configured. In this case it is very simple and needs
only the information at which IP Address and portnumber it is to listen for a connection from a client.
-
Client Software
Of course, for the actions to be shown on a web browser (e.g. smartphone or tablet), html web pages are
necessary. Although not shown in the above picture, they formed a significant effort during the QIRX Remote
development, as always with GUI software.
Technically spoken, the web pages are programmed as "Razor" pages in the ASP.NET Core MVC ("Model-View-Controller")
programming model, being a standard pattern in the MS world. Apart from this, the time-critical parts of the client software are programmed in
JavaScript. These are necessary to provide a click-free audio stream playable by the device.
The creation of the audio output from the PCM sample stream is performed in the same standardized way
by all web browsers being used,
like Firefox, Chrome, Safari or Samsung Internet.
However, there were differences between different types
of devices, and not all browsers render the audio completely error-free. The best results were achieved with Apple products,
like iphone or an ipad.
All of this client-server interaction has to be planned carefully, and is handled "under the hood" by the
Kestrel and the signalR infrastructure.