Index: Configuration.cpp
===================================================================
--- Configuration.cpp	(revision 6335)
+++ Configuration.cpp	(working copy)
@@ -161,6 +161,7 @@
 #include <QSerialPortInfo>
 #include <QScopedPointer>
 #include <QDebug>
+#include <QSound>
 
 #include "qt_helpers.hpp"
 #include "MetaDataRegistry.hpp"
@@ -408,6 +409,12 @@
   void delete_selected_macros (QModelIndexList);
   Q_SLOT void on_save_path_select_push_button_clicked (bool);
   Q_SLOT void on_azel_path_select_push_button_clicked (bool);
+  Q_SLOT void on_audio_transmitting_path_select_push_button_clicked (bool);
+  Q_SLOT void on_audio_rxfreqmsg_path_select_push_button_clicked (bool);
+  Q_SLOT void on_audio_watchdog_path_select_push_button_clicked (bool);
+  Q_SLOT void on_audio_transmitting_path_test_push_button_clicked (bool);
+  Q_SLOT void on_audio_rxfreqmsg_path_test_push_button_clicked (bool);
+  Q_SLOT void on_audio_watchdog_path_test_push_button_clicked (bool);
   Q_SLOT void delete_frequencies ();
   Q_SLOT void on_reset_frequencies_push_button_clicked (bool);
   Q_SLOT void insert_frequency ();
@@ -443,11 +450,20 @@
   QDir doc_dir_;
   QDir data_dir_;
   QDir temp_dir_;
+  QDir sounds_dir_;
+  
   QDir default_save_directory_;
   QDir save_directory_;
   QDir default_azel_directory_;
   QDir azel_directory_;
-
+  
+  QString default_audiowav_transmitting_path_;
+  QString audiowav_transmitting_path_;
+  QString default_audiowav_rxfreqmsg_path_;
+  QString audiowav_rxfreqmsg_path_;
+  QString default_audiowav_watchdog_path_;
+  QString audiowav_watchdog_path_;
+  
   QFont font_;
   QFont next_font_;
 
@@ -555,12 +571,15 @@
   DataMode data_mode_;
 
   QAudioDeviceInfo audio_input_device_;
+  QAudioDeviceInfo audio_output_device_;
+  QAudioDeviceInfo audiowav_output_device_;
   bool default_audio_input_device_selected_;
+  bool default_audio_output_device_selected_;
+  bool default_audiowav_output_device_selected_;
   AudioDevice::Channel audio_input_channel_;
-  QAudioDeviceInfo audio_output_device_;
-  bool default_audio_output_device_selected_;
   AudioDevice::Channel audio_output_channel_;
-
+  bool audiowav_enabled_;
+  
   friend class Configuration;
 };
 
@@ -580,6 +599,7 @@
 QDir Configuration::doc_dir () const {return m_->doc_dir_;}
 QDir Configuration::data_dir () const {return m_->data_dir_;}
 QDir Configuration::temp_dir () const {return m_->temp_dir_;}
+QDir Configuration::sounds_dir () const {return m_->sounds_dir_;}
 
 int Configuration::exec () {return m_->exec ();}
 
@@ -648,6 +668,10 @@
 QStringListModel const * Configuration::macros () const {return &m_->macros_;}
 QDir Configuration::save_directory () const {return m_->save_directory_;}
 QDir Configuration::azel_directory () const {return m_->azel_directory_;}
+QString Configuration::audiowav_transmitting_path () const {return m_->audiowav_transmitting_path_;}
+QString Configuration::audiowav_rxfreqmsg_path () const {return m_->audiowav_rxfreqmsg_path_;}
+QString Configuration::audiowav_watchdog_path () const {return m_->audiowav_watchdog_path_;}
+bool Configuration::audiowav_enabled () const {return m_->audiowav_enabled_;}
 QString Configuration::rig_name () const {return m_->rig_params_.rig_name;}
 
 bool Configuration::transceiver_online (bool open_if_closed)
@@ -724,6 +748,7 @@
   , settings_ {settings}
   , doc_dir_ {QApplication::applicationDirPath ()}
   , data_dir_ {QApplication::applicationDirPath ()}
