Previous Releases

Version 70

  • Added ability for email Subject to be customized.  Variable substitution applies as follows for the subject line:  
    • [d] will be replaced with the Tone Description
    • [t] will be replaced with the time at which the tone was detected
    • The subject line will default to “[d] Page Received at [t]” if no edits are made
  • The default text in the email body can now be eliminated, if desired.  Variable substitution for the email body applies as follows:
    • [d] will be replaced with the Tone Description
    • [t] will be replaced with the time at which the tone was detected
    • [mp3] will be replaced with the .mp3 file name
    • [amr] will be replaced with the .amr file name
    • [wav] will be replaced with the .wav file name
    • The email body will default to “[d] Page Received at [t]” if no edits are made
  • Changed variable substitution to only provide the filename in email body rather than the entire relative path.  For example, where the [mp3] tag would have been replaced with “/audio/filename.mp3” in the past, it will now only be replaced with “filename.mp3”.  This will make it easier to create hyperlinks pointing to a file on a web server.  Note that variable substitution for the alert_command field will continue to substitute with the relative path to allow external scripts and programs to find the file.  
  • Native support for uploading MP3 files to a web server via FTP without an external script
  • Added support for Pushover and Pushbullet messaging services
  • Single version of TwoToneDetect for both desktop and Raspberry Pi 
  • Fixed bug with Exclude Times that occurred if times were set but no email addresses entered.

Version 69

  • Added additional parameter to config.cfg to allow emails to be sent sequentially (individually) to each email in a separate message rather than as a group email.
    • email_send_sequential = [“none”, “all”, or “Verizon”]
    • When set to “none”, a single email is sent to the group.  When set to “all”, individual emails are sent to all users.  When set to “Verizon”, individual emails are sent to and addresses, and a single email is sent to all other users.
  • Added additional parameter to config.cfg to allow more flexibility with email SMTP settings.  SSL, STARTTLS are no longer tied to a specific email port, but can be chosen for any port.
    • email_security = [“SSL”,”STARTTLS”, or “none”]
    • email_authentication = [“1” or “0”] (unchanged from v65 – set to 0 to use with a local SMTP server that does not require username/password authentication)
  • Added a start_minimized parameter to config.cfg to start the program minimized to the taskbar for automatic restart applications.  To start the program minimized, use start_minimized = 1
  • Added an instance_id parameter to config.cfg to add custom text to the title bar of the program to allow easy differentiation of multiple instances of the programming running on the same PC.  For example, instance_id = Clark County Fire will put “Clark County Fire” in the title bar next to “TwoToneDetect”
  • Added option to allow text-only emails to be sent before or after (or both) audio recording.  This allows a text email to be sent containing a hyperlink to an audio file that has been uploaded to a web server using the post_email_command parameter.  This option specified indivudually for each tone set in tones.cfg using the text_email_send parameter.  Valid values are ‘before record’, ‘after record’, or ‘both’.  For example:  text_email_send = after record
  • Packaged ftpuploader.exe and along with TwoToneDetect to simplify uploading audio files to a web server via FTP.  See this page for usage details.
  • Misc. bug fixes and debugging output changes

Version 68

  • Added option to automatically extend the record time tone sets if another stacked tone is detected during recording.
    • Audio prior to the stacked tone detection is removed from the recording
    • This option is enabled by default but can be disabled in the Edit Config Info screen
    • Note:  Each tone in the stacked sequence must be in your tones.cfg file for this feature to work properly
  • Added FTP timeouts and error handling to prevent program from locking up during redundant operation if connection is lost
  • Removed # and @ from list of characters that gets converted to _ in filenames to allow for hashtags
  • Fixed “Index Error” during startup, other misc bugs related to config.cfg file reading
  • email_from is set to email_username by default. email_from can now be changed in the Edit Config Info screen.

Version 67

  • Added support for multiple instances of TTD to work together to allow redundant operation across locations, ISPs, email servers, etc.
    • For more information on redundancy features, see
  • A new time/date stamped log.txt file is now created each time the program runs.  Files are stored in a folder called “logfiles”
  • Option to keep WAV files for debugging. To keep WAV files, manually edit config.cfg file to add a line that says: keep_wav = 1
  • Various bug fixes and debugging output changes

Version 65

  • Enhancements to signal processing
  • Left/Right/Mono selection in Config Menu
  • Email Body field added to TonesEditor. Allows a custom message to be added to the body of the email message
  • Port 25 email can be configured to not use any authentication (for use behind firewalls) by adding email_authentication = 0 line to config.cfg file

Version 64

  • Longtonelength limited to 8 seconds, Atonelength and Btonelength limited to 4 seconds
  • remotely hosted tones.cfg info is retrieved based on timer rather than upon tone detection.  Default is once per hour.  Can be changed by adding update_interval parameter to config.cfg file
  • Added ability to send “Admin Email” from TonesEditor interface
  • Added version number to the GUI title bar
  • Limited support for Port 25 SMTP server (untested)
    Version 63 Release Notes:
  • Fixed a bug with remote tones.cfg file retrieval
  • Fixed a bug with the input devices error box

