OSDN Git Service

[UI][Qt] Add "Sound" Menu.
authorK.Ohta <whatisthis.sowhat@gmail.com>
Wed, 14 Jan 2015 15:18:55 +0000 (00:18 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Wed, 14 Jan 2015 15:18:55 +0000 (00:18 +0900)
source/src/qt/common/sdl_sound.cpp
source/src/qt/gui/CMakeLists.txt
source/src/qt/gui/commonclasses.h
source/src/qt/gui/mainwidget.h
source/src/qt/gui/menu_main.cpp
source/src/qt/gui/menu_sound.cpp [new file with mode: 0644]

index fa7fb46..ba839f2 100644 (file)
@@ -358,7 +358,7 @@ void EMU::mute_sound()
 void EMU::start_rec_sound()
 {
    
-
+        LockVM();
        if(!now_rec_sound) {
                // create file name
                //SYSTEMTIME sTime;
@@ -387,10 +387,12 @@ void EMU::start_rec_sound()
                        delete rec;
                }
        }
+        UnlockVM();
 }
 
 void EMU::stop_rec_sound()
 {
+        LockVM();
        if(now_rec_sound) {
                if(rec_bytes == 0) {
                        rec->Fclose();
@@ -419,6 +421,7 @@ void EMU::stop_rec_sound()
                delete rec;
                now_rec_sound = false;
        }
+        UnlockVM();
 }
 
 void EMU::restart_rec_sound()
index f1b979c..29c34cc 100644 (file)
@@ -11,6 +11,7 @@ add_library(qt_gui
          menu_disk.cpp
          menu_cmt.cpp
          menu_main.cpp
+         menu_sound.cpp
          display_statusbar.cpp
          ${s_qt_gui_headers_MOC}
 )
index 1bc010c..1e4a393 100644 (file)
@@ -78,6 +78,10 @@ signals:
      int sig_eject_cmt(void);
      int sig_recent_cmt(int);
      int sig_set_write_protect_cmt(bool);
+     int sig_freq(int);
+     int sig_latency(int);
+     int sig_sounddevice(int);
+     int sig_set_dipsw(int, bool);
 public slots:
      void set_boot_mode(void);
      void set_cputype(void);
@@ -95,6 +99,9 @@ public slots:
      void start_insert_play_cmt(void);
      void eject_cmt(void);
      void on_recent_cmt(void);
+   
+     void on_set_freq(void);
+     void on_set_latency(void);
  public:
    void setValue1(int v) {bindValue = v;}
    int getValue1(void) {return bindValue;}
index 78b2f67..ad1cfb1 100644 (file)
@@ -65,6 +65,8 @@ class Ui_MainWindow : public QMainWindow
   void connectActions_ControlMenu(void);
   void retranslateControlMenu(const char *SpecialResetTitle,  bool WithSpecialReset);
   void ConfigFloppyMenu(void);
+  void ConfigSoundMenu(void);
+  void CreateSoundMenu(void);
 
    void OnWindowResize(void);
    void OnWindowMove(void);
@@ -79,6 +81,8 @@ class Ui_MainWindow : public QMainWindow
    void retranslateCMTMenu(void);
    void ConfigCMTMenu(void);
 
+   void retranslateSoundMenu(void);
+
   class Action_Control *actionReset;
   class Action_Control *actionSpecial_Reset;
   class Action_Control *actionExit_Emulator;
@@ -185,21 +189,12 @@ class Ui_MainWindow : public QMainWindow
     class Action_Control *actionCapture_Screen;
     
     class Action_Control *actionAbout;
+    QActionGroup   *actionGroup_Sound_Freq;
+    QActionGroup   *actionGroup_Sound_Latency;
     
-    class Action_Control *action2000Hz;
-    class Action_Control *action4000Hz;
-    class Action_Control *action8000Hz;
-    class Action_Control *action11025Hz;
-    class Action_Control *action22050Hz;
-    class Action_Control *action44100Hz;
-    class Action_Control *action48000Hz;
-    class Action_Control *action96000Hz;
+    class Action_Control *action_Freq[8];
     
-    class Action_Control *action50ms;
-    class Action_Control *action100ms;
-    class Action_Control *action200ms;
-    class Action_Control *action300ms;
-    class Action_Control *action400ms;
+    class Action_Control *action_Latency[6];
     
     class Action_Control *actionStart_Record;
     class Action_Control *actionStop_Record;
@@ -252,7 +247,7 @@ class Ui_MainWindow : public QMainWindow
     QMenu *menuSound;
     QMenu *menuOutput_Frequency;
     QMenu *menuSound_Latency;
-    QMenu *menuFrequency;
+    QMenu *menuMachine;
     QMenu *menuRecord;
     QMenu *menuRecord_sound;
     QMenu *menuRecoad_as_movie;
@@ -378,7 +373,10 @@ public:
 #endif
    int set_d88_slot(int drive, int num);
    int set_recent_disk(int, int);
-
+   void start_record_sound(bool rec);
+   void set_freq(int);
+   void set_latency(int);
+   void set_sound_device(int);
 signals:
    int on_boot_mode(int);
    int on_cpu_type(int);
index a405eb3..0c80475 100644 (file)
@@ -37,7 +37,8 @@ void Ui_MainWindow::setupUi(void)
        ConfigControlMenu();
         ConfigFloppyMenu();
         ConfigCMTMenu();
-       
+       ConfigSoundMenu();
+
        
        //actionInsert_QD0 = new QAction(MainWindow);
         //actionInsert_QD0->setObjectName(QString::fromUtf8("actionInsert_QD0"));
@@ -79,53 +80,7 @@ void Ui_MainWindow::setupUi(void)
         actionAbout = new Action_Control(this);
         actionAbout->setObjectName(QString::fromUtf8("actionAbout"));
        
-        action2000Hz = new Action_Control(this);
-        action2000Hz->setObjectName(QString::fromUtf8("action2000Hz"));
-        action2000Hz->setCheckable(true);
-        action4000Hz = new Action_Control(this);
-        action4000Hz->setObjectName(QString::fromUtf8("action4000Hz"));
-        action4000Hz->setCheckable(true);
-        action8000Hz = new Action_Control(this);
-        action8000Hz->setObjectName(QString::fromUtf8("action8000Hz"));
-        action8000Hz->setCheckable(true);
-        action11025Hz = new Action_Control(this);
-        action11025Hz->setObjectName(QString::fromUtf8("action11025Hz"));
-        action11025Hz->setCheckable(true);
-        action22050Hz = new Action_Control(this);
-        action22050Hz->setObjectName(QString::fromUtf8("action22050Hz"));
-        action22050Hz->setCheckable(true);
-        action44100Hz = new Action_Control(this);
-        action44100Hz->setObjectName(QString::fromUtf8("action44100Hz"));
-        action44100Hz->setCheckable(true);
-        action48000Hz = new Action_Control(this);
-        action48000Hz->setObjectName(QString::fromUtf8("action48000Hz"));
-        action48000Hz->setCheckable(true);
-        action96000Hz = new Action_Control(this);
-        action96000Hz->setObjectName(QString::fromUtf8("action96000Hz"));
-        action96000Hz->setCheckable(true);
        
-        action50ms = new Action_Control(this);
-        action50ms->setObjectName(QString::fromUtf8("action50ms"));
-        action50ms->setCheckable(true);
-        action100ms = new Action_Control(this);
-        action100ms->setObjectName(QString::fromUtf8("action100ms"));
-        action100ms->setCheckable(true);
-        action100ms->setChecked(false);
-        action200ms = new Action_Control(this);
-        action200ms->setObjectName(QString::fromUtf8("action200ms"));
-        action300ms = new Action_Control(this);
-        action300ms->setObjectName(QString::fromUtf8("action300ms"));
-        action300ms->setCheckable(true);
-        action400ms = new Action_Control(this);
-        action400ms->setObjectName(QString::fromUtf8("action400ms"));
-        action400ms->setCheckable(true);
-       
-        actionStart_Record = new Action_Control(this);
-        actionStart_Record->setObjectName(QString::fromUtf8("actionStart_Record"));
-        actionStart_Record->setCheckable(true);
-        actionStop_Record = new Action_Control(this);
-        actionStop_Record->setObjectName(QString::fromUtf8("actionStop_Record"));
-        actionStop_Record->setCheckable(true);
         actionStart_Record_Movie = new Action_Control(this);
         actionStart_Record_Movie->setObjectName(QString::fromUtf8("actionStart_Record_Movie"));
         actionStart_Record_Movie->setCheckable(true);
@@ -172,20 +127,17 @@ void Ui_MainWindow::setupUi(void)
         menuScreen->setObjectName(QString::fromUtf8("menuScreen"));
         menuStretch_Mode = new QMenu(menuScreen);
         menuStretch_Mode->setObjectName(QString::fromUtf8("menuStretch_Mode"));
-        menuSound = new QMenu(menubar);
-        menuSound->setObjectName(QString::fromUtf8("menuSound"));
-        menuOutput_Frequency = new QMenu(menuSound);
-        menuOutput_Frequency->setObjectName(QString::fromUtf8("menuOutput_Frequency"));
-        menuSound_Latency = new QMenu(menuSound);
-        menuSound_Latency->setObjectName(QString::fromUtf8("menuSound_Latency"));
-        menuFrequency = new QMenu(menubar);
-        menuFrequency->setObjectName(QString::fromUtf8("menuFrequency"));
-        menuRecord = new QMenu(menubar);
-        menuRecord->setObjectName(QString::fromUtf8("menuRecord"));
-        menuRecord_sound = new QMenu(menuRecord);
-        menuRecord_sound->setObjectName(QString::fromUtf8("menuRecord_sound"));
-        menuRecoad_as_movie = new QMenu(menuRecord);
-        menuRecoad_as_movie->setObjectName(QString::fromUtf8("menuRecoad_as_movie"));
+
+        menuMachine = new QMenu(menubar);
+        menuMachine->setObjectName(QString::fromUtf8("menuMachine"));
+       //        menuMachine_SoundDevice = new QMenu(menuScreen);
+        //menuMachine_SoundDevice->setObjectName(QString::fromUtf8("menuMachine_SoundDevice"));
+
+       menuSound = new QMenu(menubar);
+       menuSound->setObjectName(QString::fromUtf8("menuSound"));
+
+//        menuRecoad_as_movie = new QMenu(menuRecord);
+//        menuRecoad_as_movie->setObjectName(QString::fromUtf8("menuRecoad_as_movie"));
         menuEmulator = new QMenu(menubar);
         menuEmulator->setObjectName(QString::fromUtf8("menuEmulator"));
         menuHELP = new QMenu(menubar);
@@ -200,10 +152,10 @@ void Ui_MainWindow::setupUi(void)
         menubar->addAction(menuFD[1]->menuAction());
        //        menubar->addAction(menuQD0->menuAction());
         menubar->addAction(menuCMT->menuAction());
-        menubar->addAction(menuFrequency->menuAction());
+        menubar->addAction(menuMachine->menuAction());
         menubar->addAction(menuSound->menuAction());
         menubar->addAction(menuScreen->menuAction());
-        menubar->addAction(menuRecord->menuAction());
+//        menubar->addAction(menuRecord->menuAction());
         menubar->addAction(menuEmulator->menuAction());
         menubar->addAction(menuHELP->menuAction());
        
@@ -219,17 +171,17 @@ void Ui_MainWindow::setupUi(void)
        //menuWrite_Protection_QD0->addAction(actionProtection_ON_QD0);
         //menuWrite_Protection_QD0->addAction(actionProtection_OFF_QD0);
 
-       menuCMT->addAction(actionInsert_CMT);
-        menuCMT->addAction(actionEject_CMT);
-        menuCMT->addSeparator();
-        menuCMT->addAction(actionPlay_Start);
-        menuCMT->addAction(actionPlay_Stop);
-        menuCMT->addSeparator();
-        menuCMT->addAction(actionRecording);
-        menuCMT->addSeparator();
-        menuCMT->addAction(menuWrite_Protection_CMT->menuAction());
-        menuWrite_Protection_CMT->addAction(actionProtection_ON_CMT);
-        menuWrite_Protection_CMT->addAction(actionProtection_OFF_CMT);
+       //      menuCMT->addAction(actionInsert_CMT);
+        //menuCMT->addAction(actionEject_CMT);
+        //menuCMT->addSeparator();
+        //menuCMT->addAction(actionPlay_Start);
+        //menuCMT->addAction(actionPlay_Stop);
+        //menuCMT->addSeparator();
+        //menuCMT->addAction(actionRecording);
+        //menuCMT->addSeparator();
+        //menuCMT->addAction(menuWrite_Protection_CMT->menuAction());
+        //menuWrite_Protection_CMT->addAction(actionProtection_ON_CMT);
+        //menuWrite_Protection_CMT->addAction(actionProtection_OFF_CMT);
        
         menuScreen->addAction(actionZoom);
         menuScreen->addAction(actionDisplay_Mode);
@@ -241,34 +193,18 @@ void Ui_MainWindow::setupUi(void)
         menuStretch_Mode->addAction(actionDot_by_Dot);
         menuStretch_Mode->addAction(actionKeep_Aspect);
         menuStretch_Mode->addAction(actionFill_Display);
+
+       CreateSoundMenu();
        
-        menuSound->addAction(menuOutput_Frequency->menuAction());
-        menuSound->addAction(menuSound_Latency->menuAction());
-       
-        menuOutput_Frequency->addAction(action2000Hz);
-        menuOutput_Frequency->addAction(action4000Hz);
-        menuOutput_Frequency->addAction(action8000Hz);
-        menuOutput_Frequency->addAction(action11025Hz);
-        menuOutput_Frequency->addAction(action22050Hz);
-        menuOutput_Frequency->addAction(action44100Hz);
-        menuOutput_Frequency->addAction(action48000Hz);
-        menuOutput_Frequency->addAction(action96000Hz);
-       
-        menuSound_Latency->addAction(action50ms);
-        menuSound_Latency->addAction(action100ms);
-        menuSound_Latency->addAction(action200ms);
-        menuSound_Latency->addAction(action300ms);
-        menuSound_Latency->addAction(action400ms);
-       
-        menuRecord->addAction(actionCapture_Screen);
-        menuRecord->addSeparator();
-        menuRecord->addAction(menuRecoad_as_movie->menuAction());
-        menuRecord->addSeparator();
-        menuRecord->addAction(menuRecord_sound->menuAction());
-        menuRecord_sound->addAction(actionStart_Record);
-        menuRecord_sound->addAction(actionStop_Record);
-        menuRecoad_as_movie->addAction(actionStart_Record_Movie);
-        menuRecoad_as_movie->addAction(actionStop_Record_Movie);
+//        menuRecord->addAction(actionCapture_Screen);
+//        menuRecord->addSeparator();
+//        menuRecord->addAction(menuRecoad_as_movie->menuAction());
+//        menuRecord->addSeparator();
+//        menuRecord->addAction(menuRecord_sound->menuAction());
+//        menuRecord_sound->addAction(actionStart_Record);
+//        menuRecord_sound->addAction(actionStop_Record);
+//        menuRecoad_as_movie->addAction(actionStart_Record_Movie);
+//        menuRecoad_as_movie->addAction(actionStop_Record_Movie);
 
        menuHELP->addAction(actionAbout);
         menuHELP->addSeparator();
@@ -278,20 +214,6 @@ void Ui_MainWindow::setupUi(void)
         QObject::connect(actionExit_Emulator, SIGNAL(destroyed()), MainWindow, SLOT(close()));
 
 
-       QObject::connect(action100ms, SIGNAL(triggered()), action100ms, SLOT(trigger()));
-        QObject::connect(action200ms, SIGNAL(triggered()), action200ms, SLOT(trigger()));
-        QObject::connect(action300ms, SIGNAL(triggered()), action300ms, SLOT(trigger()));
-        QObject::connect(action400ms, SIGNAL(triggered()), action400ms, SLOT(trigger()));
-        QObject::connect(action50ms, SIGNAL(triggered()), action50ms, SLOT(trigger()));
-       
-        QObject::connect(action2000Hz, SIGNAL(triggered()), action2000Hz, SLOT(trigger()));
-        QObject::connect(action4000Hz, SIGNAL(triggered()), action4000Hz, SLOT(trigger()));
-        QObject::connect(action8000Hz, SIGNAL(triggered()), action8000Hz, SLOT(trigger()));
-        QObject::connect(action11025Hz, SIGNAL(triggered()), action11025Hz, SLOT(trigger()));
-        QObject::connect(action22050Hz, SIGNAL(triggered()), action22050Hz, SLOT(trigger()));
-        QObject::connect(action44100Hz, SIGNAL(triggered()), action44100Hz, SLOT(trigger()));
-        QObject::connect(action48000Hz, SIGNAL(triggered()), action48000Hz, SLOT(trigger()));
-        QObject::connect(action96000Hz, SIGNAL(triggered()), action96000Hz, SLOT(trigger()));
 
        QObject::connect(this, SIGNAL(destroyed()), this, SLOT(on_actionExit_triggered()));
        QObject::connect(MainWindow, SIGNAL(destroyed()), this, SLOT(on_actionExit_triggered()));
@@ -305,14 +227,10 @@ void Ui_MainWindow::retranslateUi(void)
   retranslateFloppyMenu(0, 0);
   retranslateFloppyMenu(1, 1);
   retranslateCMTMenu();
+  retranslateSoundMenu();
    
   this->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0, QApplication::UnicodeUTF8));
 