+  , sounds_dir_ {QApplication::applicationDirPath ()}
   , frequencies_ {&bands_}
   , next_frequencies_ {&bands_}
   , stations_ {&bands_}
@@ -787,7 +812,11 @@
   doc_dir_.cd (WSJT_DOC_DESTINATION);
   data_dir_.cd (WSJT_DATA_DESTINATION);
 #endif
-
+  sounds_dir_.cdUp ();
+  sounds_dir_.cd ("sounds");
+  default_audiowav_transmitting_path_ = sounds_dir_.absolutePath() + "/TransmittingF.wav";
+  default_audiowav_rxfreqmsg_path_ = sounds_dir_.absolutePath() + "/IsThisAMessageF.wav";
+  default_audiowav_watchdog_path_ = sounds_dir_.absolutePath() + "/WatchdogF.wav";
   {
     // Create a temporary directory in a suitable location
     QString temp_location {QStandardPaths::writableLocation (QStandardPaths::TempLocation)};
@@ -978,6 +1007,7 @@
   //
   default_audio_input_device_selected_ = load_audio_devices (QAudio::AudioInput, ui_->sound_input_combo_box, &audio_input_device_);
   default_audio_output_device_selected_ = load_audio_devices (QAudio::AudioOutput, ui_->sound_output_combo_box, &audio_output_device_);
+  default_audiowav_output_device_selected_ = load_audio_devices (QAudio::AudioOutput, ui_->audiowav_output_combo_box, &audio_output_device_);
 
   update_audio_channels (ui_->sound_input_combo_box, ui_->sound_input_combo_box->currentIndex (), ui_->sound_input_channel_combo_box, false);
   update_audio_channels (ui_->sound_output_combo_box, ui_->sound_output_combo_box->currentIndex (), ui_->sound_output_channel_combo_box, true);
@@ -1033,6 +1063,9 @@
   ui_->PTT_method_button_group->button (rig_params_.ptt_type)->setChecked (true);
   ui_->save_path_display_label->setText (save_directory_.absolutePath ());
   ui_->azel_path_display_label->setText (azel_directory_.absolutePath ());
+  ui_->audio_path_display_label_transmitting->setText (audiowav_transmitting_path_);
+  ui_->audio_path_display_label_rxfreqmsg->setText (audiowav_rxfreqmsg_path_);
+  ui_->audio_path_display_label_watchdog->setText (audiowav_watchdog_path_);
   ui_->CW_id_after_73_check_box->setChecked (id_after_73_);
   ui_->tx_QSY_check_box->setChecked (tx_QSY_allowed_);
   ui_->psk_reporter_check_box->setChecked (spot_to_psk_reporter_);
@@ -1108,7 +1141,8 @@
   next_macros_.setStringList (macros_.stringList ());
   next_frequencies_.frequency_list (frequencies_.frequency_list ());
   next_stations_.station_list (stations_.station_list ());
-
+  ui_->audiowav_checkBox->setChecked(audiowav_enabled_);
+  
   set_rig_invariants ();
 }
 
@@ -1161,7 +1195,11 @@
   aggressive_ = settings_->value ("Aggressive", 0).toInt ();
   save_directory_ = settings_->value ("SaveDir", default_save_directory_.absolutePath ()).toString ();
   azel_directory_ = settings_->value ("AzElDir", default_azel_directory_.absolutePath ()).toString ();