Version 63

Version 62

  • Added support for a gap between A and B tones using a new parameter called gaplength (optional).  Set this slightly longer than the actual gap between A and B tones (if needed)
  • Added an error message popup box if no audio input devices are found
  • Added support for a email_from parameter in config.cfg.  This is not supported in the GUI, it must be added manually.  This will set the ‘FROM’ field in the email header to something other than the email_user.

Version 61

  • Added error checking for duplicate Description fields in tones.cfg
  • Added SSL option for outgoing email in addition to STARTTLS – will use SSL if port 465 is specified (for Yahoo and others)
  • Added playback during dynamic record time
    Fixed echo during stacked tone playback during record

Version 60

  • Major changes to tone detection algorithm. See program web page for more details
  • record_delay is on a per tone set basis instead of global (so specify it in tones.cfg instead of config.cfg)
  • email_priority can be set in config.cfg from 1(highest) to 5(lowest)
  • date added to timestamp in email subject
  • email subject info is copied into body
  • release_time parameter in config.cfg specifies number of seconds of silence necessary before recording will stop (dynamic record time).  Max is 60 seconds, default 0 (recording is 100% timer based)

Version 58c

  • Added feature to copy remote tone config file to tones.cfg upon successful retrieval of remote file
  • Added replacement of tab (and other whitespace) characters in “Description” with spaces
  • Fixed a bug preventing proper remote tone config file decryption
  • Added file open, save as, encryption, decryption to TonesEditor program
  • Fixed a bug in the ignore_after algorithm that caused an “index error” in certain situations
  • Fixed a bug with the Long Tone detection that was preventing stacked pages after a long tone from being decode
  • Fixed a bug with Btonedebounce and Longtonedebounce that was causing some stacked pages to be missed
  • Added variable substitution for alert_command and post_email_command strings.  Enter [d] to insert the current Tone Description, enter [mp3] to insert the mp3 filename, [amr] to insert the AMR filename, [wav] to insert the WAV filename (all paths relative to program directory)
  • Audio recordings are now single channel (mono) instead of stereo in preparation for left/right audio selection capability to be added later
  • Program now creates a temporary log file of the debug output called log.txt.  This file is overwritten each time the program starts.

Version 57a – bug fix for v57 “index error” (EXE only, not whole package)

Version 57

  • Added error checking for multiple sections with the same name in the tones.cfg file
  • Added the capability for the tones.cfg file to be remotely hosted on a web server.  To do this, a local remote.cfg file must be created.  See for more information
  • Added a separate TonesEditor.exe program to the package.  This program can be used to edit the tones.cfg file.
  • Added automatic replacement of characters not allowed in filenames in “Description” fields of tone sets
  • Added a new parameter to tones.cfg called text_Emails.  The program will send an email to these email addresses immediately upon detection of a valid tone set, prior to recording any audio.

Version 56

  • Made playback during record configurable per tone set instead of a global setting.  A new parameter called playback_during_record can be added to each section of the tones.cfg file.  If set to 1, the program will playback the audio for that tone set during recording.
  • Made changes to the scanner control algorithms to improve funtionality.  Still may not work perfectly, but should be improved.  Feedback appreciated.

Version 55d Release Notes:

– Fixed a bug to allow “record during playback” feature to work

Version 55c Release Notes:
– Changed the email header info for mp3 attachments to identify them as media files
– Changed bug in ffmpeg command code that was preventing mp3 sampling rate from being changed

Version 55a Release Notes:
– Changed filter to allow frequencies down to 250 Hz to pass through to tone detection algorithm

Version 55 Release Notes:
– Fixed a bug with the exclude_emails feature that kept the feature from working if the exclude_from was before midnight and exclude_to was after midnight
– Added a BCC option in the configuration menu.  When checked, email addresses will be hidden to all recipients (BCC’ed)
– Fixed a bug for stacked page detection

Version 54 Release Notes:
– Fixed bug in the Config Window that was hiding some of the options for some users.  If a system had no COM ports, the COM port selection box and anything below it would not show up.  This has been fixed.
– Added a parameter called Longtonelength that specifies the required lengh of a Long Tone.  Used in conjunction with Longtonedebounce
– Upon first detecting a long tone, the program will wait the for the duration of Longtonelength, then check again to see if the frequency is still present
– Made a number of changes to the scanner control algorithm to improve the probability that tone sets will be detected when scanning multiple frequencies
– Note:  The more frequencies and the more tone sets that are added, the less reliable this becomes.