-  //actionInsert_QD0->setText(QApplication::translate("MainWindow", "Insert", 0, QApplication::UnicodeUTF8));
-  //actionEject_QD0->setText(QApplication::translate("MainWindow", "Eject", 0, QApplication::UnicodeUTF8));
-  //actionResent_Images_QD0->setText(QApplication::translate("MainWindow", "Resent Images", 0, QApplication::UnicodeUTF8));
-  //actionProtection_ON_QD0->setText(QApplication::translate("MainWindow", "Protection ON", 0, QApplication::UnicodeUTF8));
-  //actionProtection_OFF_QD0->setText(QApplication::translate("MainWindow", "Protection OFF", 0, QApplication::UnicodeUTF8));
 #if defined(USE_TAPE)
   actionInsert_CMT->setText(QApplication::translate("MainWindow", "Insert CMT", 0, QApplication::UnicodeUTF8));
   actionEject_CMT->setText(QApplication::translate("MainWindow", "Eject CMT", 0, QApplication::UnicodeUTF8));
@@ -335,26 +253,9 @@ void Ui_MainWindow::retranslateUi(void)
   
   actionAbout->setText(QApplication::translate("MainWindow", "About...", 0, QApplication::UnicodeUTF8));
   
-  action2000Hz->setText(QApplication::translate("MainWindow", "2000Hz", 0, QApplication::UnicodeUTF8));
-  action4000Hz->setText(QApplication::translate("MainWindow", "4000Hz", 0, QApplication::UnicodeUTF8));
-  action8000Hz->setText(QApplication::translate("MainWindow", "8000Hz", 0, QApplication::UnicodeUTF8));
-  action11025Hz->setText(QApplication::translate("MainWindow", "11025Hz", 0, QApplication::UnicodeUTF8));
-  action22050Hz->setText(QApplication::translate("MainWindow", "22050Hz", 0, QApplication::UnicodeUTF8));
-  action44100Hz->setText(QApplication::translate("MainWindow", "44100Hz", 0, QApplication::UnicodeUTF8));
-  action48000Hz->setText(QApplication::translate("MainWindow", "48000Hz", 0, QApplication::UnicodeUTF8));
-  action96000Hz->setText(QApplication::translate("MainWindow", "96000Hz", 0, QApplication::UnicodeUTF8));
-  
-       action50ms->setText(QApplication::translate("MainWindow", "50ms", 0, QApplication::UnicodeUTF8));
-        action100ms->setText(QApplication::translate("MainWindow", "100ms", 0, QApplication::UnicodeUTF8));
-        action200ms->setText(QApplication::translate("MainWindow", "200ms", 0, QApplication::UnicodeUTF8));
-        action300ms->setText(QApplication::translate("MainWindow", "300ms", 0, QApplication::UnicodeUTF8));
-        action400ms->setText(QApplication::translate("MainWindow", "400ms", 0, QApplication::UnicodeUTF8));
 
