Closed DanielCraig closed 6 years ago
This is almost certainly a change in gr-dsd's interface. Can you specify exactly which version of gr-dsd you are using?
I used pybombs to install it, but the CHANGELOG file shows 1.7.0-dev as the latest entry. It looks like the last commit to github.com/argilo/gr-dsd was a little over a year ago (Oct 28, 2016), as was the last update to the pybombs recipe file.
Unfortunately, I'm having trouble compiling that version of gr-dsd and getting a result that works at all. If you can look into this further yourself, please do (I'd start with looking for other usage examples and digging around in interactive python with import dsd
and so on); otherwise I'll try again on another platform later.
Sorry for the delay in responding. I've confirmed that the dsd.py file has to be edited to "import dsd_block_ff" explicitly for the DSD mode to show up in the ShinySDR UI, but I am still getting the same error in the command line when I try to use it. This was confirmed on a second installation of the software, where everything else seems to work properly (except for maybe the zoom in/out functionality)
Yes, the parameters have changed. I just took a look at the code on git and the new dsd_block_ff
has the C++ signature
static sptr make(
dsd_frame_mode frame,
dsd_modulation_optimizations mod,
int uvquality,
bool errorbars,
int verbosity);
so fixing this requires figuring out the correct values for those new parameters.
That did the trick! For now I have the values hardcoded. I'm not sure how to go about adding to the GUI.
In dsd.py: Changed import on line 29 to
"import dsd"
Changed dsd_block on line 69 to
"dsd.dsd_block_ff(dsd.dsd_FRAME_DMR_MOTOTRBO,dsd.dsd_MOD_GFSK,3,True,2),"
It looks like the values will be those in dsd_dsd_block_ff.xml
Do you have any suggestions for adding a menu to select the options? Perhaps similar to the dropdown menu that appears for "AM demodulation". The labels and values are as follows:
Dropdown 1: Title: "Frame Type" Options: Label: "Auto-detect" == value: "dsd.dsd_FRAME_AUTO_DETECT" ----- This should be the default Label: "P25 Phase 1" == value: "dsd.dsd_FRAME_P25_PHASE_1" Label: "D-STAR" == value: "dsd.dsd_FRAME_DSTAR" Label: "NXDN48 (6.25 kHz) / IDAS" == value: "dsd.dsd_FRAME_NXDN48_IDAS" Label: "NXDN96 (12.5 kHz)" == value: "dsd.dsd_FRAME_NXDN96" Label: "ProVoice" == value: "dsd.dsd_FRAME_PROVOICE" Label: "DMR/MOTOTRBO" == value: "dsd.dsd_FRAME_DMR_MOTOTRBO" Label: "X2-TDMA" == value: "dsd.dsd_FRAME_X2_TDMA"
Dropdown 2: Title: "Mod Optimization" Label: "Auto-select" == value: "dsd.dsd_MOD_AUTO_SELECT" ----- This should be the default Label: "C4FM" == value: "dsd.dsd_MOD_C4FM" Label: "GFSK" == value: "dsd.dsd_MOD_GFSK" Label: "QPSK" == value: "dsd.dsd_MOD_QPSK"
That's feasible. I am going to prepare a "blind" change to at least add reasonable defaults and possibly the menus.
@DanielCraig I just pushed a change that should implement the no-options version. Let me know if it works at all.
Thank you! That works, right-out-of-the-box.
Line 78 dsd.py: + uvquality=3, # TODO figure out what this does
This is described on the DSD Operation page towards the bottom of the page.
Unvoiced speech is supposed to be generated with a noise source, 256 point DFT a number of band filters, followed by a 256 point inverse DFT. For computational simplicity mbelib uses a different method. For each unvoiced speech band, a number of sine waves are generated, each with a different random initial phase. The number of waves used per band is controlled by the -u option. A setting of 4 would approximate the performance of the 256 point DFT method as the maximum number of voice bands is 56, and very low frequencies are not synthesized. Values less than 3 have a noticable lack of unvoiced speech and/or artifacts. The defualt of 3 provides good speech quality with reasonable cpu use. Increasing the quality above the default rapidly consumes more CPU for increasingly diminishing returns.
Thanks. I was looking at source code and not separated docs.
Working on an update that includes a control for uvquality. The other options will require some way to get the enum values out of gr-dsd (hardcoding them is not acceptable).
Commit 303ede61c51e70b91b2da6b062a65dd832a814b1 adds the uvquality slider. I'm going to call this fixed since the bug was about the incompatible API.
Sounds good. Thank you. Are you planning on adding the UI options to another Issue? Being able to select DSD options in the UI.
I already mentioned:
The other options will require some way to get the enum values out of gr-dsd (hardcoding them is not acceptable).
I'm not sure I understand what you mean by enum values.
The values like dsd.dsd_FRAME_DSTAR
. There needs to be a way to get the list of them out of gr-dsd rather than putting the list in ShinySDR's source.
Hi,
I was having trouble getting gr-dsd to work, got it to show up in the web UI, but now received the following error when attempting to use "DSD".
I was able to get the plugin functioning by investigating the import process in a python shell. I could only get "dsd_block_ff" to load on my setup by using "from dsd import dsd_block_ff". I made this same change to the dsd.py file in /plugins/, and the DSD option now appears in the web UI.
Clicking it, however, yields the above error message. Do you have any thoughts as to what the issue is?