-
+  
+  audiowav_enabled_ = settings_->value ("AudioFileEnable",false).toBool ();
+  audiowav_transmitting_path_ = settings_->value ("AudioFileTransmitting", default_audiowav_transmitting_path_).toString();
+  audiowav_rxfreqmsg_path_ = settings_->value ("AudioFileRxFreqMsg", default_audiowav_rxfreqmsg_path_).toString();
+  audiowav_watchdog_path_ = settings_->value ("AudioFileWatchdog", default_audiowav_watchdog_path_).toString();
   {
     //
     // retrieve audio input device
@@ -1316,6 +1354,10 @@
   settings_->setValue ("PTTport", rig_params_.ptt_port);
   settings_->setValue ("SaveDir", save_directory_.absolutePath ());
   settings_->setValue ("AzElDir", azel_directory_.absolutePath ());
+  settings_->setValue ("AudioFileEnable",audiowav_enabled_);
+  settings_->setValue ("AudioFileTransmitting", audiowav_transmitting_path_);
+  settings_->setValue ("AudioFileRxFreqMsg", audiowav_rxfreqmsg_path_);
+  settings_->setValue ("AudioFileWatchdog", audiowav_watchdog_path_);
 
   if (default_audio_input_device_selected_)
     {
@@ -1529,6 +1571,13 @@
       return false;
     }
 
+  if (ui_->audiowav_output_combo_box->currentIndex () < 0
+      && !QAudioDeviceInfo::availableDevices (QAudio::AudioInput).empty ())
+    {
+      message_box (tr ("Invalid audiowav output device"));
+      return false;
+    }
+
   if (!ui_->PTT_method_button_group->checkedButton ()->isEnabled ())
     {
       message_box (tr ("Invalid PTT method"));
@@ -1761,6 +1810,10 @@
   data_mode_ = static_cast<DataMode> (ui_->TX_mode_button_group->checkedId ());
   save_directory_ = ui_->save_path_display_label->text ();
   azel_directory_ = ui_->azel_path_display_label->text ();
+  audiowav_enabled_ = ui_->audiowav_checkBox->isChecked ();
+  audiowav_transmitting_path_ = ui_->audio_path_display_label_transmitting->text ();
+  audiowav_rxfreqmsg_path_ = ui_->audio_path_display_label_rxfreqmsg->text ();
+  audiowav_watchdog_path_ = ui_->audio_path_display_label_watchdog->text ();
   enable_VHF_features_ = ui_->enable_VHF_features_check_box->isChecked ();
   decode_at_52s_ = ui_->decode_at_52s_check_box->isChecked ();
   twoPass_ = ui_->cbTwoPass->isChecked ();
@@ -2162,6 +2215,69 @@
   }
 }
 