-       actionStart_Record->setText(QApplication::translate("MainWindow", "Start Record", 0, QApplication::UnicodeUTF8));
-        actionStop_Record->setText(QApplication::translate("MainWindow", "Stop Record", 0, QApplication::UnicodeUTF8));
-
-       actionStart_Record_Movie->setText(QApplication::translate("MainWindow", "Start Record Movie", 0, QApplication::UnicodeUTF8));
-        actionStop_Record_Movie->setText(QApplication::translate("MainWindow", "Stop Record Movie", 0, QApplication::UnicodeUTF8));
+  //   actionStart_Record_Movie->setText(QApplication::translate("MainWindow", "Start Record Movie", 0, QApplication::UnicodeUTF8));
+  //      actionStop_Record_Movie->setText(QApplication::translate("MainWindow", "Stop Record Movie", 0, QApplication::UnicodeUTF8));
 
    
        //        menuQD0->setTitle(QApplication::translate("MainWindow", "QD", 0, QApplication::UnicodeUTF8));
@@ -364,17 +265,13 @@ void Ui_MainWindow::retranslateUi(void)
         menuScreen->setTitle(QApplication::translate("MainWindow", "Screen", 0, QApplication::UnicodeUTF8));
         menuStretch_Mode->setTitle(QApplication::translate("MainWindow", "Stretch Mode", 0, QApplication::UnicodeUTF8));
        
