Revision History of the Audio Spectrum Analyzer / Spectrum Lab

  Original file location: ?\cbproj\SpecLab\html\revision.htm .
  'Primary' web location:

V2.98 .. V2.99, anno 2023:
- modified loading / saving items in Spectrum Lab's "Quick Settings"
  menu - see manual on 'Quick Settings'.

V2.96 .. V2.97, anno 2021:
- minor bugfix in the wave-file saving process (optional
  inversion of the quadrature channel's sign)
- option to connect directly to an IC-705 via WLAN, 
  without Icom's "RS-BA" software. Details in the manual,
  Controlling Icom radios via LAN or WLAN.
- being sick of Windows 10, further development of this
  Borland C++Builder-based project almost came to a halt.

V2.95, anno 2020:
- SL's integrated web server (HTTP server) can now act as an OpenWebRX-compatible server

V2.93 .. 2.94, anno 2018:
- Optional display of the broadband spectrum, which some Icom radios
  can deliver via CAT control (CI-V) interface.
- Automatic redrawing of the waterfall after modifying parameter suppressable
- Calendar date emitted in the error history (besides the time of day)
- Interpreter commands stream.start_input / stop_input to control audio streams

V2.92, anno 2017:
- Minor bugfixes in the configuration window
- Tried to improve the Sample rate-
and frequency calibration (recognize and discard bad GPS sync pulses) 

V2.91, October 2016:
- Non-differential encoding for experimental (B)PSK transmissions
- Modified Triggered Audio Recorder
- New sample formats received over the serial port (planned for a microcontroller based multi-channel ADC)
V2.90, October 2015:  
- New method to connect external A/D converters via 'COM' port  
- Modified the WAVE-input (default method for soundcards), 
   because some drivers insisted on using the WAVEFORMATEX 
   instead of the WAVEFORMATEXTENSIBLE (needed for 24 bit resolution).
- Fixed a few cosmetic bugs (truncated text depending on font scaling)
- Added a DTMF decoder / encoder in SL's digimode terminal.
   First used to remotely control a VHF receiver, to switch between 
    four different 'bat monitoring' frequencies .
V2.82, May - July 2015:  
- 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 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 processors

V2.81, January 2015:
- Output switches in the circuit window
- Modified command line interpreter (uses RPN to evaluate expressions)
- History of recently used configuration files (in the main menu under "File")
- Wave audio files with floating point samples (besides the normal integer formats)
V2.80, December 2014:
- Debugging tools for the 'Conditional Actions' (breakpoints, single-step,
  inspection of variables via mouse pointer)
V2.79, June 2013 - May 2014:  
- HTTP-based audio stream server integrated in Spectrum Lab 
  (can provide Ogg/Vorbis compressed streams for a limited number of clients)
- new flat-top FFT windows with exceptional dynamic range
- Modifed time domain scope (Start/Stop via hotkeys + menu, modified zoom, modified trigger)
- Spectrum buffer can be retrieved as JSON object via SL's web server.
- Different buffer sizes for audio processing and soundcard I/O.
- Modified Ogg/Vorbis stream reader to support the Alfred Wegener Institute's PALAOA audio stream

V2.78, April-May 2013:

- Speed improvements for 'very long FFTs' (still could be
  faster, if the FFT was done in the GPU not the CPU..)
- The FFT-based audio filter can now be controlled via the
  main frequency scale ("WebSDR-style").
- Modified the allocation of the Spectrum Buffer
  (formerly, the buffer size was defined as the
  'number of lines on the waterfall', now the buffer size 
   is measured in MByte, so the number of spectrogram lines 
   kept in memory for the waterfall display also depends
   on the FFT size).
- Changed the frequency input fields to make them more
  suitable for tuning software defined radios.
  Because changing the frequency digits via cursor up/down, 
  or via mousewheel is inappropriate for other applications,
  the 'behaviour' of the frequency input fields can be 
  changed as described here.
- Fought a battle with Windows 7. The font "Arial Narrow",
  which was used in a lot of forms, doesn't seem to exist
  in the standard installation, rendering some of SL's 
  dialog windows useless, or at least 'difficult to use'.
  -> Removed "Arial Narrow" from all forms.
- The old "sndvol32.exe" also doesn't exist in Windows 7,
  and was replaced by a lousy "sndvol.exe" which cannot be
  controlled through command line arguments anymore.
  -> Invoking the audio volume settings is impossible now.
  Thank you, Microsoft.
- Added support for Winrad-compatible "ExtIO"-DLLs.
  So far, only tested with SDR-IQ and PERSEUS .
- Modified GPS synchronisation, modified WM_COPYDATA-based 
  audio interface (now supports floating point samples), 
  and new internal scaling of samples (normalized to +/- 1) .
- Modified the parser for NMEA strings 
  (now supports GPZDA and a few others).
- Modified date-and-time / timezone handling.
  By default, Spectrum Lab now asks the operating system
  for a time in UTC, and for the offset between UTC and 
  the time displayed in the graphic user interface.
- Added support for the NDB frequency list by Sean, G4UCJ 
  (look for Eu_NDB_list.txt on Sean's site) .
- Added support for timestamped VLF streams based on Ogg/Vorbis, 
  compatible with Paul Nicholson's VLF RX tools.
V2.77, June-August 2011:

- 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,
  using the edge of the sync pulse as an optional reference
  to measure the soundcard's momentary sampling rate.

V2.76, July-October 2010

- Modified some of the sampling-rate correction algorithms.. 
  but some 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).
  These modes only work with stabilitzed oscillators.
  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 before the full 
  frequency resolution is reached.
- New installer with different paths to the 'executable'
  (which doesn't have write permission under Vista & Co)
  and to Spectrum Lab's 'data folders'
  (which require write permission during runtime, and are
   therefore placed in some 'Application Data' directory)
- Added support for audio files with 24 bits per sample
- Added support for Ogg / Vorbis audio files
- Added a GPS (NMEA) decoder for logging the geographic
  position (used for 'field tests' with Spectrum Lab)
- Planned: Audio streams with precise timestamps
- Added a few new interpreter commands and -functions .

V2.75, January-May 2010
- New file formats supported, for example SETI's raw 
  8-bit I/Q file with 8.7 MSamples/second .
- Optional file processing using multiple threads,
  which may be faster on dual or quad core CPUs .
- Rearranged the main menu items to avoid scrolling
  on small screens (better suited for netbooks) .
  All 'test circuit components', which were in the 
  'View/Windows' menu, were moved into the Components menu.
- 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)
- Began to completely rewrite the time domain scope,
  which may render some of the rarely used older functions
  unusable .. but more flexible now (scolling, zooming) .
- Improved the sample rate detector (Goertzel filters,
  and support for MSK - minimum shift keyed- references).
- Added the pam() function (phase- and amplitude monitors);
  details in html/phase_amplitude_monitor.htm . Intention:
  Together with the new sample rate detector, this function
  can be used to observe diurnal phase variations on VLF
  (ionospheric effects; ground- and skywave interference).

V2.74, June-October 2009
- Implemented a crude RTCM SC-104 decoder in the digimode 
  terminal to observe MW DGPS beacons (around 300 kHz).
- Implemented the reassigned spectrogram (experimental) .
- New "Radio Station Frequency List", see html/freqlist.htm.
- fixed a bug in the VCL (FORMS.PAS; SetWindowToMonitor)
- fixed a problem which caused a "handle leak" 
- began to modify the WFM demodulator to support I/Q input 
- Filter plugins (DLLs) can paint into the spectrum display now

V2.73, Spring 2009
- Various modifications during the Earth-Venus-Earth test
  by AMSAT-DL in Bochum; see file earth_venus_earth.htm .
- New configuration "EMU0202_as_lf_radio.usr" which turns
  a soundcard running at 192 kSamples/second into a longwave
  receiver (tested with an EMU0202, thus the name).
  Filter controlled through the markers on the frequency scale.

V2.72 b8, January 2009
- Added the experimental "correlogram", 
  which is an optional channel for the main spectrogram
  (and runs side-by-side with the normal spectrogram).

V2.72 b6..b7, October / November 2008
- Thanks to the Winamp (2) plugin system, Spectrum Lab can
  read (analyse) MP3 files now, and possibly a few others.
  Details in the manual (html), file "waplugins.htm".
- Changed the internal thread priorities; the old ones were
  ok for win XP & Linux/Wine, but not for Vista .
- Modified the digimode terminal to send text through an
  interpreter command: digimode.tx() .
- First steps towards an improved Time Signal Decoder,
  with a half-hearted attempt to support WWVB .

V2.72 b0, July / August 2008
- Lots of internal changes to eliminate the use of INI-files
  for the configuration (one some machines, they were terribly
  slow). Completely rewrote the structure of the "configuration
  data" for this purpose, possibly introducing a couple of
  new bugs. Threw out some FIR- and IIR filters from the
  filter control panel, since the FFT-based filter is now
  doing a better (and easier) job.
- SDR-IQ (and possibly SDR-14) can now be connected through
  TCP/IP for remote operation, besides the local USB port.
- Added the "stereo spectrogram" option in the quick settings
  menu, under "Natural Radio / Animal voices".."AWI PALAOA" . 
  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.

V2.71 b8..b9, March 2008
- 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 .
- Added the 'hard limiter' in the signal processing blackboxes.

V2.71 b6..b7,  January 2008
- Improved the integrated HTTP server (optional bandwidth limiter,
  reduced CPU load due to less frequent update of the captured
  spectrogram image).

V2.71 b2..b5,  December 2007
- Individual parameters for the channels of the spectrum analyser:
   * center frequency (for complex FFT with decimation),
   * frequency offset (which is added to the displayed value),
   * contrast and brightness value for the spectrogram .
- Some changes in the built-in HTTP server to conserve bandwidth
  and reduce the CPU load. More robust when multiple clients
  connect to it through the internet (though never planned as a 
  fully fledged web server.. see GM4ISM's 500 kHz display).
- Visual AGC for the spectrogram .

V2.71 b0..b1,  Autumn 2007
- Re-introduced different columns in the sample rate calibration table,
  after discovering that the sampling rates for in- and output
  of the author's notebook were "slightly different" !
- Output resampling function supports *any* non-integer ratio
  between input and output sampling rate for this reason.
  (previously, the same resampling function was only used
   if the input was *not* a soundcard).
- Completely modified the spectrum buffer structure, in order to
  get the "Spectrum Replay" function working :
- Added the "Spectrum Replay" function, which uses an inverse FFT
  to transform FFT's (from the spectrum buffer) back into the time-
  domain to make them audible in the speaker. See html\SpReplay.htm .

V2.7 b16..b19, Spring..Summer 2007
- Triggered audio recorder (click at the circle in the main menu !)
- Long term average option (for Amsat DL's Earth-Venus-Earth experiment)
- Zoom into selection (in the spectrum graph)
- Improved support for Linux/WINE (see html\speclab_under_linux.htm)
- Added support for SDR-IQ / SDR-14 by RFSPACE
- Discarded the WISE installer in favour of the free INNO Setup Compiler
- some minor bugfixes

V2.7 b13..b15, 01/2007
- Support for ZL1BPU's "CASTLE" mode (Morse code in MFSK).
- Arbitrary waveform generator

V2.7 b11..b12, 11..12/2006
- Added a miniature HTTP server for remote control via web browser
- Added the 3D-spectrum display

V2.7 b9+b10, 10/2006
- Added the PTT "pilot tone" for RX/TX switching without a COM port.
  Use an LM567 tone decoder to key the transmitter via soundcard.
- Multi-strip waterfall (for long-term display of narrow bands)
- Frequency scale now in two flavours: "classic" and "ruler" style
- Commands to access the serial port signals (ptt_port.x)
- Commands to change size+position of the main window (window.x)
- Application can be minimized into the SYSTEM TRAY instead of task bar

V2.7 b8, 09/2006
- Simplified colour palette selection (list with preview bitmaps)
- Enhanced "Conditional Actions", states now indicated in the table
- New preconfigured settings: "Bat Converter", "QRSS1" and some more
- 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)
- added the "sref" commands (for the spectrum reference) and some others

V2.7, 07/2006
- FFT can now produce a COMPLEX output (besides the amplitude spectrum),
  which can be logged into the spectrum logfile too ("spectrum export").
  Intended to be used in a geophysic experiment to detect the orientation
  of magnetic fields (influenced by underground structures).
- FFT-based filter supports I/Q-input and/or -output now, which can 
  be used as the core for a software-defined radio (RX and TX).
- Waterfall scroll interval can be automatically set for 50% FFT overlap.
- Transmitted text in the digimode terminal can now contain interpreter
  commands (embedded in angle braces, as described in the manual).

V2.6, 2006
- Added remote control functions ("rct") for some radios (CI-V),
  see "ncdxf_4u1un_tracker.txt" (demo for remote control functions) .
- Simplified the adjustment of image-cancelling DC receivers 
  with I/Q input to the soundcard, see dc_rx_with_iq_processing.htm .
- Extended the functionality of the FFT-based filter, which can now
  be used to shift frequencies up or down, and to "invert" sidebands
  (for USB<->LSB conversion in any required frequency range).
  The "SAQrcvr" profile (VLF receiver, targeted at SAQ) now uses this
  method for frequency conversion, which seems to consume less CPU
  power than the classic approach with mixing and filtering.
- Added some interpreter stubs to access the new functions.

V2.5, 2005
- up to three nulling directions in RDF mode (improved "beam shaping")
- new command line options to play audio files etc (see "startins.htm").
- debug option (/debug on the commandline) writes debug_run_log.txt
- output plugin for Nullsoft Winamp to feed audio directly into SL
- Spectral limiter in the FFT filter control panel, ok for natural radio
- cosmetic surgery in the spectrum display (removed framed panel, etc)
- less system resources needed, some forms are now dynamically created

V2.4, 2004
- New, flexible, programmable "conditional actions" for beacon logging
- Dual readout-cursor with optional "delta"-function
- Added Minimum Shift Keying (MSK) for experimental purposes
- Added "Chirp Hell" transmission, based on DF6NM's basic programs
- Added the combination for "Fast File Analysis with plotter enabled"
- Fixed problems with some window's background colour under WinXP
- Modified screens which didn't look good when using large fonts
- New units for spectrum displays: V, W, dBm, dBV
- Using "technical notation" if possible (12.3 uV instead of 1.23e-5)
- optional logarithmic frequency scale
- removed all fonts from the installation script
  because they caused problems under certain WinXP versions
- New export function for the FFT results ("spectra")
- New noiseblanker and Automatic Gain Control (in the DSP blackboxes)
- triggered aquisition of FFT's for a very special application
- published the WM_COPYDATA-based protocol which allows
  other programs to communicate with SL 

V2.3, 2003
- FFT-based filter, can be used as auto-notch etc.

V2.2, 2003
- Played with modulators and demodulators
- Improved dual-channel processing (aim: I/Q processing)
- RDF module based on DF6NM's CAS (colour azimuth spectrogram)

V2.1, V2.0, 2003
- never officially released !

V1.9, Aug.  2002 - Sept. 2002:
- Played with frequency shifters using the WEAVER method,
  info found at .
- A new buffer routine for the waterfall optionally uses files,
  which gives an enormous "scroll-back"-range but causes 
  problems on some machine (the memory-mapped file routines
  behaved very strange on some old machines).

V1.7, March 2002 - April 2002:
- New calibration routine which can run permanently
  to detect the soundcard's sample rate, using a narrow-
  band phase detector which can lock the sample rate
  to a precise reference signal like the 15625 Hz TV sync
  etc. Nice in combination with the phase meter.
- Experiments with an audio chopper circuit to have
  DC-capability for the analog input.

V1.67, October 2001 - January 2002:
- Implemented a�simple "real-time plotter" so you can see 
  graphs of analyzed data without using a spreadsheet program.
- Some programs compiled with C++ Builder V4 which use Yariv 
  Kaplan's WinIO.DLL don't run properly under Win XP 
  (they seem to crash on EXIT). As I am not switching to Win 
  XP for several reasons, these problems will probably never
  be fixed. WinIO has been removed in V1.67b4 for testing..
- Help system converted to HTML (to get rid of the lousy WinHelp 
  system, and the need for RTF files and the nasty help compiler)
- Started some experiments with "named pipes" to carry audio data
  in real-time over local networks (discontinued)
- Added the option to select one of possibly many soundcards.
  Never tested because only one "audio device" available here.
- Added the "blackbox" component in the test circuit,
  can be used as delay line / echo effect / hum canceller.
- Minor bugfixes and improvements in the circuit window.

V1.66, August 2001:
- Someone asked to support 48 ksamples/second, hope it works
  for you. Nice for the 'software VLF radio' if you want to
  listen to a station at 23.x kHz.
- a bit of cleanup in the settings-dialog, now it's
  a  "multi-line" tab to avoid scrolling
- JPEG encoder implemented. Uses
    PAINTLIB             Copyright (c) 1996-1998, Ulrich von Zadow
    IJG's JPEG library   Copyright (C) 1994-1997, Thomas G. Lane
- an Image viewer with the option to look at all saved images
  in a directory, just like a slideshow. 
- a windows message interface which allows other applications
  to use some of SpecLab's internal functions. Uses WM_COPYDATA.
  (this was later thrown out again, using "named pipes" instead)

V1.65, April 2001 - June 2001:
- Improvements and bugfixes, tnx DF6NM and CT1DRP
- test signal generator supports versatile AM and FM now
- frequency converter improved, useful as "S/W VLF radio" now
- duplication of waterfall display lines now only 'optional'
- non-scrolling waterfall option
- 'full-window' waterfall OR spectrum graph option (and more..)
- now 8 instead of 6 FFT decimation stages (even more resolution)
- displayed ampitude range no longer fixed to 0...100dB
- FFT averaging improved (less smearing for SLOW waterfalls !)
- amplitudes of test generators can be attenuated down to -60db
- sample rate 5512 samp/sec (from SOUNDCARD) now possible
- experimental narrow-band multi-tone HELL transmission implemented
- separate columns in the sample rate calibration table
  for ADC and DAC (example: 8002.87 for DAC  and 7938.09 for ADC)
- removed the small "FFT control panel" because it's obsolete now

V1.64, March 2001:
- Fast Waterfall mode allows calculation of 200 spectra
  per second (5ms scroll interval), good for analyzing
  FSK modes (like RTTY etc). Use low FFT resolution like
- Complex FFT calculation with adjustable center frequency
  and decimation ratio up to 700 allows resolution in the
  'sub-millihertz' range. Use slow scrolling speed !

V1.61 - V1.63, Dec.2000 - Jan.2001
- PSK modulator and detector implemented,
  basic routines taken from WinPSK31,
  but symbol rate now adjustable (down to 1 symbol/second).
- WAVE-file-logging can now be 'tapped' to
  the sound INPUT or the sound OUTPUT.
- Audio chunk size increased to 2048 samples/chunk,
  reducing "dropouts" in the TX signal for the
  expense of a longer delay between filter input
  and output.
- Did some experiments with "constant amplitude PSK"
  with slowly moving phase, but sidebands too broad
  so doesn't seem to be worth all the effort yet :-(
- Some experiments with Minimum Shift Keying (MSK)
  planned, but a good(!) decoder is complicated.
- Some new filter designers (for FIR filters),
  for example the Remez Exchange (Parks/McClellan)
  algorithm (included since SpecLab V1.63).
- Filter algorithm for the sample rate decimation
  is now under user control: use integrate-and-dump
  filter for very slow PCs (like the one at DF0WD)
  or proper FIR filtering if the PC is fast enough.
- proper filtering also possible when logging samples
  into a wave file (formerly only integrate-and-dump,
  which may cause aliasing problems).
  To keep the program running on slow PCs, this
  new feature can also be turned off from the config

V1.5r2, December 2000:
- Implemented a "time signal decoder" for some
  time signal transmitters on longwave (MSF on 60kHz,
  HBG on 75kHz, DCF on 77.5kHz).
  Allows you to adjust your PCs clock very accurately.
  The intention for this decoder was to have a
  "precision timebase" for some "very special"
  modes (like coherent CW etc).

V1.5r1, October 11th, 2000:
- FFT resolution increased by "downsampling" the audio samples
  taken from the soundcard before feeding them into the FFT.
  The effect is a lower "internal" sample rate (adjustable)
  which allows a resolution of about 20mHz (m=milli!) for the
  expense of a maximum detectable frequency of about 900Hz,
  using an FFT size of 64k.

V1.4, September 10th, 2000:
- IIR-Filter designers modified. Chained 2nd-order IIR-filters
  of any type can be generated and combined.
  The filter design (not only the coefficients) can be
  saved as file.
- Programmable periodic screen capture of the waterfall
  implemented. Allows automatic saving of a sequence of
  bitmaps for "long-term" or "late-night" recordings.
  Thanks to Petr, OK1FIG for the idea (from his EasyGram).
- A time-domain signal multiplier ("mixer") has been
  implemented to transform the frequency of input signals
  to a comfortable 600-Hz (or so..) audio.
  Based on an idea from Christer, SM6PXJ.

V1.3, September 2nd, 2000:
- Analysis of audio WAVE file now possible
- "File logging" of audio samples into a WAVE file included
- Some control windows simplified ("Apply"-buttons removed)
- Minimum interval for waterfall scroll reduced from 200ms
  to 100ms, but slower PCs will not be able and scroll slower
- a simple but still "experimental" audio filter with
  programmable coefficients has been implemented
- a small Online-Help-System with context sensitive help
  is now included (and replaces the old "manual")
- Renamed the project from "Spectrum" to "SpecLab"
  which will also be the name of the executable files.

V1.2 beta, August 21st, 2000:
- Waterfall scroll speed is now independent of the FFT size
  (tnx DF8ZR and G3XDV), may now be reduced to 200ms per
  scroll even when using 32768 samples per FFT.
  The trick is to use "old" samples that have been analyzed
  before and NOT to wait until there are enough samples
  for a completely new FFT analysis.
- Intended to add a "WAV file analyzer"-mode, but the WAV
  file format is more complicated than expected :-( ,
  so V1.2 is an "intermediate" version again !

V1.1 beta, August 19th, 2000:
- minor bugs fixed: program crashed if window was minimized
  and size of the waterfall window became "negative".
- default settings (if SETTINGS.INI not found) optimized.
- possibility to save the waterfall image as a bitmap now

V1.0 beta, July 2000:
- Conversion from DOS to WIN95 using Borland C++Builder.
  The old integer FFT algorithm was later replaced by a
  floating point FFT algorithm because the floating point
  algorithm proved to be **FASTER** than the integer FFT,
  because CPU and FPU operate "parallel" in a Pentium.

Wolfgang "Wolf" Buescher, DL4YHF.