Version 53 Release Notes:
– Fairly significant change to the tone detection algorithm to try to prevent falsing where jursidictions use A-B and B-A tone sets back to back.
– The Btonelength parameter has changed what it is used for.  New algorithm:  Upon first detecing the B tone, the program waits for the duration of Btonelength-Btonedebounce*200ms-200ms and then starts looking again for the B tone.  If it finds it a second time, it will alert.
– For Quick Call 2 format paging, set this value to 3 seconds to eliminate the A-B/B-A problem.
– If your area doesn’t have the A-B/B-A issue, you can set this value to zero for operation similar to previous versions of the program
– Added optional parameters called Btonedebounce and Longtonedebounce in the tones.cfg file.  These parametesr can be used to prevent falsing.  Set it to 0 for maximum sensitivity/least debouncing
– Values should be set to an integer between 0 and 4.  The value is multiplied by .2 seconds and that is the length of time that the B tone must be present in order for the tone to be decoded
– It’s recommended that this parameter be set to zero unless you encounter falsing problems.  Then set it to 1, if you still have problems, set it to 2, etc.
– Added support for a new optional parameter called radio_frequency in the tones.cfg file.  This parameter is used along with the Uniden scanner control features of the program.
– When this paramter is populated with radio frequency (in units of MHz), a tone set will not be detected unless it is found on the radio frequency specified
– Fixed a bug in the exclude email feature that would not exclude the last email address in the email list

Version 52 Release Notes:
– Added an option to the config file and window to allow selection of the mp3 encoder bitrate, which impacts file size and audio quality
– Added timestamps to some of the debugging outputs

Version 51 Release Notes:
– Added two optional parameters that can be added to each tone set in the tones.cfg file:
alert_command – this is a command line that will be executed immediately upon detection of a valid tone set
post_email_command – this is a command line that will be executed after a valid tone set has been detected and emails have been sent
– The program will now re-read the email information from the tones.cfg file each time a valid tone set is detected.  Note that it does NOT reread all info from the tones.cfg file, only the email info

Version 50 Release Notes:
– Added an optional parameter that can be added to each tone set in the tones.cfg file called ignore_after.  This parameter allows you to specify a time period (in seconds) that a tone set will be ignored after a valid detection of the same tone set.  This is intended to eliminate multiple emails in jurisdictions where the tones are set off multiple times for the same page.

Version 49 Release Notes:
– Adds a feature that allows you to exclude emails from being sent during a certain time of day.  This is designed to eliminate emails from nightly test pages.  This is configured independently for each tone set in the tones.cfg file.  See the sample tones.cfg file for details.  Times must be in 24 format (i.e. 13:35 is 1:35 p.m.).  The three new parameters are exclude_from, exclude_to, and exclude_emails
– MAJOR CHANGE in the way mp3 and AMR files are created.  Rather than using the LAME.exe and Nokia Multimedia Converter, the program now uses ffmpeg.exe.  This program handles both mp3 and AMR files, and can be downloaded here:
You want the latest Windows 32 bit static build.
Or more specifically here:

Version 48 Release Notes:
– Adds support for AMR format file compression in addition to MP3 file compression.  In order for AMR support to work, Nokia Multimedia Converter 2.0 must be installed in the C:\Nokia\Tools\Nokia_Multimedia_Converter_2_0 directory.  There are separate email lists for mp3 and AMR attachments. See the sample tone.cgf file for details.
*IMPORTANT* – if AMR support is not needed, delete the amr_Emails line for each tone set
– Adds a parameter to the tone config file for B tone length.  This allows the user to specify the length of time that the B tone must be succesfully decoded before the program will alert.  USE THIS PARAMETER WITH CAUTION.  It is recommended that this parameter be set as short as possible but long enough to prevent falsing on “regular” radio transmissions.  To keep the behavior the same as in previous versions of the program, set this parameter to .4.  If it is set longer than .4, the B tone must be continuously detected for as long as the parameter is set to.  If any noise or interference causes another frequency to be measured for any part of this duration, the tone will not decode succesfully.

Version 45 Release Notes:
-Yet another bug fix in saving tone tolerance to config file

Version 44 Release Notes:
-Bug fix in saving tone tolerance to config file

Version 43 Release Notes:
– Math bug fix (infinity issue)
– Added GUI for config file editing

Version 41 Release Notes:
– Added “playback during record” option to GUI
– Changed subject of sent emails to “Page Received”
– Added tone offset feature to config file
– Added audio level meter
– Added audio threshold control to GUI
– Added status and history displays to GUI

Version 40 Release Notes:

Supported Features
– QuickCall2 format decoding
– Email as mp3
– Configurable record time
– Configurable email
– Configurable tone tolerance
– Send to multiple email addresses
– Selectable sound card for recording
– Selectable sound card for playback
– Record delay
– Add time of detection to email subject
– Playback while recording after tone detection
– Long tone support
– Configurable squelch threshold
– Tone offset