New Audio Streaming TCP Server Plugin for SDR#
Over on his site rtl-sdr.ru, Vasilli has been back at work creating new plugins for SDR#. The latest plugin is a TCP server that takes the demodulated mono audio stream from SDR# and sends it over TCP (note that the site is in Russian but the Google translate button on the right can be used). This can be used to easily stream audio over the internet or a network, or even locally on the same PC to another program. If enough programs support TCP audio streams, then the plugin could potentially replace the need for software like Virtual Audio Cable or VBCable by allowing another method for piping the audio from SDR# into a decoding program.
Installing the plugin is the same as usual. Just extract the SDRSharp.TcpServer.dll file to the SDRSharp folder, open plugins.xml with a text editor and paste in the 'magic line' specified in MagicLine.txt.
To test the server you can connect to it with VLC media player. Some special commands need to be specified to VLC in order for it to understand the audio format. To enter them go to Media->Open Network Stream and make sure 'Show more options' is checked. Enter the network URL as 'TCP://127.0.0.1:20022' (without quotes), and enter the Edit Options field as ':demux=rawaud :rawaud-channels=1 :rawaud-samplerate=48000 :rawaud-fourcc=s16l' (without quotes). Ensure the first colon in the line is copied over properly. Then enable the TCP server in the SDR# plugin, and click Play in VLC. Ensure the SDR# is muted, and the volume in VLC turned up. Audio should now begin streaming through TCP.
Hopefully in the future we can see some audio compression algorithms and more decoding software supporting TCP audio connections.
Vasilli has also updated many of his other plugins too, including creating a DSD_TCP plugin which allows you to transmit the digital audio directly to DSD+ via a TCP connection.
It would be neat if it transmitted the frequency as text to be displayed in the media stream. This way one could see in VLC what is listened to. Even better if a frequency to name table is added so the channel name is displayed as well.
I’m really happy to hear about Vasily’s TCP streamer plugin. This news comes while I’m in the middle of writing down some ideas about audio (and data) routing that have bothered me for a long time.
This is _exactly_ the right approach to building a versatile, stand-alone audio routing/distribution system with no annoying dependencies. And with a friendly interface it could become the killer app for almost all operators who need to deal with more than one channel at a time.
Not only will it eliminate the need for virtual audio streams (on one computer), but it can function equally well for multiple streams from multiple sources if a suitable client is provided.
But (as they say) the devil is in the detail. In my tiny world the top item on my “wish list” is a digital audio mixing client that selects two out of any available (stereo) streams, converts to mono, feeds to L/R channels of headphone and/or speakers and allows balance adjustment.
Brilliant for the Short (All) Wave Listener comparing parallel channels. Brilliant for binaural listening (provided an SDR demodulator can route LSB->L and USB->R). Brilliant for split-frequency monitoring.
The problem is synchronization. With one computer running one SDR instance that should not be an issue. With two or more instances, or multiple computers, we would need some kind of real-time sync controller, don’t you think?
Vasili, it would be very cool to make this tcp_server as a selector in Aux_vfo.
Is there a chance to transmit the whole raw to tcp? In SDR# I can load pre-recorded rawfiles. But this plugin seems only to transmit the audio bandwidth, not the complete raw (in my case 2048000 Samples, 8 or 16 Bit).