Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Local Sink: enhanced features #871

Closed
f4exb opened this issue Apr 26, 2021 · 2 comments
Closed

Local Sink: enhanced features #871

f4exb opened this issue Apr 26, 2021 · 2 comments
Assignees
Milestone

Comments

@f4exb
Copy link
Owner

f4exb commented Apr 26, 2021

This is a fairly generic issue just to mention an interesting discussion between Jon and myself on the group chat and keep track not to forget it. Here is the slightly reformatted transcript:

It’s not something everyone is likely to want to do, but there are a few similar things I’ve wanted to do recently, so I thought it would be worth mentioning. Here’s a few that spring to mind:

  • For some devices like the Discovery HF that support a very small MDS with large dynamic range, a digital gain stage on RX would be useful. Now this could be implemented in the device or in the channel plugins (and in fact the change you made to the gain in the SSB demod last week has helped when piping audio to other apps), but it seems to me a global gain control might be better – as it would save it being implemented multiple times in difference device and plugins and provide a consistent UI.
  • I’ve also wanted to be able to insert a variety of filters on the baseband signal, but on RX before the File Sink. Currently, I perform the filtering as a post-processing step in Matlab, but it would be nicer if that could be done in realtime, particularly for high sample rates. While filtering could be added to the File Sink, it seems more flexible to support it on the baseband signal, as there may be other uses. E.g. you might want to drop a notch filter somewhere in the spectrum, to block some interference for other channels.
  • Similarly, when I added the extra decimation stages for the Discovery a few weeks ago, I thought that would possibly be better implemented outside of the device plugin, so all devices would have the option of an increased number of decimation stages, rather than just the discovery. (There’s an added complication there currently though, of different devices using different decimation routines).

This can be done without compromising the current design. Let's take the example of the Rx chain. You have the "local sink" channel plugin https://github.com/f4exb/sdrangel/tree/master/plugins/channelrx/localsink that transfers the whole or part of the baseband to another device set. Originally this was designed to be able to split the narrowband QO-100 downlink into smaller chunks but of course this may be used for any different purpose where you need to zoom in into not only the spectrum but the entire I/Q baseband. This is to be used in conjunction with the local input plugin: https://github.com/f4exb/sdrangel/tree/master/plugins/samplesource/localinput

Now you can imagine a more complex and specialized local sink plugin that would do any sort of filtering before passing to the next device set. It is even possible to apply any complex to complex transform (correlation, convolution...) since the only requirement for the local input plugin is to get complex (I/Q) data.

The same applies the other way round with local output: https://github.com/f4exb/sdrangel/tree/master/plugins/samplesink/localoutput and local source: https://github.com/f4exb/sdrangel/tree/master/plugins/channeltx/localsource. In this case the specialized plugin would be a variant of the local output plugin.

As mentioned earlier this is not something everyone is likely to want to do so the added complexity if piping from a device set to another device set does not matter

@f4exb
Copy link
Owner Author

f4exb commented Dec 1, 2022

In order to make this more concrete and feasible I think it would be good enough to augment the Local SInk plugin with richer features like a gain stage and FFT filter with a bank of filters. Possibly a spectrum display with markers showing the filtering bands would be nice.

First of all the present Local Sink should be fixed since it crashes in many cases and requires a specific sequence of actions to start successfully.

@f4exb f4exb changed the title Specialized plugins to pipe data between device sets Local Sink: enhanced features Dec 3, 2022
@f4exb f4exb self-assigned this Dec 3, 2022
f4exb added a commit that referenced this issue Dec 3, 2022
@f4exb f4exb added this to the v7.8.5 milestone Dec 17, 2022
@f4exb
Copy link
Owner Author

f4exb commented Dec 17, 2022

DEployed in v7.8.5

@f4exb f4exb closed this as completed Dec 17, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant