Hi all
I released QMX/QMX+ firmware version 1_00_022; you can download it and its manual here
Main news:
More CW filters at 300Hz, 500Hz and choice of center frequencies
I added a new "CW Filters" sub-menu under the "Audio" menu, with more choices of filters, which?I happened to have on hand. This does not go as far as the target end-state of user-definable filtering or much narrower filters etc., but it does provide a choice of 300Hz or 500Hz bandwidth and center frequencies from 500 to 850Hz for the people who desire a lower sidetone and CW Offset than the current 700Hz. Main priority at the moment is the SSB implementation, but as I had to do a firmware release anyway, and I had these filters already on hand back from experiments in the QSX early days, I decided just to implement them in QMX as it was not a terribly large job, and some people may end up happier because of it.?
So the list of filters are now:
+ None: Just uses the Digimode filter 150-3200Hz but in CW mode
+?300Hz bandwidth filters with a choice of center frequency 500, 550, 600, 650, 700, 750, 800 or 850 Hz
+?500Hz bandwidth filters with a choice of center frequency 550, 650, 750, 850 Hz.?
There's also a new ON/OFF setting in the CW Filters sub-menu called "Auto-offset/tone" and if you set that to YES then every time you change the CW Filter selection, the CW Offset and Sidetone Frequency will automatically be changed to the center frequency of the chosen CW Filter. When you change the CW Filter selection in the menu, the system will immediately configure the new filter parameters so you can hear what it sounds like and decide if you like it or not. Tapping the key will show you how the sidetone sounds. The CW Offset and Sidetone frequency are shown in the new CW Filters menu too (and also still exist in the Keyer menu), and the CW Offset range is now 400-999 Hz.?
Note that if you are upgrading from a recent firmware version (meaning no automatic factory reset will be performed) then the CW Filter will be "None" and the "Auto-offset/tone" setting will be "NO". So if you are a CW Op you will want to go in and change those.?
The Goertzel bucket for CW tone detection (for the CW decoder and S-meter) also works. This was a somewhat tricky part of the work which took me a few hours last night. The original Goertzel algorithm in QMX is exactly the same as in QCX, it runs at 12,000 samples per second (well technically QCX runs at 12,019), and has a 250 Hz bandwidth centered on 750 Hz. A Goertzel filter is a speedily calculated single bucket of a Fast Fourier Transform. The problem with it is, that the bin must be an integral multiple of the fundamental frequency in other words, the filter bandwidth. So you can have a 250Hz filter centered on 250Hz, 500Hz, 750Hz, 1000Hz etc., but not on any other frequencies. Which doesn't work for the new case where we have a choice of?filters every 50Hz.?
Luckily I found a 2012 EURASIP Journal on Advances in Signal Processing paper called "Goertzel algorithm generalized to non-integer multiples of fundamental frequency" by?Petr Sysel & Pavel Rajmic, see which allows the FFT bin to be centered on any frequency. Hard-core readers may find the paper interesting. I managed to code an implementation of it, it's only slightly slower to calculate than the original Goertzel, though it involves a bit of mind-bending complex math. By some miracle my implementation actually works.?
For testing I used a QCX on 7020 weakly coupled (just stray coupled), picking up the tone on QMX in wide open Digi mode and selecting various filter centers; I dumped the generalized Goertzel bucket amplitude to "The Lab" - see attached - which is in this example the "125" right under the "G0UPL". Then I could tune through this QCX-generated birdie and record the frequency offset and magnitude, enter them in a spreadsheet and plot them. Result is attached. I did it for 500Hz center (red line), 700Hz center (blue line) and 850Hz center (yellow line). The result is noisy (this was only a rough experimental setup) but the expected peaks are seen at the correct audio frequencies and with the expected sidelobes somewhat visible. Height differences of the peaks are of no consequence. Still frankly amazed it worked so nice and easy ;-)
QSK delay setting options
Now it is implemented as discussed in another thread. A new menu parameter "Custom Semi QSK" in the Keyer menu, and choices of Semi-QSK are now:
- OFF: which means full break-in / QSK
- Auto: the existing meaning, the delay is 8 dits length, as used also on QCX
- Contest: a delay of 6.1 dits to match the N1MM contest mode which has 6 dit length inter-word
- Custom dits: Delay is specified by the next parameter which is called "Custom Semi QSK", in dits
- Custom decidits: Delay is specified by the "Custom Semi QSK" interpreted in 1/10ths of a dit
- Custom ms: Delay is specified by the "Custom Semi QSK" parameter interpreted in milliseconds.?
The delay is also constrained in the range 1-999 milliseconds, on top of whatever is specified above; so the worst you can get stuck for is just under 1 second.
New parameter "RX outside limits"
This parameter is in the System Config screen and works in collaboration with the Band Limits setting. If Band Limits is set, and if you have "RX outside band" set to OFF, then you are limited to tuning even for Receive, inside the ham bands. The point of this was to properly manage the 60m channelization (ARRL request). It makes 60m operation a lot easier if you have "RX outside limits" set to OFF because now it turning the Tune knob will just let you select the correct channel frequencies for 60m.?
However, that the 60m band channelization is as per US allocations; though the "Band Limits" setting is "ITU Region 2" there are in fact variations within region. As 11m is not an allocated amateur radio band in US, as you click through the bands, the QMX VFO will skip past 11m.?
Note also that the default condition of these parameters will be Band Limits = ITU Region 2, and RX outside band set to OFF. Many users in other regions may wish to switch off the band limits. If Band Limits is "None" then the "RX outside band" setting has no function.?
For Japanese users who set Band Limits = "Japan", you may find it convenient because the Japanese 160m and 80m allocations have gaps in, rather than the contiguous band allocation found elsewhere. When you have "RX outside band" set to "OFF" you will find that as you tune up 80m for example, the VFO will just jump over the gaps.?
Various bug fixes
I fixed various little things which had been either pointed out after the last version release last week, or a few things I noticed while testing the other changes in this release.?
Full change list:
1.? Bug fix: CAT KY when keyer speed is zero sends very fast; now just returns ? and does nothing
2.? Bug fix: CAT KY when transmit disabled for any reason incl practice mode, got stuck
3.? Bug fix: Playing a message memory when speed is zero sent very fast, now ignores
4.? Semi QSK settings: OFF, Auto, Contest, Custom dits, Custom decidits, Custom ms and new Custom value parameter
5.? Bug fix: LPF and SWR sweep didn't work for QMX+ 160m and 11m when band limits are enabled
6.? New sys config setting "RX outside band" (default OFF); when off, restricts rx to in-band
7.? CW Offset range now 400-999
8.? Added new filter sub-menu, with CW filter option and "Auto-offset/tone"; 300 ?+ 500 Hz filters at various centers
9.? Bug fix: now lock buttons/knobs to prevent corruption while running terminal apps RF Sweep etc
10. Bug fix: Prevent LCD frequency changes while terminal apps like RF Sweep are active
Any comments or observations, please let me know!
73 Hans G0UPL