Description of Modifications
These modifications to the program gmfsk-0.71pre1 provide enhancements to the user interface and transceiver control.
The revisions are designated by the trailing version specifier "hkj-xx" where xx is the revision number.
The interface and callback source files have been edited separately
from the gtk interface design tool, "glade-2". It is profitable
to review the interface design with glade-2, but DO NOT overwrite the
source code files by executing the "build" option in glade-2. At
some point in the future I will revise the glade-2 source, but until
that time you will break the mods by doing a build.
Other than the above paragraph the configuration, compilation and installation are the same as for gmfsk.
After running the ./configure file be sure that you have the hamlib
directives properly set. Then edit the source header file
src/hkj-config.h You set up which modifications to the
original source you want to include by setting the define statements in
the header file.
hkj CAT mod
#define WANT_TENTEC_MOD 1
If set to 1 this will compile the required interface code in gmfsk
which allows it to share memory with one of several programs written by
W1HKJ which allow direct control of transceiver functions. These
programs include DeltaII, ArgoV, and Icom728 (even though is says TENTEC mod).
gmfsk-0.71-hkjXX remains fully compatible with hamlib. If you use
the hamlib interface to your transceiver be sure to set this flag to
ZERO!
color waterfall mod
#define WANT_WATERFALL_MOD 1
If set to 1 this will compile the required code to allow you to switch
between color and gray scale waterfall displays. This
modification also adds some additional menu items to the popup menu
(right click on the waterfall). You can select color / gray
scale; x1, x2 and x4 from the popup menu.
snr/imd mod
#define WANT_SNRIMD 1
If set to 1 this will compile the required code to display both signal
to noise ratio (snr) and inter modulation distortion (imd) on the
primary status bar at the bottom of the display. This functions
in both psk31 and psk63. The imd calculation is fairly accurate
even when data is being transmitted. You should expect to see
little change between data and idle on the received signal. This
is accomplished by computing the average power in the psk baseband and
comparing it to the power found at the 3rd order band. The snr is
found by comparing the baseband power to the power at the 4th order
band (should be zero or just noise for even a horrible psk signal).
functional backspace key mod
#define WANT_BACKSPACE_MOD 1
The original gmfsk program failed to handle the backspace key fully
when in a transmit mode. You could backspace over characters
still in the transmit buffer, but could not backspace over characters
already transmitted. This seemed inconsistent with the way most
other psk digital modem programs function. This modification
corrects that and allows you to backspace up the full extent of the
current transmitted character series. The corrections will appear
in both the transmit buffer window and in the transmitted buffer
reflection in the receive window. This is functional in all modes
except CW and HELL. Backspace makes no sense in those modes.
For CW and HELL the backspace key can only be applied to
characters in the transmit buffer which have not yet been transmitted.
1 Hz resolution
#define WANT_1HZFREQ_BUTTON 1
Setting this flag to 1 will change the frequency spin button entry from
0000.n to 0000. I found myself spinning past my desired point
with the 1/10 Hz capability. Most transceivers will not support
that kind of accuracy or stability so the 0.1 Hz was an overkill (at
least for my ops). This mod gives me more discrete control over
the audio frequency.
disable direct spin frequency entry
#define WANT_SPINFREQ_ENTRY 0
This mod is related to the 1 Hz resolution. Set this to ZERO (0)
to disable direct entry. Set it to ONE (1) to retain the original
gmfsk performance. This change resulted from some frustration on
my part on how the original user interface performed. If you
changed the spin button frequency then that control took "focus" for
all mouse events. That meant that any subsequent left mouse click
on the waterfall would have no effect on changing the frequency entry.
At least not until the spin control lost focus. That meant
that you needed to mouse click on another control (such as the call sign
entry) before the waterfall mouse click was again functioning).
If you twiddled the spin frequency control, then clicked on the
waterfall you saw no change in the spin frequency control. If you
then immediately clicked in a different control (or button) the
waterfall click would be instantiated and you would see the spin
control change. Very disconcerting!
So this mod disables the direct entry in the frequency spin button
control. Using the mouse left click and the up/down buttons on
the spin control allow you to move very quickly over the audio
passband. This is particularly true when the 1Hz resolution mod
is also enabled.
new user interface for waterfall mode, zoom, gain & reference levels
#define WANT_NEW_UI 1
This modification adds some real operating convenience to gmfsk.
I found myself continually going through the menu system to get
to where I could change the mode and zoom for the waterfall. I also frequently
change the waterfall reference level and signal gain. If you
change bands or even during changes in band QRN the waterfall display
might need to be tuned up for the best visual display. This is
more noticeable in the color mode than in the original gray scale
display.
Four new controls are added to the gmfsk primary display with no loss of original functionality. These are shown here:

