Hallo,
lange war ich nicht mehr hier und viel Zeit ist vergangen. Trotzdem war ich nicht untätig und habe fieberhaft alle möglichen Informationen zusammengetragen und eine ganze Menge Vorabeit geleistet. Ob und wie ich meine Erkenntnisse zu einem funktionsfähigen Programm zusammensetzen kann, wird sich zeigen.
Ich gebe zu, dass ich für eine Menge meiner Quelltexte die Google KI eingesetzt habe. Eigentlich wollte ich das gerade nicht tun, aber ohne diese Hilfe, wäre ich mit Sicherheit niemals so weit gekommen. Natürlich kann ich die erstellten Quelltexte nicht 1:1 umsetzen. Diese müssen individuell angepasst werden. Nun existiert schonmal eine Grundstruktur rund um mein selbsterstelltes Panel und das Ergebnis klingt plausibel. Da ich in den letzten Wochen verschiedene Ideen ausprobiert habe, existieren auch verschiedenste Quelltexte.
Einige arbeiten mit den original NRSC5- dll Dateien, in anderen Versionen werden die NRSC5-C++ Quelltexte ins Csharp Format übersetzt und um einige Funktionen erweitert. Fakt ist jedenfalls, dass sich alles so darstellt, wie ich mir das vorher ausgededacht habe.
Ausser den Decodern, sind viele Funktionen schon in der SDRsharp Radio.dll enthalten. Aber Vorsicht! Im Laufe der Jahre, wurde diese immer wieder verändert. KI erstellte Texte greifen nicht immer auf die selbe Datei zurück und deshalb müssen die Vorschläge gründlich geprüft und angepasst werden. Wirklich erfreut und überrascht, hat mich die KI, bei Vorschlägen und Verbesserungen, zB. eine grafische Pegelanzeige, eine Mute-Schaltung bei Kanalwechsel, oder das nur vorhandene Audiodienste angezeigt werden.
Genau wie beim TVplugin, wird der I/Q Raw Datenstrom abgegriffen. Dieser muß eine Bandbreite von bis zu 400kHz haben und frei von jeglicher Modulation sein. Ein erster Decoder verarbeitet den Datenstrom und teilt ihn in die einzelnen Radiostreams auf. Weitere Decoder filtern und decodieren dann Musik, Texte, Fotos, Stationsinfos usw.
Ein wichtiger Bestandteil in dem Programm, ist die gepatchte faad2.dll, bzw. libfaad.dll (mit HDC Decoder) wie bei TheDaChicken auf Github beschrieben. Die original Datei ist so umgeschrieben, dass sie den NRSC5- Audiostream decodieren kann.
( nrsc5/support/faad2-hdc-support.patch at master · theori-io/nrsc5 · GitHub )
Diese Datei habe ich nach Anleitung selber gepatcht, konnte ihre Funktion jedoch noch nicht testen. Eine fertige gepatchte Datei, habe ich nicht gefunden.
Hier alle entstandenen cs- Dateien: Here are all the generated .cs files:
AasLotParser
Acquire
AudioFilterStage
QamDemodulator
ControlPanel
Decoder
Deinterleaver
FirDecimQ15
HdcAudioDecoder
HdcAudioParser
LibFaad2.cs und LibFaad2.dll- HDC Decoder
Nrsc5AasDecoder
Nrsc5AudioProcessor
Nrsc5BerCalculator
Nrsc5BitSlicer
Nrsc5DeInterleaver
Nrsc5Descrambler
Nrsc5Gui
Nrsc5LotParser
Nrsc5MetadataEventArgs
Nrsc5OfdmDemodulator
Nrsc5Plugin
Nrsc5Processor
Nrsc5QpskDemodulator
Nrsc5Settings
Nrsc5ViterbiDecoder
PhaseTracking
QamDemodulator
ReedSolomonDecoder
SisExtractor
SDRsharp – dll- Dateien habe ich in folgenden Größen vorliegen:
PanView.dll 118kB/ 57kB (grafische Darstellung des Analysers und Wasserfalls)
Common.dll 16kB/ 14kB (Steuerung und Funktionen des Plugins und des Panels)
Radio.dll 49kB/ 99kB/ 112kB (Be- und Verarbeitung des Datenstroms incl. Demodulation)
Die jeweils Erstgenannten werden in der aktuellen SDRsharp-SDK benutzt. Das gesammte Projekt stützt sich auf diese Grundlage.
Mein bisheriges Panel habe ich etwas überarbeitet. Die Buttons und Anzeige auf der rechten Seite sind durch einen KI-Vorschlag entstanden. Sie sind gleichzusetzen mit meinen Funktionen und sind nur zu Testzwecken enthalten. Sie können jederzeit verändert, erweitert oder gelöscht werden. Nicht alle gelisteten Dateien sind für das Plugin geeignet.
Die KI hat 3 Wege zum Empfang gelistet:
-
als SDRsharp Plugin / Empfang über einen RTL-SDR
-
als SDRsharp Plugin / Empfang über einen selbsterstellten Spyserver
-
als SDRsharp Plugin/ Empfang über den Spyserver mit kompletter Datenauswertung (Ton/ Data/ Bild usw.)
Die letztere Funktion ist das angestrebte Ziel.
Über die KI-Funktion kann man sagen was man will. Alle Schritte und Funktionen werden sehr gut erklärt. Allein zu Lernzwecken ist es sehr anschaulich, wenn man sieht was mit den Daten und Funktionen passiert und bewirkt wird. Wenn ich bedenke, dass ich für ein funktionierendes TVplugin ca 6 Monate benötigt habe, liege ich bei dieser Menge an Daten noch sehr gut im Zeitrahmen.
Hello,
It’s been a long time since I was last here, and quite a while has passed. Nevertheless, I haven’t been idle; I’ve been feverishly gathering all kinds of information and putting in a great deal of preliminary work. It remains to be seen whether—and how—I can assemble my findings into a functional program.
I admit that I used Google AI for a lot of my source code. I hadn’t actually intended to do that, but without this help, I certainly never would have made it this far. Of course, I can’t simply implement the generated code verbatim; it requires individual customization. A basic structure centered around my custom panel is now in place, and the result looks promising. Since I’ve experimented with various ideas over the last few weeks, I have a wide range of code snippets. Some work with the original NRSC5 DLL files, while other versions involve translating the NRSC5 C++ source code into C# and adding extra features. In any case, the system is shaping up exactly as I had envisioned.
Aside from the decoders, many functions are already included in SDRSharp’s `Radio.dll`. But a word of caution: that file has undergone numerous changes over the years. AI-generated code doesn’t always reference the same file version, so the suggestions must be thoroughly checked and adjusted. I was genuinely pleased and surprised by the AI’s suggestions and improvements—such as a graphical level meter, a mute function for channel switching, or a feature to display only available audio services.
Just like with the TV plugin, the raw I/Q data stream is tapped into. This stream requires a bandwidth of up to 400 kHz and must be free of any modulation. An initial decoder processes the data stream and splits it into the individual radio streams. Additional decoders then filter and decode music, text, photos, station information, etc.
A key component of the program is the patched faad2.dll (or libfaad.dll) featuring the HDC decoder, as described by TheDaChicken on GitHub. The original file has been modified to enable it to decode the NRSC5 audio stream.
( nrsc5/support/faad2-hdc-support.patch at master · theori-io/nrsc5 · GitHub )
I patched this file myself following the instructions but have not yet been able to test its functionality. I was unable to find a pre-patched version of the file.
I have the following file sizes available for the SDRsharp DLLs:
PanView.dll 118kB / 57kB (graphical display of the analyzer and waterfall)
Common.dll 16kB / 14kB (control and functions of the plugin and panel)
Radio.dll 49kB / 99kB / 112kB (processing of the data stream, including demodulation)
The first ones listed in each case are used in the current SDRsharp SDK; the entire project is built upon this foundation.
I have slightly revised my existing panel. The buttons and display on the right-hand side were created based on an AI suggestion. They correspond to my functions and are included solely for testing purposes; they can be modified, expanded, or deleted at any time. Not all the listed files are suitable for the plugin. The AI listed three methods for reception:
1. as an SDRsharp plugin / reception via an RTL-SDR
2. as an SDRsharp plugin / reception via a custom-built Spyserver
3. as an SDRsharp plugin / reception via Spyserver with full data analysis (audio, data, image, etc.)
The latter function is the ultimate goal.
You can think what you like about the AI feature, but all the steps and functions are explained very well. It is highly instructive—even just for learning purposes—to see what happens to the data and functions and what effects they produce. Considering that it took me about six months to create a working TV plugin, I am making very good progress within the timeframe given the volume of data involved here.
Gruß Micha