+void Configuration::impl::on_audio_transmitting_path_select_push_button_clicked (bool /* checked */)
+{
+  if (Qt::ShiftModifier == QGuiApplication::keyboardModifiers ()) {
+      ui_->audio_path_display_label_transmitting->setText("None");
+	  return;
+  }
+  QFileDialog fd {this, tr ("Transmitting WAV File"), ui_->azel_path_display_label->text ()};
+  fd.setFileMode (QFileDialog::ExistingFile);
+  if (fd.exec ()) {
+    if (fd.selectedFiles ().size ()) {
+      ui_->audio_path_display_label_transmitting->setText(fd.selectedFiles().at(0));
+    }
+  }
+}
+
+void Configuration::impl::on_audio_rxfreqmsg_path_select_push_button_clicked (bool /* checked */)
+{
+  if (Qt::ShiftModifier == QGuiApplication::keyboardModifiers ()) {
+      ui_->audio_path_display_label_rxfreqmsg->setText("None");
+	  return;
+  }
+  QFileDialog fd {this, tr ("RxFreqMsg WAV File"), ui_->azel_path_display_label->text ()};
+  fd.setFileMode (QFileDialog::ExistingFile);
+  if (fd.exec ()) {
+    if (fd.selectedFiles ().size ()) {
+      ui_->audio_path_display_label_rxfreqmsg->setText(fd.selectedFiles().at(0));
+    }
+  }
+}
+
+void Configuration::impl::on_audio_watchdog_path_select_push_button_clicked (bool /* checked */)
+{
+  if (Qt::ShiftModifier == QGuiApplication::keyboardModifiers ()) {
+      ui_->audio_path_display_label_watchdog->setText("None");
+	  return;
+  }
+  QFileDialog fd {this, tr ("Watchdog WAV File"), ui_->azel_path_display_label->text ()};
+  fd.setFileMode (QFileDialog::ExistingFile);
+  if (fd.exec ()) {
+    if (fd.selectedFiles ().size ()) {
+      ui_->audio_path_display_label_watchdog->setText(fd.selectedFiles().at(0));
+    }
+  }
+}
+
+void Configuration::impl::on_audio_transmitting_path_test_push_button_clicked (bool /* checked */)
+{
+	audiowav_transmitting_path_ = ui_->audio_path_display_label_transmitting->text ();
+	QSound::play(ui_->audio_path_display_label_transmitting->text ());
+}
+
+void Configuration::impl::on_audio_rxfreqmsg_path_test_push_button_clicked (bool /* checked */)
+{
+	audiowav_rxfreqmsg_path_ = ui_->audio_path_display_label_rxfreqmsg->text ();
+	QSound::play(ui_->audio_path_display_label_rxfreqmsg->text ());
+}
+
+void Configuration::impl::on_audio_watchdog_path_test_push_button_clicked (bool /* checked */)
+{
+	audiowav_watchdog_path_ = ui_->audio_path_display_label_watchdog->text ();
+	QSound::play(ui_->audio_path_display_label_watchdog->text ());
+}
+
 bool Configuration::impl::have_rig (bool open_if_closed)
 {
   if (open_if_closed && !open_rig ())
Index: Configuration.hpp
===================================================================
--- Configuration.hpp	(revision 6335)
+++ Configuration.hpp	(working copy)
@@ -74,7 +74,8 @@
   QDir temp_dir () const;
   QDir doc_dir () const;
   QDir data_dir () const;
-
+  QDir sounds_dir () const;
+  
   QAudioDeviceInfo const& audio_input_device () const;
   AudioDevice::Channel audio_input_channel () const;
   QAudioDeviceInfo const& audio_output_device () const;
@@ -137,6 +138,10 @@
   QStringListModel const * macros () const;
   QDir save_directory () const;
   QDir azel_directory () const;
+  bool audiowav_enabled () const;
+  QString audiowav_transmitting_path () const;
+  QString audiowav_rxfreqmsg_path () const;
+  QString audiowav_watchdog_path () const;
   QString rig_name () const;
   Type2MsgGen type_2_msg_gen () const;
   QColor color_CQ () const;
Index: Configuration.ui
===================================================================
--- Configuration.ui	(revision 6335)
+++ Configuration.ui	(working copy)
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>670</width>
-    <height>564</height>
+    <height>628</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -20,7 +20,7 @@
       <string>Select tab to change configuration parameters.</string>
      </property>
      <property name="currentIndex">
-      <number>0</number>
+      <number>2</number>
      </property>
      <widget class="QWidget" name="general_tab">
       <attribute name="title">
@@ -1186,79 +1186,8 @@
       <attribute name="toolTip">
        <string>Audio interface settings</string>
       </attribute>
-      <layout class="QGridLayout" name="gridLayout_5">
-       <item row="5" column="0">
-        <spacer name="verticalSpacer_3">
-         <property name="orientation">
-          <enum>Qt::Vertical</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>20</width>
-           <height>40</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item row="1" column="0">
-        <widget class="Line" name="line_2">
-         <property name="orientation">
-          <enum>Qt::Horizontal</enum>
-         </property>
-        </widget>
-       </item>
-       <item row="2" column="0">
-        <widget class="QGroupBox" name="save_path_group_box">
-         <property name="title">
-          <string>Save Directory</string>
-         </property>
-         <layout class="QHBoxLayout" name="horizontalLayout_5">
-          <item>
-           <widget class="QLabel" name="save_path_label">
-            <property name="text">
-             <string>Loc&amp;ation:</string>
-            </property>
-            <property name="buddy">
-             <cstring>save_path_select_push_button</cstring>
-            </property>
-           </widget>
-          </item>
-          <item>
-           <widget class="QLabel" name="save_path_display_label">
-            <property name="sizePolicy">
-             <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-              <horstretch>1</horstretch>
-              <verstretch>0</verstretch>
-             </sizepolicy>
-            </property>
-            <property name="toolTip">
-             <string>Path to which .WAV files are saved.</string>
-            </property>
-            <property name="autoFillBackground">
-             <bool>false</bool>
-            </property>
-            <property name="styleSheet">
-             <string notr="true">background-color: rgb(255, 255, 255);</string>
-            </property>
-            <property name="text">
-             <string>TextLabel</string>
-            </property>
-           </widget>
-          </item>
-          <item>
-           <widget class="QPushButton" name="save_path_select_push_button">
-            <property name="toolTip">
-             <string>Click to select a different save directory for .WAV files.</string>
-            </property>
-            <property name="text">
-             <string>S&amp;elect</string>
-            </property>
-           </widget>
-          </item>
-         </layout>
-        </widget>
-       </item>
-       <item row="0" column="0">
+      <layout class="QVBoxLayout" name="verticalLayout_13">
+       <item>
         <widget class="QGroupBox" name="soundcard_group_box">
          <property name="title">
           <string>Soundcard</string>
@@ -1374,7 +1303,65 @@
          </layout>
         </widget>
        </item>
-       <item row="3" column="0">
+       <item>
+        <widget class="Line" name="line_2">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QGroupBox" name="save_path_group_box">
+         <property name="title">
+          <string>Save Directory</string>
+         </property>
+         <layout class="QHBoxLayout" name="horizontalLayout_5">
+          <item>
+           <widget class="QLabel" name="save_path_label">
+            <property name="text">
+             <string>Loc&amp;ation:</string>
+            </property>
+            <property name="buddy">
+             <cstring>save_path_select_push_button</cstring>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLabel" name="save_path_display_label">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+              <horstretch>1</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="toolTip">
+             <string>Path to which .WAV files are saved.</string>
+            </property>
+            <property name="autoFillBackground">
+             <bool>false</bool>
+            </property>
+            <property name="styleSheet">
+             <string notr="true">background-color: rgb(255, 255, 255);</string>
+            </property>
+            <property name="text">
+             <string>TextLabel</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QPushButton" name="save_path_select_push_button">
+            <property name="toolTip">
+             <string>Click to select a different save directory for .WAV files.</string>
+            </property>
+            <property name="text">
+             <string>S&amp;elect</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
         <widget class="QGroupBox" name="azel_path_group_box">
          <property name="minimumSize">
           <size>
@@ -1419,6 +1406,341 @@
          </layout>
         </widget>
        </item>
+       <item>
+        <widget class="QGroupBox" name="audio_path_group_box">
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>150</height>
+          </size>
+         </property>
+         <property name="title">
+          <string>Audio Files Directory and Soundcard</string>
+         </property>
+         <widget class="QLabel" name="audio_path_label_transmitting">
+          <property name="geometry">
+           <rect>
+            <x>7</x>
+            <y>63</y>
+            <width>71</width>
+            <height>16</height>
+           </rect>
+          </property>
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="toolTip">
+           <string>At beginning of transmit cycle</string>
+          </property>
+          <property name="text">
+           <string>Transmitting:</string>
+          </property>
+         </widget>
+         <widget class="QLabel" name="audio_path_display_label_transmitting">
+          <property name="geometry">
+           <rect>
+            <x>80</x>
+            <y>63</y>
+            <width>370</width>
+            <height>20</height>
+           </rect>
+          </property>
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+            <horstretch>1</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="toolTip">
+           <string>WAV File -- At beginning of transmit cycle
+Clear to not use message</string>
+          </property>
+          <property name="styleSheet">
+           <string notr="true">background-color: rgb(255, 255, 255);</string>
+          </property>
+          <property name="text">
+           <string>TextLabel</string>
+          </property>
+         </widget>
+         <widget class="QPushButton" name="audio_transmitting_path_select_push_button">
+          <property name="geometry">
+           <rect>
+            <x>460</x>
+            <y>60</y>
+            <width>75</width>
+            <height>23</height>
+           </rect>
+          </property>
+          <property name="toolTip">
+           <string>Select WAV File
+Shift click to clear</string>
+          </property>
+          <property name="text">
+           <string>Select</string>
+          </property>
+         </widget>
+         <widget class="QComboBox" name="audiowav_output_combo_box">
+          <property name="enabled">
+           <bool>false</bool>
+          </property>
+          <property name="geometry">
+           <rect>
+            <x>124</x>
+            <y>30</y>
+            <width>411</width>
+            <height>20</height>
+           </rect>
+          </property>
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+            <horstretch>1</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="toolTip">
+           <string>Unable to select output device at this time</string>
+          </property>
+         </widget>
+         <widget class="QLabel" name="audio_output_label">
+          <property name="enabled">
+           <bool>false</bool>
+          </property>
+          <property name="geometry">
+           <rect>
+            <x>80</x>
+            <y>30</y>
+            <width>38</width>
+            <height>20</height>
+           </rect>
+          </property>
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="toolTip">
+           <string>Unable to select output device at this time</string>
+          </property>
+          <property name="text">
+           <string>Ou&amp;tput:</string>
+          </property>
+          <property name="buddy">
+           <cstring>sound_output_combo_box</cstring>
+          </property>
+         </widget>
+         <widget class="QLabel" name="audio_path_label_txfreqmsg">
+          <property name="geometry">
+           <rect>
+            <x>7</x>
+            <y>93</y>
+            <width>71</width>
+            <height>16</height>
+           </rect>
+          </property>
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="toolTip">
+           <string>Message rcvd in Rx Freq window without your callsign</string>
+          </property>
+          <property name="text">
+           <string>Rx Freq Msg:</string>
+          </property>
+         </widget>
+         <widget class="QLabel" name="audio_path_display_label_rxfreqmsg">
+          <property name="geometry">
+           <rect>
+            <x>80</x>
+            <y>93</y>
+            <width>370</width>
+            <height>20</height>
+           </rect>
+          </property>
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+            <horstretch>1</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="toolTip">
+           <string>WAV File -- Message rcvd in Rx Freq window without your callsign
+Clear to not use message</string>
+          </property>
+          <property name="styleSheet">
+           <string notr="true">background-color: rgb(255, 255, 255);</string>
+          </property>
+          <property name="text">
+           <string>TextLabel</string>
+          </property>
+         </widget>
+         <widget class="QPushButton" name="audio_rxfreqmsg_path_select_push_button">
+          <property name="geometry">
+           <rect>
+            <x>460</x>
+            <y>90</y>
+            <width>75</width>
+            <height>23</height>
+           </rect>
+          </property>
+          <property name="toolTip">
+           <string>Select WAV File
+Shift click to clear</string>
+          </property>
+          <property name="text">
+           <string>Select</string>
+          </property>
+         </widget>
+         <widget class="QLabel" name="audio_path_label_watchdog">
+          <property name="geometry">
+           <rect>
+            <x>7</x>
+            <y>123</y>
+            <width>71</width>
+            <height>16</height>
+           </rect>
+          </property>
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="toolTip">
+           <string>When watchdog times out</string>
+          </property>
+          <property name="text">
+           <string>Watchdog:</string>
+          </property>
+         </widget>
+         <widget class="QLabel" name="audio_path_display_label_watchdog">
+          <property name="geometry">
+           <rect>
+            <x>80</x>
+            <y>123</y>
+            <width>370</width>
+            <height>20</height>
+           </rect>
+          </property>
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+            <horstretch>1</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="toolTip">
+           <string>WAV File -- When watchdog times out
+ Clear to not use message</string>
+          </property>
+          <property name="styleSheet">
+           <string notr="true">background-color: rgb(255, 255, 255);</string>
+          </property>
+          <property name="text">
+           <string>TextLabel</string>
+          </property>
+         </widget>
+         <widget class="QPushButton" name="audio_watchdog_path_select_push_button">
+          <property name="geometry">
+           <rect>
+            <x>460</x>
+            <y>120</y>
+            <width>75</width>
+            <height>23</height>
+           </rect>
+          </property>
+          <property name="toolTip">
+           <string>Select WAV File
+Shift click to clear</string>
+          </property>
+          <property name="text">
+           <string>Select</string>
+          </property>
+         </widget>
+         <widget class="QPushButton" name="audio_rxfreqmsg_path_test_push_button">
+          <property name="geometry">
+           <rect>
+            <x>540</x>
+            <y>90</y>
+            <width>75</width>
+            <height>23</height>
+           </rect>
+          </property>
+          <property name="toolTip">
+           <string>Test selected wav file</string>
+          </property>
+          <property name="text">
+           <string>Test</string>
+          </property>
+         </widget>
+         <widget class="QPushButton" name="audio_watchdog_path_test_push_button">
+          <property name="geometry">
+           <rect>
+            <x>540</x>
+            <y>120</y>
+            <width>75</width>
+            <height>23</height>
+           </rect>
+          </property>
+          <property name="toolTip">
+           <string>Test selected wav file</string>
+          </property>
+          <property name="text">
+           <string>Test</string>
+          </property>
+         </widget>
+         <widget class="QPushButton" name="audio_transmitting_path_test_push_button">
+          <property name="geometry">
+           <rect>
+            <x>540</x>
+            <y>60</y>
+            <width>75</width>
+            <height>23</height>
+           </rect>
+          </property>
+          <property name="toolTip">
+           <string>Test selected wav file</string>
+          </property>
+          <property name="text">
+           <string>Test</string>
+          </property>
+         </widget>
+         <widget class="QCheckBox" name="audiowav_checkBox">
+          <property name="geometry">
+           <rect>
+            <x>10</x>
+            <y>32</y>
+            <width>70</width>
+            <height>17</height>
+           </rect>
+          </property>
+          <property name="toolTip">
+           <string>Only enable if default soundcard is NOT the radio card</string>
+          </property>
+          <property name="text">
+           <string>Enable</string>
+          </property>
+         </widget>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer_3">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
       </layout>
      </widget>
      <widget class="QWidget" name="tx_macros_tab">
@@ -2344,7 +2666,6 @@
   </layout>
  </widget>
  <tabstops>
-  <tabstop>configuration_tabs</tabstop>
   <tabstop>callsign_line_edit</tabstop>
   <tabstop>grid_line_edit</tabstop>
   <tabstop>type_2_msg_gen_combo_box</tabstop>
@@ -2491,12 +2812,12 @@
   </connection>
  </connections>
  <buttongroups>
+  <buttongroup name="CAT_stop_bits_button_group"/>
   <buttongroup name="split_mode_button_group"/>
-  <buttongroup name="TX_mode_button_group"/>
+  <buttongroup name="CAT_handshake_button_group"/>
+  <buttongroup name="CAT_data_bits_button_group"/>
   <buttongroup name="PTT_method_button_group"/>
   <buttongroup name="TX_audio_source_button_group"/>
-  <buttongroup name="CAT_stop_bits_button_group"/>
-  <buttongroup name="CAT_handshake_button_group"/>
-  <buttongroup name="CAT_data_bits_button_group"/>
+  <buttongroup name="TX_mode_button_group"/>
  </buttongroups>
 </ui>
Index: mainwindow.cpp
===================================================================
--- mainwindow.cpp	(revision 6335)
+++ mainwindow.cpp	(working copy)
@@ -18,6 +18,7 @@
 #include <QVector>
 #include <QCursor>
 #include <QToolTip>
+#include <QSound>
 
 #include "revision_utils.hpp"
 #include "qt_helpers.hpp"
@@ -2002,6 +2003,10 @@
           if(b65 and m_modeTx!="JT65") on_pbTxMode_clicked();
           if(!b65 and m_modeTx=="JT65") on_pbTxMode_clicked();
         }