The "Wf" box on the status bar is a toggle. Left-click with the
mouse to change to the spectrum - and again to the time domain -
and again to go back to the waterfall mode. The "x1" box on the
status bar is also a toggle. In a similar manner you move between
x1, x2 and x4 and back again to x1. Very convenient! The
Two new controls above the frequency spin button are new spin buttons
for the Reference level and the Amplitude Gain for the waterfall
display. Bring up the spectrum display and you will see how
effective these two controls are in helping you to find and evaluate
received signals. By the way, the signal under the railroad
tracks is VE3IXI, running gmfsk-0.71-hkj-42. His SNR was 30 dB
and his IMD was -27 dB. Very respectable signal Dave.
frequency lock mod
#define WANT_FREQLOCK 1
The control associated with this modification is also shown on the
image. The space formally occupied with the label "Freq" is now a
button control that is a toggle button. This button is enabled in
those digital modes for which "locking" the transmit signal frequency
makes sense. When you select a new operating mode (ie: go from CW
to PSK31 for example) the default position for the new control is SYNC
- meaning that the transmit and receive frequency are SYNCronized to
each other. If the AFC is enabled and the receive frequency
changes then your transmit frequency will follow the received signal in
frequency. Most of the time this is satisfactory. But if
either you or the other station has an offset between transmit and
receive (usually in the transceiver) then you will find yourself moving
up or down the band by that offset amount for each qso exchange.
Click the SYNC button and it changes to "L:NNNN" where NNNN is
the spin button frequency the moment the button was clicked. Now
your transmit frequency is "LOCKED" in place. The receive
frequency can continue to track via the AFC (or not if AFC is
disabled). This mode was tested between VE3IXI and W1HKJ by
operating both sites with this mod in place and forcing the two
transmit signals to be 250 Hz apart by using the LOCK function at both
stations. True split frequency operation on PSK31 ! If you
are operating a round table this new functionality will be most
welcome. Use it also when calling CQ. Set the waterfall to
the desired frequency and then tweak it to the desired position using
the frequency spin button. Then select the LOCKed mode.
You're signal is rock stable and you can track any received
signals with the AFC. This works absolutely flawlessly.
ptt mod
#define WANT_PTT_MOD 1
Lots of different computer to rig interfaces have been published.
A very popular interface was designed by G3VGR.
It uses few
parts, can fit into the shell of a DB-9 connector and requires no
external power supply. It steals power from the DTR signal line
to achieve this minimization. gmfsk was not compatible with this
interface. This modification allows the DTR to be held high to
power the interface and maintains compatability with both hamlib and
W1HKJ CAT programs.
ctl code suppression
#define WANT_CTL_SUPPRESSION 1
The newest version of MultiPsk (and possibly other digital modem
programs) transmit control codes during the idle period for certain
digital modes. This mod will suppress those codes from being
printed to the screen. Failure to suppress such codes results in
an unreadable reception from the transmitting station.
2 tone Olivia
#define WANT_2TONE_OLIVIA 1
Adds the capability to send and receive in 2-tone Olivia.
TTY mode
#define WANT_TTY_MOD 1
Creates a TTY machine friendlier app. Sends the CR-CR-LF triplet for "\n", and the CR-CR pair for "\r" characters.
This allows a physical TTY time to return the carriage to the left margin and not loose any characters on the next line.
This mod also inserts a CR-CR-LF triplet into the data stream when the either:
the line length exceeds 72 characters, or
the line length exceeds 66 characters and a space is sent.
Kachina mod
Integration code to allow gmfsk to control the Kachina CAT program for
PTT and signal centering as well as receive mode and frequency
information from the Kachina CAT program. Integration is achieved
through the use of shared memory between the two applications.
Either can run independently, but when both are running they
cooperate and pass information back and forth.
Full Reverse on all modes
#define WANT_FULL_REVERSE 1
Allows you to use an alternate sideband & then set
"reverse" for modes such as Olivia that had "rev" disabled in the
original gmfsk code. Or to change the "reverse"
setting when switching between modes.
Logging frequency precision
#define TEN_TEC_LOG_PREC 4
Sets the the # of decimal places you want your log to record
frequency, ie: 0 = nearest Mhz, 3 = nearest Khz, 6 = nearest cycle.
This mod only effects the interface to the CAT programs, ARGOV, DELTAII, ICOM728 and KACHINA.