Spectrum Analyzer with Waterfall Display and real-time audio processing
This program started as a simple FFT program running under DOS a long time
ago, but it is now a specialized audio analyzer, filter, frequency converter,
hum filter, data logger etc (see history). You can download it from this site.
Or look into the manual (in HTML format), even though the manual
included in the archive will be more up-to-date. Furthermore, the same manual has occasionally
been converted into a single PDF (SpecLab_Manual.pdf), but any attempt
to create a common index and table of contents for this PDF, using OpenOffice (with proper page numbers instead of the hyperlinks)
has failed miserably - see note in the preface of the PDF document.
If you are looking for a short description in German language, look here.
The revision history is here.
How to use SpecLab with SDR-IQ is described here;
how to use SpecLab with PERSEUS (without an annoying virtual audio cable)
and how to use SpecLab with software-defined radios supporting ExtIO (instead of a soundcard),
like FiFi-SDR, RTL-SDR, FunCube, SDRplay RSP, etc etc, is described here.
If you need help getting the program running, or have questions about a
particular function, look into the
Spectrum Lab User's
forum at groups.io (not at Yahoo anymore)..
(SpecLab screenshot in "Colour Direction Finder" mode, VLF spectrum,
Spectrum Lab runs under Windows 98, 2000, ME, XP (home and professional),
Linux/WINE, but obviously not under Windows Vista. The reason why it doesn't
work under "Vista" is unknown. Since I don't use Vista myself, there's little
I can do about this. Use Linux/WINE, or a virtual PC running XP (inside your
shiny power-hogging Vista machine).
Input can be taken from the soundcard, but the "audio
utility" interface makes it possible to create an interface to any A/D
converter you like (for example a PIC with serial interface). A plugin for
Winamp allows to analyse audio streams from the internet (see
Besides the soundcard and the interfaces supported by the "audio utilities",
SpecLab directly supports SDR-IQ and SDR-14 (by RFSpace, Inc), and PERSEUS
(by Microtelecom s.r.l.).
Demodulated output is usually sent to the soundcard, but can be sent anywhere
else (including an MP3- or OggVorbis encoded stream using Winamp/Oddcast
and a special Audio-I/O DLL, which acts
as an input plugin for Winamp).
Selectable and adjustable waterfall color palette allows you to change
the contrast of the waterfall display during and after receiving spectrum
lines ("contrast" & "brightness" - sliders)
Frequency range can be adjusted while running, the old part of the waterfall
display will automatically be re-drawn without stopping the audio processing.
Special waterfall mode for "Radio Direction Finder" with colour-coded azimuth
display, based on DF6NM's Wideband Direction Finder with Colour Encoded
Spectrogram Display. Now with up to three "notches" (adjustable nulls
in the synthesized antenna pattern) to suppress noise from certain directions.
Special "multi-strip" waterfall mode for long term observation of relatively
Reassigned spectrogram for higher
time- and frequency resolution, if certain conditions are fulfilled (since
Support for image-cancelling direct conversion receivers ( quadrature input
via stereo soundcard )
Very sharp, FFT-based audio filters which can also be used to shift and invert
frequencies, with auto notch, denoiser, etc.
New (2007-02): Write your own
plugin for the FFT filter !
Waterfall display may run from top to bottom, or from right to left (good
for HELL modes)
Calculation of peak levels, peak frequencies, noise levels, effective values,
File logging and file analysis with WAVE files ( now with 'Triggered Audio
Recorder' + pre-trigger option )
Periodic or scheduled actions, for example to capture the screen as BMP or
Audio sample rates from 8000 to 192000 samples per second.
192 kS/second only tested with a few cards, using ASIO drivers and / or standard
multimedia driver. With extra hardware (like software-defined receivers with
high-speed USB interfaces), even higher sampling rates (and thus bandwidths)
16-bit ADC resolution giving about 90dB of input range (plus additional FFT
24-bit resolution possible with certain cards (tested with Audigy 2 ZS; 2004-05)
Frequency resolution in the sub-milliHertz range (exceeding the stability
of the soundcard's clock generator).
FFT output is buffered in an array with adjustable size for long-term
observations (with "scroll-back-in-time" while analysis continues). Furthermore,
the FFT output can be recorded (exported) in various formats.
Signal generators with selectable waveform, frequency, and optional modulation,
plus noise generator
Hum filter to remove 50 Hz (or 60 Hz) plus harmonics, based on Paul Nicholson's
algorithm for a multi-stage comb filter with automatic tracking. If you are
interested in improving your Natural Radio reception, read Paul's
Notes on Domestic VLF Reception.
Frequency converter to shift low "IF"-frequencies (e.g. 17.2 kHz) to audible
tones (650 Hz, etc) in real-time. Can be used in a
'soft-VLF-RX'. Other demodulators in DSP-blackbox.
Decoder for some time-code transmitters: MSF(60kHz), HBG(75kHz), DCF77 (77.5kHz)
can now be used to set your PC clock to a high accuracy. All you need is
your longwave receiver and the soundcard.
Modulator and decoder for some 'experimental' digital communication modes
like PSK31, BPSK, QPSK, FSK, multi-tone
HELL, MSK (minimum shift keying since 2004-12), transmission and reception
of letters with a small 'terminal' window.
A DLL interface is available to use Spectrum
Lab for new digital transmission modes (but not in use yet).
Fast waterfall with up to 200 waterfall lines per second, making it possible
to decode even fast Morse code by eye (though it wasn't intended for that,
it's fun to watch)
versatile export function (text-file based, for post-processing with Excel
etc.). Brian, CT1DRP has
used the export functions to create spectrograms and signal graphs of
the 136kHz band.
Built-in HTTP server so you can write a (simple) user interface for SpecLab
in HTML (intended to be used in a LAN, not as a fully-fledged web server).
Communication with other applications through a simple
message-based system, which is also
used by SpecLab to communicate with the
RDF calculator (range-and-bearing
calculator + map plotter, link may work on the main site only).
(screenshot of "Components" window from an older version)
Features which this analyzer does not have (but others do...):
Due to its 'Laboratory' nature, this analyzer is not as easy to use as ARGO
(by I2PHD and IK2CZL, available on Alberto's homepage:
AMSAT-DL's Earth-Venus-Earth experiment on 2.4 GHz at the Bochum radio telescope
In March 2009, a group of radio amateurs successfully bounced a radio signal
off Venus, over a distance of (2*) 45 million kilometers. A short description
of the reception technique (software) can be found
here; more details are on the
AMSAT-DL website, and in the AMSAT
journal soon. Thanks to DD5ER, DJ1CR, DJ4ZC, DH2VA, DK8CI, DL1YDD, G3RUH,
ON6UG, and everyone else who contributed, for being part of the team.
The configuration used for the (2.4 GHz) EVE test is part of the installation
package now (EVE-SDR-IQ-5kHz_2G4.usr); we used the SDR-IQ for this. If you
want to try something similar and have a PERSEUS receiver, use
How to use Spectrum Lab to produce field strength plots of DI2AG, an experimental
medium wave beacon on 440 kHz in southern Germany. It realizes some ideas
we spoke about at the Ham Radio fair in Friedrichshafen (June 2005). More
info in this document (up to now, in german language only) :
Beschreibung des Einsatzes von Spectrum
Lab als Bakenlogger für DI2AG. Update 2007: DI2AG has moved to 505
kHz now (which is a new amateur radio band in many countries - with the exception
There is a special narrow-band transmission mode in Spectrum Lab's "digimode
terminal" called Chirped Hell, based on an idea by Markus, DF6NM. We used
it on the amateur longwave band (136 kHz) to make some narrow band transmission.
A special property of Markus' Chirped Hell principle is the relatively low
crest factor, so it can be used to transmit characters (and even small images)
quite effectively, but (unlike sequential multi-tone hell) you need a linear
transmitter. An image received on a waterfall in "QRSS 3" mode may look like
LowFER Receiver Using a "Software" IF
This article by Lyle
Koehler, KØLR, describes a simple "software defined" receiver
and some other (easier-to-use) alternatives to SpecLab too. Don't miss Lyle's
downconversion circuits which he sucessfully uses to the receive US-American
LowFER beacons. The last part describes how to log fieldstrengths of LowFER
beacons with Spectrum Lab's plot window.
G7IZU Radio Reflection Detection Page
This nice website by Andy G7IZU
monitors Meteor Shower, Aurora Sporadic-E and Solar Flares in real time,
mostly using reflections of radio signals in the 50 MHz region.
VE2AZX precise frequency measurements
Jacques, VE2AZX, describes
here how Spectrum
Lab can be used for precise frequency measurements in the millihertz region.
Don't miss his detailed description - it's actually better than SpecLab's
built-in help system ;-)
If you have a suitable soundcard, you can use SpecLab to make ultrasonic
bat calls visible and audible in real-time. In the menu, select "Quick
Settings".."Natural Radio / Animal Voices" .. "Bat Converter". This configuration
requires a soundcard with true 96 kHz sampling rate, and a PC with at least
1.7 GHz. The software shows the call in a fast spectrogram (with high time
resolution, but little frequency resolution), and converts the ultrasound
down to audio, notches out constant-frequency "carriers" (like your CRT monitor's
line sync frequency, which is annoying if it's in the "bat band"), and finally
passes the downconverted and filtered signal through an automatic gain control
As a test, I used a cheap miniature electret microphone to make
this recording of bat sounds
(96 kHz, 16 bit, mono .. right-click to save it). If you play it with a normal
audio player, you will hardly hear anything. But if you play it into SpecLab
(menu "File".."Audio Files".."Analyze and Play", with the "Bat Converter"
setting loaded, you will hear the bat calls. I don't know which species it
is yet, but they seem to be quite frequent in this part of Germany.
The FFT-based filter in Spectrum Lab is already very versatile, but it can
still be extended with a "filter plugin". These plugins come in the form
of a special windows DLL which can be loaded from the filter control panel.
Such plugins can be written with any C / C++ Compiler (recommended: Borland
C++Builder V4 or DevCpp V126.96.36.199; the latter is a free development system
based on the GNU / MinGW compiler). To develop your own plugin, download
Filter Plugin package - it contains all required information required
to write a filter plugin, and a sample plugin written in the "C" programming
language. NOTE: THE DLL INTERFACE IS STILL "SUBJECT TO CHANGE" !
To check if you have the latest version of Spectrum Lab, compare the text
in the main window's title bar with the revision number and compilation date
at the top of this document. For example, if you have "Spectrum Laboratory
V2.2 b1", it is way too old. If you have SL already installed, you can check
if it's up-to-date by selecting Help .. Check for Update
in the main menu. The primary download site for Spectrum Lab is here:
(V2.95 b3, compiled 2020-10-03 or later, with new output switches,
a bugfix in the noiseblanker, Ogg/Vorbis audio file reader and -writer,
wave files with 24-bit integer and 32-bit floating point samples,
GPS (NMEA) decoder also through the soundcard,
input resampler optionally using the GPS PPS output for synchronisation,
support for Winrad-compatible ExtIO-DLLs (also for FiFi-SDR), new controls for the filter passbands
on the main frequency scale... see revision history.
The latest additions were:
- OpenWebRX-alike server for remote live audio and waterfall in a web browser (details here)
- Extended CAT/CI-V protocol to display broadband spectra from an IC-7300, IC-7610, IC-7851, etc(?)
- Forwarding of CI-V messages from and to multiple clients (e.g. WSJT-X, RS-BA1) on extra serial ports
- Timestamped event queue for the Conditional Actions
- Non-differential encoding for experimental (B)PSK transmissions
- New sample formats received over the serial port (e.g. from the GPSDO currently under development)
- Modified the reader for non-compressed, timestamped web streams (and their logfiles; *.dat)
- Modified triggered audio recorder
- Modified COM port enumeration because a stupid Bluetooth driver blocked the application for many seconds
- Spectrum buffer can be retrieved as JSON object via SL's integrated web server
- Different buffer sizes for audio processing and soundcard I/O
- Modified Audio-I/O DLL interface (bugfix in the configuration dialog)
- Support for RTL-SDR (via ExtIO-DLL)
- Improved speed, at the expense of compatibility with ancient 80486
- EbNaut-recorder configuration files
- Compressed Ogg/Vorbis file selectable for recording audio (besides non-compressed Wave audio)
Installer-less ZIP: www.qsl.net/dl4yhf/speclab/SpectrumLab_without_Installer.zip.
(This is seriously 'under construction', and is really "only for beta testing" yet..):
Contains all the above, plus some new (unstable) features which are not required for 'normal' use:
Automatic closing of audio devices shortly before system suspend ("PC sleeping"), and
automatic re-opening after resume ("wakeup from sleep"),
and a tiny subset of the OpenWebRX server functionality
which can be used to put your IC-7300 or IC-9700 'online'.
If the beta-installer doesn't exist, there is no 'beta' at the moment, so
use the release version above.
Details about the new installer (with separate 'Program' and 'Data' folders)
are here. If the new installer doesn't
work on your system (especially Vista / Windows 7), please report your
observations on the
Spectrum Lab User's
group at groups.io - thanks in advance .
As an alternative, check the download section on
Ko Versteeg's website .
Don't trust any other download site - neither "softpedia", nor "freedownloadmanager",
nor anyone else because you never know what those sites did to/with the files.
Some of those sites claim they performed an extra 'virus check', but none
of those site's owners has ever asked me (the author of Spectrum Lab) for permission
to re-distribute or even re-package the installer, so 'by default'
I would not trust any of these sites.
The archive includes EXE-file, sample setting files, help system (in HTML
format) and a few other goodies, but not utilities below.
Some additional utilities which may be useful:
Winamp output plugin to send audio
data directly from Winamp to Spectrum Lab (not via soundcard)
FFT filter plugins allow you to insert
your own subroutines (compiled into a DLL) into the signal path, where signals
are processed in the frequency domain .
Soundcard utility sourcecodes
contains an example to send an audio stream to Spectrum Lab, using WM_COPYDATA
The zipped archive also contains the "C" headers with structure definitions for interaction
between SL and other applications (audiomsg.h) .
If you want to write your own program to control Spectrum Lab, read
this document which explains how
to communicate with it using simple WM_COPYDATA messages (the same data
structures are used to exchange audio via UDP or TCP, too).
You don't need this if you don't intend to use SL as 'Web Receiver' (server) !
Since 2020-06, the HTTP server integrated in Spectrum Lab can optionally
'host' a modified variant of HA7ILM's Open Web Receiver,
as described in the Spectrum Lab manual.
modules which are not required for normal use, these files are not
contained in the Spectrum Lab installer (downloadable from a link in the
previous chapter). Instead, if you want to use Spectrum Lab like an
OpenWebRX server, get those slightly modified files from here:
In addition to Spectrum Lab itself, the above files (based on the original
OpenWebRX 'htdocs' folder) are all you need to get this running.
Just unpack these files into a folder of your choice (e.g. "C:\OpenWebRx"),
and let Spectrum Lab's HTTP server know where those files are as
There are no dependencies to install, you neither need Python nor CSDR,
since the entire HTTP server is integrated as a C/C++ module in Spectrum Lab.
The demodulated audio and waterfall is simply taken from SL itself
(or from an IC-7300 / IC-9700's 'Spectrum Scope' display). Thus unlike
a multi-channel Kiwi SDR, all clients connected to our server
will actually see and hear the same, and only one of the users
can control the receiver - if you allow him to.
But it's good fun if, during a QSO, you can give the fellow ham
the URL (or IP address) of a website where he can listen
to his signal in your receiver, or see how crowded
the band is on your end (instead of using one of the
hundreds of WebSDRs and KiwiSDRs around the globe).
The original OpenWebRX itself was available (*) on Github, see
Also don't miss Andras' BSc thesis about OpenWebRX,
which (in 2019) could be downloaded from
- The Github repository has been archived by its owner (Andras, HA7ILM),
since the original OpenWebRX development has been discontinued
in 2019-12-29. There may be forks from the original project
still actively developed (the Kiwi Web SDR is also based on it),
can also be hosted by Spectrum Lab.
Since the original OpenWebRX was published by HA7ILM under
Affero GPL v3 license,
the modified files are distributed here under the same license.
Unlike the original OpenWebRX license, there is no commercial license
available for it (neither for the modified OpenWebRX files
nor for Spectrum Lab).
Back to the Software