Afreet Software, Inc.
     Software created by Alex Shovkoplyas, VE3NEA

Morse Expert
for Android

Ham Cockpit

CW Skimmer

DX Atlas

RTTY Skimmer Server



CW Skimmer Server

Pileup Runner

DX Bulletin Reader

Voice Shaper

Band Master


Morse Runner



Morse Midi


Tech stuff



QRQ Profiler


SSTV Tools



RTTY decoder for Windows XP/7/8/10, 32/64-bit


GRITTY is an RTTY decoding program based on the technology developed for the RTTY Skimmer Server project. This is not a skimmer, it decodes a single signal in the 3-kHz audio coming from the transceiver via a soundcard, just like any other RTTY program.

Fig.1. GRITTY is decoding weak signals. Unreliable characters in the text are printed using light colors, many of them are errors, but the program still determines the correct callsign and shows it on the callsign stack.

How It Works

The decoding algorithm in GRITTY is based on the methods of Bayesian statistics. This results in a better decoding accuracy than other algorithms, created by the trial and error method, typically achieve. In the Bayesian framework, all information is represented in the form of probabilities. In particular, the Bayesian decoder computes not only the 5-bit Baudot codes, but also the probability of error in each of the bits.

One obvious use of these extra data is to compute the error probability for each character in the text, and color-highlight the unreliable characters. Another use is smart squelching. In GRITTY, the squelch function is based not on the signal amplitude but on the error probability. This works better than the traditional squelch since it allows decoding of very weak signals but suppresses strong signals when interference makes accurate decoding impossible. The net result is very little garbage in the output.

The bit error probabilities are also used in other, more interesting ways. GRITTY not simply prints what was decoded, but performs some intelligent analysis of the decoded text. When similar callsigns appear in the message, an experienced operator can often tell which call is correct and which one is corrupted. GRITTY can do the same, but more accurately than a human, because it can compare the calls bit by bit and merge the probabilities using the Bayes formula. Quite often the program is able to determine the correct callsign and put it on the call stack even if all received copies of the call are corrupt.

A similar approach is used to find and correct the errors in other parts of the text, such as exchange numbers and CQ/DE keywords, to fix incorrect shift state, etc.

Several audio recordings that illustrate the unique features of GRITTY are available on the GRITTY Demo page.

Integration with other programs

GRITTY has an open API interface, documented in its Help file, that allows other programs to receive decoded data and other information, such as mouse click events. Here is a demo program, with source code, that shows how to receive decoded text from GRITTY, update previously received characters when smart decoding makes corrections, and color-highlight unreliable characters.

For comparison, the demo also receives decoded text from either MMTTY or 2Tone.

Download the demo here:

Copyright © 1998-2020 Afreet Software, Inc.




Author's e-mail