Joataman Webpages

A Collection of Interests, Activities and Projects

Incremental Frequency Keying

Background to the IFK technique that I invented that has been incorporated by other parties in software programs such as Jason, DominoEX and THOR.

Practical Implementations

It is pleasing to see that the IFK technique has been validated by practical implementations in software written by other parties.

I guess it is my small "claim to fame" for all the hours experimenting with unusual ideas,,,

Here is a screenshot from Alberto's JASON web page.

It shows reception of an LF transmission by ZL1BPU using his DDS software implementing the JASON IFK algorithm and received on Alberto's JASON software.

General Philosophy of IFK

The IFK mode idea came to me after the AFK (Absolute Frequency Keying) and FDK (Frequency Difference Keying) mode ideas.

Early experiments were conducted at LF frequencies, and it became apparent that it would be difficult to achieve the frequency accuracy/ stability even at those frequencies sufficiently for the AFK mode where each character was encoded as an absolute frequency. The problem with AFK is that it requires accuracies better than 100ppm.

The IFK and FDK modes were an attempt to overcome at least the frequency accuracy hurdle. While most soundcards should meet this requirement, this cannot be guaranteed. At a penalty of 3dB, FDK was an attempt to eliminate the frequency accuracy problem by providing two tones - where characters were encoded as the difference between two simultaneous tones, leaving only the stability problem.

IFK eliminates the 3dB penalty of FDK while eliminating the accuracy problem from AFK by encoding each character as a sequential increment in frequency in successive tones.

The implementation by others of IFK-based modes, while utilising the basic concept of IFK, have employed different parameters to those described here below.

IFK Transmission Mode (in my original experimental software)

When transmitting a character, the tone frequency increment is assigned to that character is calculated (say 5Hz for the space character ' '). The incremental frequency for the current character is added/subtracted from the last tone sent (or the space tone if it is the first character in a transmission) and that frequency is sent. Whether the incremental frequency is added or subtracted depends on the position of the last tone sent with respect to the centre frequency.

The transmitting software always chooses between addition or subtraction on the basis of moving the tones back towards the centre frequency. Each burst of the tone in my experimental software lasts for 60secs and is synchronised with the transmitting PC clock time. The 'channel spacing' for each characters incremental frequency has been initially set to 0.1Hz. A beacon mode is provided for repeating a set message if necessary.

IFK Reception Mode (in my original experimental software)

The receiver synchronises to the receiving PC clock time and acquires data for 47.6 seconds giving a record length of 524288 samples. This is because FFT raw data should have a length which is a power of 2. The nearest block time to one minute using 11025Hz sampling is (524288 / 11025)= 47.6 seconds. The audio data is fed to the FFT algorithm. The output spectrum is scanned for the maximum amplitude frequency and the character corresponding to the increment between the previous tone frequency and the current frequency is displayed.

This method requires short-term drift to be less than 0.017Hz over one minute to maintain the S/N advantage or about 0.1Hz over one minute to minimise decoding errors. At a frequency of, say, 800Hz, this translates to a stability of about 20ppm and 125ppm respectively. This should be easily done by a soundcard in a PC.


My experimental software was only used for my own investigations. Others have taken up the IFK technique and incorporated it into a number of implementations with various enhancements as detailed at the top of this page.