Digital Speech Decoder (DSD) rewritten as a C++ library
Bot releases are visible (Hide)
Published by f4exb over 7 years ago
For signals strong enough to lock the PLL this works significantly better than with the ringing filter alone .
However with marginal signals the ringing filter alone and a few heuristics work better. This is why the PLL has been made optional.
Use setter to copy bytes into FICH structure. Use a packed structure so the number of bytes is exact
dsdcc_1.7.1-1_amd64.deb
Debian package for Intel/AMD 64 bit architecture. Works in Ubuntu 16.04dsdcc_1.7.1-1_armhf.deb
Debian package for ARM (armv7l) architecture. Intended for Debian Jessie distributionsPublished by f4exb over 7 years ago
A PLL for symbol synchronization has been added. It is centered around the symbol rate and driven by the output from the existing ringing filter itself fed by the square of the discriminator output. This significantly improves the decoding in all modes and is a major improvement from the previous versions.
In addition code cleaning up was carried out using cppcheck and Eclipse own static analysis checker. This may have an effect on occasional segmentation fault errors. Judging by burn in tests using the DSD demod plugin of SDRangel the occasional segmentation fault has not reappeared yet on a 24h+ period.
dsdcc_1.7.0-1_amd64.deb
Debian package for Intel/AMD 64 bit architecture. Works in Ubuntu 16.04dsdcc_1.7.0-1_armhf.deb
Debian package for ARM (armv7l) architecture. Intended for Debian Jessie distributionsPublished by f4exb almost 8 years ago
New option -M
to specify an output file where status messages are written every N input samples. The number N is calculated from the polling time given in the -m
option as the number of samples processed during this time at a 48kS/s rate. Thus for example with a polling time of 0.1s (the default) N = 48000 * 0.1 = 4800 samples.
The format of the file is described here
Two more options have been added to specify a reference location when geographical data is sent in the messages (D-Star only). These are:
-P
: latitude in decimal degrees with North positive-Q
: longitude in decimal degrees with East positiveDetails of the interface have changed concerning DMR so you will have to re-compile your client application if you use this version
Fixed missing attributes initialization which could cause trouble in some circumstances. In paricular the release build was not working (default build was debug).
Last but not least two Debian packages are provided for x86_64 and armv7 architectures.
Install it as usual for a .deb package:
universe
repository is in your /etc/apt/sources.list
Then in a terminal do:
sudo apt-get update
sudo dpkg -i dsdcc_vx.y.z-1_amd64.deb
where x.y.z is the version numbersudo apt-get -f install
this will install missing dependenciesThe software is installed in /opt/dsdcc
you can start the dsdccx
utility from the command line with:
/opt/dsdcc/bin/dsdccx
dsdcc_1.6.0-1_amd64.deb
Debian package for Intel/AMD 64 bit architecture. Works in Ubuntu 16.04dsdcc_1.6.0-1_armhf.deb
Debian package for ARM (armv7l) architecture. Intended for Debian Jessie distributionsPublished by f4exb almost 8 years ago
It is now possible to compile dsdcc if only one, both or none of the mbelib or SerialDV dependencies are met. This solves issue #3
Of course without support of mbelib nor SerialDV no audio will come out. However this is a provision for future developments for use cases where only the MBE frames are needed (for example in a repeater operation).
All is in the title.
Published by f4exb almost 8 years ago
Fixed wrong charcters in slow data text. D-Star slow data is not very well protected against errors and quite often non printable ASCII characters (that is < 0x20) pass through. Now these characters are filtered and replaced by dots.
In addition whenever a header frame is processed the slow data is reset. This avoids the data from the previous station to be still displayed.
Published by f4exb almost 8 years ago
Removed:
Following refactoring done in v1.4.0 these headers were only removed from the CMakeLists.txt file and this caused problems reported in P.R. #1.
Published by f4exb about 8 years ago
Use a new option -T which is a bitmap of the slots processed i.e:
These are the options related to datascope and QPSK advanced options.
Published by f4exb about 8 years ago
this fix sets the slot1 voice indicator whenever a voice frame is processed like in the other modes
Published by f4exb about 8 years ago
DSDcc now supports Yaesu System Fusion abbreviated YSF. YSF is developed and promoted by Yaesu for Amateur Radio customers. The voice full rate mode with SerialDV is not supported (garbled).
DSDcc is now able do decode D-Star slow data. In consequence:
Published by f4exb about 8 years ago
Complete redesign from original code. This should give much better results in addition the source and target addresses are retrieved
Improvement is not so dramatic as with the DMR code. This is more a technical redesign to benefit from symbol buffers and simplify the code.
Published by f4exb about 8 years ago
This is a complete rewrite of the FSK demod present in the DSDSymbol class. The original algorithm was giving a lot of errors because symbol synchronization and min/max estimation were not implemented correctly. This results in a much improved and robust decoding process removing many clicks and noises that were polluting voice output and less corruption in decoded data.
The min/max estimation runs permanently with an optimized running min/max calculator over 24 symbols.
The symbol synchronization is obtained by squaring the discriminator input signal and passing it through a narrow second order pass band filter. The zero crossings with enough quality (slope) are used to maintain symbol framing.
The sync words of each protocol (DMR, D-Star, dPMR, ...) are searched after processes above have taken place and this does not interfere with them. When looking for a protocol sync word a 2-FSK is assumed. Except for the case of Yaesu System Fusion (YSF) the synchronization words only use the extreme symbols (mapped to -3/+3 deviation). In the case of YSF the low deviation symbols (-1/+1) are mapped to their high deviation counterparts.
Published by f4exb about 8 years ago
Although it has many bugs it should be able to detect most of the time if a signal is dPMR or NXDN in 2400 baud mode.
Published by f4exb over 8 years ago
Added a standalone uspsampler by 6 or 7 to convert short samples to 48k. This is a helper class for upsampling audio frames returned by a serial DV device.
The rate should be changed only on positive sync determination. This avoids useless rate resetting with the serial DV device.
Published by f4exb over 8 years ago
DSDcc can now be used to extract the AMBE frames to be processed externally thus making it possible to compile without mbelib
support and therefore the already mentioned possible copyright issues. However mbelib
support is still an option but in addition to have mbelib
installed in your system you have to specify -DUSE_MBELIB
on the cmake command line to activate the mbelib
support during compilation The actual compile directive used is DSD_USE_MBELIB
.
When mbelib
is not activated the executable dsdccx
expects to decode the AMBE frame using a serial device supporting the serial packet protocol of a DVSI AMBE3000 chip. That is a device that exposes the serial packet interface of the AMBE3000 chip. This is for example a ThumbDV USB dongle. To support the serial communication with the AMBE3000 chip through any hardware you see fit you will have to compile and install SerialDV which is found in this very Github repository.
Published by f4exb over 8 years ago
This is a first release covering D-Star and DMR support.