+		if (!decodedtext.string().contains(m_baseCall) && (!decodedtext.string().contains("CQ "))
+			&& m_config.audiowav_enabled()) {
+			QSound::play(m_config.audiowav_rxfreqmsg_path());
+		}
         m_QSOText=decodedtext;
       }
 
@@ -2592,7 +2597,9 @@
   if (m_mode.mid(0,4)!="WSPR" and m_mode!="Echo" and m_config.watchdog() and
       m_repeatMsg>=m_watchdogLimit-1) {
     on_stopTxButton_clicked();
-    msgBox("Runaway Tx watchdog");
+	if (m_config.audiowav_enabled()) {
+	  QSound::play(m_config.audiowav_watchdog_path());
+	}
     m_repeatMsg=0;
   }
   if(m_mode.mid(0,4)=="WSPR" and m_ntr==-1 and !m_tuneup) {
@@ -4251,6 +4258,9 @@
 void MainWindow::transmit (double snr)
 {
   double toneSpacing=0.0;
+  if (m_config.audiowav_enabled()) {
+	  QSound::play(m_config.audiowav_transmitting_path());
+  }
   if (m_modeTx == "JT65") {
     if(m_nSubMode==0) toneSpacing=11025.0/4096.0;
     if(m_nSubMode==1) toneSpacing=2*11025.0/4096.0;
