DL4YHF's Amateur Radio Software:
Audio Spectrum Analyzer
("Spectrum Lab")

Last updated: January 2012.
Current version : Spectrum Lab V2.77
Under construction / "Beta": V2.77 b11

Main Site: www.qsl.net/dl4yhf/spectra1.html
Download/Backup:
dl4yhf.ssl7.com/spectra1.html

("freenet" site deleted since their hosting service isn't free anymore)

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 at the bottom of this page). You can download it from this site. Or look into the manual though the manual included in the archive will be more up-to-date. 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.  And how to use SpecLab with PERSEUS (without a virtual audio cable in between) is 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 Yahoo.

SpecLab screenshot

(SpecLab screenshot in "Colour Direction Finder" mode, VLF spectrum, colour~bearing)

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).

Features

SpecLab component window
(screenshot of "Components" window from an older version)



Features which this analyzer does not have (but others do...):


Some Applications

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 EVE-Perseus_2G4.usr instead.

Beacon Logger for DI2AG (July 2005)

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 of Germany..).

Hellschreiber Modes in Spectrum Lab (Nov. 2004)

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 this:

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 ;-)

Bat Converter

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 stage.

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.

FFT Filter Plugins

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 V4.9.9.2; the latter is a free development system based on the GNU / MinGW compiler). To develop your own plugin, download this FFT 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" !


Download Spectrum Lab..

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 (thanks to David Black for hosting it):

As an alternative, check the download section on Ko Versteeg's website .

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:

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).


Incomplete History

There's a lot of other very nice sound analyzers elsewhere, but once upon a time (when there weren't so many out there) I decided to convert my old FFT audio analyzer from DOS to Windows ... see oldest entry in the history below). Some info about the revision history can be found in the file REVISION.TXT after unzipping the downloaded archive.

2011..

October - November: V2.77:

Migration to a newer version of the development system (Borland C++ Builder), which introduced a few new interesting bugs (html-based help system didn't work anymore, position of some control elements on certain "forms" (windows) were destroyed for unknown reasons, etc. These bugs will now be sorted out, one by one, because there's "no way back" to the old compiler / development system.

April - May: V2.76:

Some minor improvements for 'very slow' spectrograms (with a very large frequency resolutions, in the uHz range).
Support for GPS receivers with sync pulse ("pps") output. NMEA data from a GPS receiver now decoded via soundcard.

2010..

October: V2.76 :

Modified some of the sampling-rate correction algorithms.. but some of them still consume too much CPU power to be useful at higher sampling rates (for SDRs like Perseus).
New 'ultra slow QRSS modes' with frequency resolutions in the uHz range, used by radio amateurs below 9 kHz (search the net for 'DK7FC VLF' for example). Caution, these modes only work with stabilitzed oscillators (either via hard- or software). Because a 'complete' FFT with 40 uHz bin width requires about 7 hours (!) of data, the data for the FFT can be padded with zeroes, to calculate spectra 'early' (long before the full frequency resolution is reached). Details here .

May : V2.75 b10 *BETA* :

Some new file formats are supported now (natively, i.e. without plugins), for example SETI's raw 8-bit I/Q files with 8.7 MSamples/second, and wave audio files with 24 bit/sample.
Optional file processing using multiple threads, which may be faster on dual or quad core CPUs (multiple FFT calculations may run in parallel, ideally each of them using its on 'core').

January - April :

Rearranged the main menu items to avoid scrolling on small screens ("netbook-friendly" menus). Modified the MSK demodulator/decoder. Added a DDE server and client (Dynamic Data Exchange). Increased the number of channels for the watch window/curve plotter to 100, and added the plotter's split screen option. First used to compare the GPS correction data from two different DGPS beacons; details in dgps_dec.htm .

Implemented a highly experimental, FFT-based chirp filter (as part of any DSP blackbox, see circuits.htm#chirp_filter). Rewrote parts of the time domain scope, which may render some of the rarely used older functions unusable .. but more flexible now (scolling, zooming) .

Added the option to correct the soundcard's sampling rate (i.e. compensate drift) using some MSK-modulated transmitters in the VLF range; works with soundcards with a max. sampling rate of 48 kSamples/second. But for long-term phase observations, and if your card supports 192 kSamples/second, stick to DCF 77 (77.5 kHz) or MSF (60 kHz), because most European "VLF Broadcasters" either don't transmit 24/7, or there are unpredictable steps in their carrier phases. Details in the help system (html/freqcalib.htm) .

Replaced the old 'phase monitors' in the time domain scope with a new set of interpreter functions ("pam" = phase- and amplitude monitors), which can be used in the watch/plot window. Details in html/phase_and_amplitude_monitor.htm . The MSK carrier phase detectors need some tweaking; the phase readings are too 'noisy' when the SNR is weak.

2009..

September:
Made a few cosmetic operations, fixed a problem which caused a "handle leak" (OpenInputDesktop-CloseDesktop), improved the 'Radio station display' in the spectrum window, and began to modify the FM demodulator to support I/Q input (not fully operational yet).

June:
Improved the reassigned spectrogram, modified the SDR-IQ interface (not complete yet), documented the new controls in the main window. Most analysis functions can now operate on radio frequencies (as function arguments), in addition to audio frequency ranges. Added an optional 'Radio Station Display' in the main spectrum. Details here .

January:
Added an experimental "correlogram" in V2.72 b8, which uses the FFTs from two channels of the spectrum analyser to calculate a cross correlation of all possible time lags (depending on the FFT size); correlation coefficients displayed as a graph and/or a waterfall-like display.

2008..

November:
Tried to use a winamp-2-compatible plugin to read MP3-files (and others) in SL V2.72 b07. For strange reason, this only works with files, but not with MP3-compressed audio streams. Details after installation in SL's winamp-subdirectory, file: readme.txt.

August:
SDR-IQ (and possibly SDR-14) can now be connected through TCP/IP for remote operation, besides the local USB port. Threw out the old FIR- and IIR-filters in favour of the FFT-based audio filter.

Added the "combined stereo spectrogram" option in the quick settings menu, under "Natural Radio / Animal voices".."AWI PALAOA" (PALAOA is an experiment from the Alfred-Wegener-Institute, sending a live audio stream from the ocean below the Antarctic ice. Details here, or ask a search engine. In SpecLab's "combined stereo spectrogram mode", one channel sets the red colour component for the spectrogram, the other adds the cyan component; if both signals have the same amplitude (or magnitude), the result is a shade of gray.

July:
Got rid of the terribly slow INI-files to save the configuration; now replaced with standard file access methods. Caution, this may ("will") cause compatibility problems with some older configurations. If you experience problems trying to load older configurations into SL versions compiled 2008-07-25 or later, please let me know.

April:
Added the option to send audio streams to Winamp, using the Audio-I/O DLL interface.
Improved autonotch in the FFT-based audio filter (optimized to remove hum in VLF "natural radio" receivers)

March:
Added support for PERSEUS (a direct sampling LF..HF receiver by Nico Palermo (IV3NMV) / Microtelecom .
Added the possibility to "play back" the contents of the spectrogram buffer, using an inverse FFT to convert the spectra back into audible signals .

January:
Improved the integrated HTTP server (optional bandwidth limiter, reduced CPU load due to less frequent update of the captured spectrogram image).

2007..

October ... December :
Completely rewrote the internal buffer structure to make the memory usage more efficient. This was necessary to support much longer FFTs and the "quick audio replay option" from the spectrogram. Because this may introduce a couple of new bugs, both V2.70 and V2.71 are both available for download. If you experience problems with V2.71, please switch back to V2.70 .

June:
Added support for SDR-IQ (and, though not tested, SDR-14). These are so-called software defined radios by RFSPACE, connected to the PC via USB (so you don't need a soundcard with stereo line-in; which is important for many notebook users ;-)

May:
Added some special functions for a planned Earth-Venus-Earth experiment by AMSAT-DL at the IUZ in Bochum. Some details are here (beware, this is an early writeup; the final result may look + work totally different).

April:
Added the Triggered Audio Recoder, most important: pre-trigger option (ability to audio files which contain a few seconds *before* the trigger event was detected). Can be triggered manually and/or automatic. Good for animal voice recordings, and other "rare" events.

February:
Added the FFT Filter Plugins .

2006..
December:
Added the 3D spectrum display .

November:
Added a simple, tiny HTTP server for remote viewing (and control) via LAN. More details in the subdirectory "server_pages" after installation.

October:
Added the "multi-strip" waterfall option, a new style for the frequency scale, an option to control a transmitter through a "pilot tone" (instead of the serial port), some new interpreter commands for the serial port, for setting size + position of the main window, and an option to minimize SL into the system tray (while hiding it from the task bar).

September:
Simplified colour palette selection (list with preview bitmaps).  Enhanced "Conditional Actions", states now indicated in the table. New preconfigured settings: "Bat Converter", "QRSS1". Two instances of SL(!) running on one PC can now communicate with each other, using the "send"-command. Fixed a bug in the interpreter (for automatic gain control). Began experiments with a DDS synthesizer controlled via soundcard(!), and PTT control via pilot tone (for LM567 decoder). Added a few new interpreter commands (sref.xxx, terminate, etc)

August: Added the "Bat Converter" in the quick settings. Added the checkmark to disable the SmallPort driver, which caused problems with other programs (ARSWIN, for example).

July: FFT-based filter now supports I/Q-processing; including frequency conversion. Option to select the waterfall scrolling speed automatically for 50 % FFT overlap. Interpreter commands can be embedded in the digimode terminal's transmit text now, allowing to change parameters automatically during transmission.

January-April: ASIO support. Remote control functions for certain radios through the serial port (first supported: Icom's CI-V protocol, Yaesu and Kenwood may follow). Experiments to send uncompressed audio through a local network via UDP or TCP/IP. Improved FFT-based filter now works as an audio pitch shifter too. Spectrum graph can be switched to "bargraph" mode.

2005..
October: Minor bugfixes.
August: The radio-direction finder can now suppress noise from up to three independent directions, and a new spectrum-event-logging feature was added (right-click into the waterfall to see it).
July: Wrote a highly experimental "output plugin" for Winamp, to feed audio streams from the internet into Spectrum Lab.
June: Some modifications, bugfixes, and a description how to set up SpecLab as a beacon monitor/logger for DI2AG .

January 2004:
Added an optional quadrature output for certain digimodes (QRSS, PSK, MSK) to support a simple, sideband-rejecting RF modulator (using the "phasing method", without the need to build a 90° audio phase shifter which is often the most complicated part of such a transmitter).

December 2004:
Started a few experiments with MSK (minimum shift keying), first using an incoherent demodulator, next step will be a coherent demodulator ("de Buda" or "Massey/Hodgart" for example). The advantage of this modulation technique is, there is no envelope shaping involved, so you don't need a linear transmitter to send it. However it is very questionable if MSK will ever be a popular mode like PSK31 in the amateur radio community. More on this in the manual...
Furthermore: New "conditional action" tab, which is useful for certain applications like counting meteors, etc... ;-)

May-October 2004:
Finally bought an Audigy 2 ZS myself, to play a bit with "true" 96 kHz sampling (for ADC+DAC), and -possibly- with 24 bit resolution. I still don't know why they need 24 bits to achieve an SNR or 108 dB, but that's another story. Futhermore: Automatic gain control in the DSP blackbox, an external trigger for the waterfall, and a few new display units (volts, watts, dBm, dBV). Averaging now calculated on voltages or powers, but now on logarithmic scales (which gave no meaningful "dB"-results). Furthermore: Published the method to control SpecLab from other programs using a simple message-based protocol.

Jan.-Apr. 2004:
Logarithmic frequency scale, modified PSK demodulator, modified noiseblanker, minor bugfixes. Someone reported SMPORT (the port access driver) caused problems under WinXP - effect not reproducable yet !
Got the info that the ADC in my Soundblaster Extigy does NOT support sampling at 96 kHz - I shouldn't have trusted the label on the box :-( ... but help is on the way:  SpecLab works well at 96kHz with the Soundblaster Audigy 2 ZS card - thanks for the report, Arthur.

Nov.-Dec 2003: V2.3
New functions: Filter with FFT convolution, for extra-long FIR filters, denoiser (using spectral subtraction), and a brute-force autonotch for VLF listening. Optional peak-detecting amplitude bar which runs parallel to the spectrogram. New function for SINAD measurements.

October 2003: V2.2
Minor changes and bugfixes. Tolerance range for the soundcard's "calibrated" against the "nominal" sampling rate is now +/- 250Hz (was +/- 100Hz) because some devices seem to run at 5400 Hz instead of 5512 Hz. Azimuth calculation of very weak signals improved. Cursor display now alternatively in menu line, if the controls on left side are invisible.

August-September 2003:
More steps towards a full implementation of DF6NM's Wideband Direction Finder with Colour Encoded Spectrogram Display in Spectrum Lab. For VLF enthusiasts, there is the option "two loops without an E-field antenna" which does not require a broadband 90° combiner. A nulling cardioid can be used to cancel noise from a certain compass direction. The description of an experimental VLF radio direction setup can be found here .

July 2003:
Increased the maximum waterfall scroll/update rate. Up to one pixel strip per millisecond is possible, if your PC is fast enough. Best in "non-scrolling" mode (like in the prepared "Tweek/Sferics" mode).

May 2003:
Minor changes in the "plotter" window, can be scrolled back and forth along the time scale. Used for long-term observations (like the "VLF station plotter" which plots the field strength of a number of european VLF transmitters over time). Added some usr-files for ELF/VLF monitoring.

February - March 2003:
Implemented Paul Nicholson's multi-stage hum filter in SpecLab's DSP blackboxes. This specialized comb filter can remove hum (and harmonics) without seriously degrading the audio quality. The current implementation is based on Paul's "C" sourcecode for Humfilt-1.2, it was available on his website.

December 2002:
Spectrum Analyzer runs in "stereo" mode now. The border around the "Watch List / Plot Window" can be turned off. A lot of internal modifications, may have added more bugs... the programs seems to remain a building site. Many of the new functions are not mentioned in the manual yet !

October 2002:
SpectrumLab now supports 'any possible sampling rate', which was necessary for an external PIC12F675-based A/D converter connected to the serial port (2 channels, 12 bits/sample, 2500 samples/second). Also fixed some bugs in the export function (last definition line was ignored) and the analysis and playback of stereo audio files.

June-July 2002:
SpectrumLab can now use the simple file-based "sound utility" interface described in another document. This makes it easy to write simple drivers in any language for external A/D-converters, etc. Even a BASIC program running in a DOS box should work. And: split frequency axis, effective voltmeter ("veff"-function in the interpreter), improved file analysis features.

September 2000:
Project was renamed to "Spectrum Lab" (or short SpecLab) because the program can do more than just analyze audio input. Meanwhile it can also be used for some 'special' digital communication modes used by radio amateurs on longwave. <part of the history removed, got too long>

Early 2000: Started to convert my old spectrum analyzer for DOS into a windoze program, because the required drivers for soundcard and SVGA card were not available any more. Now the program requires a quite fast PC (a 133-MHz-Pentium or better), crashes under certain conditions (slow CPU), and requires some strange DLLs. The graphics mode should be at least 800*600 pixels with 256 colors (true color required for Colour Direction Finder). The program once ran on an old 90MHz-Pentium with 640*480 pixel display if not too many DSP functions are active on the same time.


Back to the Software Overview