-        menuSound->setTitle(QApplication::translate("MainWindow", "Sound", 0, QApplication::UnicodeUTF8));
-        menuOutput_Frequency->setTitle(QApplication::translate("MainWindow", "Output Frequency", 0, QApplication::UnicodeUTF8));
-        menuSound_Latency->setTitle(QApplication::translate("MainWindow", "Sound Latency", 0, QApplication::UnicodeUTF8));
-        menuFrequency->setTitle(QApplication::translate("MainWindow", "Machine", 0, QApplication::UnicodeUTF8));
        
-        menuRecord->setTitle(QApplication::translate("MainWindow", "Record", 0, QApplication::UnicodeUTF8));
-        menuRecord_sound->setTitle(QApplication::translate("MainWindow", "Record sound", 0, QApplication::UnicodeUTF8));
-        menuRecoad_as_movie->setTitle(QApplication::translate("MainWindow", "Recoad as movie", 0, QApplication::UnicodeUTF8));
+//        menuRecord->setTitle(QApplication::translate("MainWindow", "Record", 0, QApplication::UnicodeUTF8));
+//        menuRecoad_as_movie->setTitle(QApplication::translate("MainWindow", "Recoad as movie", 0, QApplication::UnicodeUTF8));
        
         menuEmulator->setTitle(QApplication::translate("MainWindow", "Emulator", 0, QApplication::UnicodeUTF8));
