As a programmer writing obscure little FLOSS projects for fun, having someone actually read and fix my code is a compliment. Recently I got a pull request on slowrx, my somewhat stalled slow-scan television demodulator project, and was inspired to write more.
The project started in 2007 when I was trying to find a SSTV receiver for Linux that could run in "webcam mode" and just save everything it receives. It would use modern stuff like ALSA instead of OSS and Gtk+2/3 instead of 1. Preferably it would work even if the receiver wasn't exactly tuned at the zero-beat frequency. Turned out existing software couldn't do this, so I accepted the challenge.
So here's how slowrx looks today:
FM demodulation is done by a 1024-point Fast Fourier Transform and Gaussian spectrum interpolation. The windowing function adapts to SNR, so the resolution drops under noisy conditions but we get a clearer image (or the user may opt to use a narrow window regardless of noise). Sound card clock mismatch is calculated using a linear Hough transform on the sync channel and fixed by re-running the demodulation at the adjusted rate. The program will detect VIS headers at any in-band frequency and shifts the reception window accordingly. It can decode the FSK callsign after the picture. The program stays up for hours without a segfault. Yeah – it's written in C99!
Pictures I've received using slowrx:
I've noticed the 8- and 12-second black-and-white Robot modes are still in use today. I believe they were the "original" SSTV modes that used to be viewed on a green phosphor screen in a much more analogue environment. So I've been thinking about an optional phosphor filter for B/W modes:
Does this work on FreeBSD or are we stuck with Linux?
ReplyDeleteI suppose it would work on other *nixes, too, with only small modifications. Haven't tested! Perhaps someone will? :)
DeleteNow, the biggest obstacle of course is ALSA, and I need to get more familiar with the FreeBSD sound system first.
DeleteHi, Oona:
ReplyDeleteThank you for the contribution to the community.
I was searching for RDS stuff and found redsea is very useful. Later, I encountered your slowrx.
I tried to build slowrx on my Debian Jessie box, but have the following error:
gcc -Wall -Wextra -std=gnu99 -pedantic -g -DGDK_VERSION_MIN_REQUIRED=GDK_VERSION_3_4 `pkg-config --cflags gtk+-3.0` -O3 -c -o common.o common.c
Package gtk+-3.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-3.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-3.0' found
common.c:7:21: fatal error: gtk/gtk.h: No such file or directory
#include
^
compilation terminated.
Makefile:17: recipe for target 'common.o' failed
make: *** [common.o] Error 1
which package should I install to have this gkt.h?
best regards,
wxie
libgtk-3-dev
DeleteThe problem is solved.
ReplyDeleteaptitude install libgtk-3-dev
Thanks
what is the capture device? Sound card or external device?
ReplyDeleteSound card line in.
DeleteThanks, there must be some special antenna, right?
DeleteA shortwave receiver and antenna is required.
DeleteWhat receiver do you use for this?
DeleteDX 398 equivalent
DeleteThank you.
DeleteIf I understand you right: A receiver is a normal shortwave radio, and its output sound signal (e.g. earphone) is feed into the computer sound card as input sound signal (e.g. microphone). slowrx will process the input sound signal as SSTV signal.
Yes, further info in the readme.
Delete