-       
+  menuMachine->setTitle(QApplication::translate("MainWindow", "Machine", 0, QApplication::UnicodeUTF8));
+  
         menuHELP->setTitle(QApplication::translate("MainWindow", "HELP", 0, QApplication::UnicodeUTF8));
 } // retranslateUi
 
diff --git a/source/src/qt/gui/menu_sound.cpp b/source/src/qt/gui/menu_sound.cpp
new file mode 100644 (file)
index 0000000..b7a4184
--- /dev/null
@@ -0,0 +1,185 @@
+/*
+ * Common Source Project/ Qt
+ * (C) 2015 K.Ohta <whatisthis.sowhat _at_ gmail.com>
+ *  Qt: Menu->Sound Implementations.
+ *  History: Jan 14, 2015 : Initial
+ */
+
+#include "menuclasses.h"
+
+QT_BEGIN_NAMESPACE
+
+const int s_freq_table[8] = {
+               2000, 4000, 8000, 11025, 22050, 44100,
+#ifdef OVERRIDE_SOUND_FREQ_48000HZ
+               OVERRIDE_SOUND_FREQ_48000HZ,
+#else
+               48000,
+#endif
+               96000,
+};
+const double s_late_table[5] = {0.05, 0.1, 0.2, 0.3, 0.4};
+
+void Object_Menu_Control::on_set_freq(void) {
+   emit sig_freq(s_num);
+}
+
+void Object_Menu_Control::on_set_latency(void) {
+   emit sig_latency(s_num);
+}
+
+void Ui_MainWindow::set_latency(int num)
+{
+   if((num < 0) || (num > 4)) return;
+   config.sound_latency = num;
+   if(emu) {
+      emu->LockVM();
+      emu->update_config();
+      emu->UnlockVM();
+   }
+}
+
+void Ui_MainWindow::set_freq(int num)
+{
+   if((num < 0) || (num > 7)) return;
+   config.sound_frequency = num;
+   if(emu) {
+      emu->LockVM();
+      emu->update_config();
+      emu->UnlockVM();
+   }
+}
+
+void Ui_MainWindow::set_sound_device(int num)
+{
+#ifdef USE_SOUND_DEVICE_TYPE
+   if((num < 0) || (num >7)) return;
+   config.sound_device_type = num;
+   if(emu) {
+      emu->LockVM();
+      emu->update_config();
+      emu->UnlockVM();
+   }
+#endif
+}
+
+   
+void Ui_MainWindow::start_record_sound(bool start)
+{
+   if(emu) {
+       if(start) {
+          emu->start_rec_sound();
+       } else {
+          emu->stop_rec_sound();
+       }
+   }
+}
+
+      
+
+void Ui_MainWindow::CreateSoundMenu(void)
+{
+  int i;
+//  menuRecord = new QMenu(menuSound);
+//  menuRecord->setObjectName(QString::fromUtf8("menuRecord_Sound"));
+  
+  menuSound->addAction(actionStart_Record);
+  menuSound->addSeparator();
+  menuOutput_Frequency = new QMenu(menuSound);
+  menuOutput_Frequency->setObjectName(QString::fromUtf8("menuOutput_Frequency"));
+  menuSound->addAction(menuOutput_Frequency->menuAction());
+  menuSound->addSeparator();
+  for(i = 0; i < 8; i++) {
+    menuOutput_Frequency->addAction(action_Freq[i]);
+    connect(action_Freq[i], SIGNAL(triggered()),
+           action_Freq[i]->binds, SLOT(on_set_freq()));
+    connect(action_Freq[i]->binds, SIGNAL(sig_freq(int)),
+           this, SLOT(set_freq(int)));
+
+  }
+  menuSound_Latency = new QMenu(menuSound);
+  menuSound_Latency->setObjectName(QString::fromUtf8("menuSound_Latency"));
+  menuSound->addAction(menuSound_Latency->menuAction());
+  for(i = 0; i < 5; i++) {
+    menuSound_Latency->addAction(action_Latency[i]);
+  }
+} 
+
+void Ui_MainWindow::ConfigSoundMenu(void)
+{
+  int i;
+  QString tmps;
+  double dval;
+  int freq = 48000;
+
+
+  actionGroup_Sound_Freq = new QActionGroup(this);
+  actionGroup_Sound_Freq->setExclusive(true);
+  
+  for(i = 0; i < 8; i++) {
+          
+           action_Freq[i] = new Action_Control(this);
+           tmps.setNum(s_freq_table[i]);
+           tmps = QString::fromUtf8("action") + tmps + QString::fromUtf8("Hz");
+           action_Freq[i]->setObjectName(tmps);
+           action_Freq[i]->setCheckable(true);
+           action_Freq[i]->binds->setNumber(i);
+           if(i == config.sound_frequency) {
+             action_Freq[i]->setChecked(true);
+             freq = s_freq_table[i];
+           }
+           actionGroup_Sound_Freq->addAction(action_Freq[i]);
+       }
+        actionGroup_Sound_Latency = new QActionGroup(this);
+       actionGroup_Sound_Latency->setExclusive(true);
+
+       for(i = 0; i < 5; i++) {
+           action_Latency[i] = new Action_Control(this);
+           dval = s_late_table[i];
+           dval = dval * 1000.0;
+           tmps.setNum((int)dval);
+           tmps = QString::fromUtf8("action") + tmps + QString::fromUtf8("ms");
+           action_Latency[i]->setObjectName(tmps);
+           action_Latency[i]->setCheckable(true);
+           action_Latency[i]->binds->setNumber(i);
+           if(i == config.sound_latency) action_Latency[i]->setChecked(true);
+           actionGroup_Sound_Latency->addAction(action_Latency[i]);
+       }
+       
+
+        actionStart_Record = new Action_Control(this);
+        actionStart_Record->setObjectName(QString::fromUtf8("actionStart_Record"));
+        actionStart_Record->setCheckable(true);
+       actionStart_Record->setChecked(false);
+       connect(actionStart_Record, SIGNAL(toggled(bool)), this, SLOT(start_record_sound(bool)));
+
+}
+
+void Ui_MainWindow::retranslateSoundMenu(void)
+{
+  int i;
+  QString tmps;
+  double dval;
+  
+  for(i = 0; i < 8; i++) {
+    tmps.setNum(s_freq_table[i]);
+    tmps = tmps + QApplication::translate("MainWindow", "Hz", 0, QApplication::UnicodeUTF8);
+    action_Freq[i]->setText(tmps);
+  }
+  for(i = 0; i < 5; i++) {
+    dval = s_late_table[i];
+    dval = dval * 1000.0;
+    tmps.setNum((int)dval);
+    tmps = tmps + QApplication::translate("MainWindow", "mSec", 0, QApplication::UnicodeUTF8);
+    action_Latency[i]->setText(tmps);
+  }
+  actionStart_Record->setText(QApplication::translate("MainWindow", "Start Recording sound", 0, QApplication::UnicodeUTF8));
+
+  menuSound->setTitle(QApplication::translate("MainWindow", "Sound", 0, QApplication::UnicodeUTF8));
+  menuOutput_Frequency->setTitle(QApplication::translate("MainWindow", "Output Frequency", 0, QApplication::UnicodeUTF8));
+  menuSound_Latency->setTitle(QApplication::translate("MainWindow", "Sound Latency", 0, QApplication::UnicodeUTF8));
+
+
+}
+  
+QT_END_NAMESPACE