2
0
Dave Schuyler 24 жил өмнө
parent
commit
f09691b1ce

+ 17 - 27
panda/src/audio/Sources.pp

@@ -9,37 +9,27 @@
 
   #define TARGET audio
   #define LOCAL_LIBS putil ipc gui
-  
-  #define COMBINED_SOURCES $[TARGET]_composite1.cxx $[TARGET]_composite2.cxx 
 
   #define SOURCES \
-    audio_manager.I audio_manager.h \
-    audio_midi.h \
-    audio_pool.I audio_pool.h \
-    audio_trait.h \
-    config_audio.h \
-    audio_mikmod_traits.cxx audio_mikmod_traits.h \
-    audio_win_traits.I audio_win_traits.cxx audio_win_traits.h \
-    audio_null_traits.I audio_null_traits.h \
-    audio_linux_traits.I audio_linux_traits.cxx audio_linux_traits.h \
-    audio_sound.I audio_sound.h \
-    audio_gui_functor.h \
-    $[if $[USE_RAD_MSS], audio_rad_mss_traits.I audio_rad_mss_traits.cxx audio_rad_mss_traits.h,]
-    
-  #define INCLUDED_SOURCES \
-     config_audio.cxx audio_gui_functor.cxx \
-     audio_trait.cxx audio_pool.cxx audio_midi.cxx audio_manager.cxx \
-     audio_null_traits.cxx audio_sound.cxx audio_midi.cxx 
+    config_audio.cxx config_audio.h \
+    audioManager.I audioManager.cxx audioManager.h \
+    audioSound.cxx audioSound.h \
+    $[if $[HAVE_RAD_MSS], \
+      milesAudioManager.cxx milesAudioManager.h \
+      milesAudioSound.I milesAudioSound.cxx milesAudioSound.h \
+    ,] \
+    audio_gui_functor.h audio_gui_functor.cxx
 
   #define INSTALL_HEADERS \
-    audio.h audio_manager.h \
-    audio_pool.I audio_pool.h \
-    audio_trait.h audio_mikmod_traits.h \
-    audio_win_traits.I audio_win_traits.h \
-    audio_null_traits.I audio_null_traits.h \
-    audio_linux_traits.I audio_linux_traits.h \
-    config_audio.h audio_manager.I audio_sound.h audio_sound.I audio_gui_functor.h \
-    $[if $[USE_RAD_MSS], audio_rad_mss_traits.I audio_rad_mss_traits.h,]
+    config_audio.h \
+    audio.h \
+    audioManager.h audioManager.I \
+    audioSound.h \
+    $[if $[HAVE_RAD_MSS], \
+      milesAudioManager.h \
+      milesAudioSound.h milesAudioSound.I \
+    ,] \
+    audio_gui_functor.h
 
   #define IGATESCAN audio.h
 #end lib_target

+ 2 - 4
panda/src/audio/audio.h

@@ -19,10 +19,8 @@
 #ifndef __AUDIO_H__
 #define __AUDIO_H__
 
-#include "audio_trait.h"
-#include "audio_sound.h"
-#include "audio_manager.h"
-#include "audio_pool.h"
+#include "audioSound.h"
+#include "audioManager.h"
 #include "audio_gui_functor.h"
 
 #endif /* __AUDIO_H__ */

+ 6 - 4
panda/src/audio/audio_gui_functor.cxx

@@ -28,11 +28,13 @@ AudioGuiFunctor::~AudioGuiFunctor() {
   _prev.clear();
 }
 
-#include "audio_manager.h"
+#include "audioManager.h"
 
 void AudioGuiFunctor::doit(GuiBehavior* b) {
-  if (_sound != (AudioSound*)0L)
-    AudioManager::play(_sound);
-  if (_prev != (GuiBehavior::BehaviorFunctor*)0L)
+  if (_sound) {
+    _sound->play();
+  }
+  if (_prev) {
     _prev->doit(b);
+  }
 }

+ 1 - 1
panda/src/audio/audio_gui_functor.h

@@ -20,7 +20,7 @@
 #define __AUDIO_GUI_FUNCTOR_H__
 
 #include <guiBehavior.h>
-#include "audio_sound.h"
+#include "audioSound.h"
 
 class EXPCL_PANDA AudioGuiFunctor : public GuiBehavior::BehaviorFunctor {
 protected:

+ 36 - 74
panda/src/audio/config_audio.cxx

@@ -17,7 +17,7 @@
 ////////////////////////////////////////////////////////////////////
 
 #include "config_audio.h"
-#include "audio_sound.h"
+#include "audioSound.h"
 #include "audio_gui_functor.h"
 #include <dconfig.h>
 #include <filename.h>
@@ -26,83 +26,45 @@
 Configure(config_audio);
 NotifyCategoryDef(audio, "");
 
-int audio_sample_voices = config_audio.GetInt("audio-sample-voices", 8);
-int audio_mix_freq = config_audio.GetInt("audio-mix-freq", 11025);
-string* audio_mode_flags;
-int audio_driver_select = config_audio.GetInt("audio-driver-select", 0);
-string* audio_driver_params;
-int audio_buffer_size = config_audio.GetInt("audio-buffer-size", 4096);
-string* audio_device;
-int audio_auto_update_delay = config_audio.GetInt("audio-auto-update-delay",
-                                                  1000000);
-bool audio_is_active = config_audio.GetBool("audio-is-active", true);
-bool audio_sfx_active = config_audio.GetBool("audio-sfx-active", true);
-bool audio_music_active = config_audio.GetBool("audio-music-active", true);
-float audio_master_sfx_volume =
-  config_audio.GetFloat("audio-master-sfx-volume", 1.);
-float audio_master_music_volume =
-  config_audio.GetFloat("audio-master-music-volume", 1.);
-int audio_thread_priority;
+
+bool audio_active 
+    =config_audio.GetBool("audio-active", true);
+
+float audio_volume 
+    =config_audio.GetFloat("audio-volume", 1.0);
+
+bool audio_software_midi 
+    =config_audio.GetBool("audio-software-midi", false);
+
+bool audio_play_midi 
+    =config_audio.GetBool("audio-play-midi", true);
+
+bool audio_play_wave 
+    =config_audio.GetBool("audio-play-wave", true);
+
+bool audio_play_mp3 
+    =config_audio.GetBool("audio-play-mp3", true);
+
+int audio_output_rate 
+    =config_audio.GetInt("audio-output-rate", 22050);
+
+int audio_output_bits
+    =config_audio.GetInt("audio-output-bits", 16);
+
+int audio_output_channels
+    =config_audio.GetInt("audio-output-channels", 2);
+
+string* audio_dls_file;
+
 
 ConfigureFn(config_audio) {
   AudioSound::init_type();
   AudioGuiFunctor::init_type();
 
-  Config::ConfigTable::Symbol mode;
-  config_audio.GetAll("audio-mode-flag", mode);
-  Config::ConfigTable::Symbol::iterator i;
-  audio_mode_flags = new string;
-  for (i=mode.begin(); i!=mode.end(); ++i) {
-    if (!audio_mode_flags->empty()) {
-      *audio_mode_flags += " ";
-    }
-    *audio_mode_flags += (*i).Val();
-  }
-  Config::ConfigTable::Symbol parms;
-  config_audio.GetAll("audio-driver-param", parms);
-  audio_driver_params = new string;
-  for (i=parms.begin(); i!=parms.end(); ++i) {
-    if (!audio_driver_params->empty()) {
-      *audio_driver_params += " ";
-    }
-    *audio_driver_params += (*i).Val();
-  }
-
-  audio_device = new string(config_audio.GetString("audio-device",
-                                                   "/dev/dsp"));
-
-  string stmp = config_audio.GetString("audio-thread-priority", "NORMAL");
-  for (string::iterator q=stmp.begin(); q!=stmp.end(); ++q) {
-    (*q) = toupper(*q);
-  }
-  if (stmp == "LOW") {
-    audio_thread_priority = 0;
-  } else if (stmp == "NORMAL") {
-    audio_thread_priority = 1;
-  } else if (stmp == "HIGH") {
-    audio_thread_priority = 2;
-  } else{
-    audio_thread_priority = -1;
-  }
+  audio_dls_file = new string(
+    config_audio.GetString("audio-dls-file", "GM.DLS")
+  );
 }
 
-void audio_load_loaders() {
-  static bool did_load = false;
-
-  if (did_load) {
-    return;
-  }
-  Config::ConfigTable::Symbol::iterator i;
-  Config::ConfigTable::Symbol loaders;
-  config_audio.GetAll("audio-loader", loaders);
-  for (i=loaders.begin(); i!=loaders.end(); ++i) {
-    Filename dlname = Filename::dso_filename("libaudio_load_" + (*i).Val() +
-                                             ".so");
-    audio_info("loading '" << (*i).Val() << "' loader");
-    void* tmp = load_dso(dlname);
-    if (tmp == (void*)0L) {
-      audio_info("unable to load: " << load_dso_error());
-    }
-  }
-  did_load = true;
-}
+
+

+ 12 - 15
panda/src/audio/config_audio.h

@@ -24,22 +24,19 @@
 
 NotifyCategoryDecl(audio, EXPCL_PANDA, EXPTP_PANDA);
 
-extern EXPCL_PANDA int audio_sample_voices;
-extern EXPCL_PANDA int audio_mix_freq;
-extern EXPCL_PANDA string* audio_mode_flags;
-extern EXPCL_PANDA int audio_driver_select;
-extern EXPCL_PANDA string* audio_driver_params;
-extern EXPCL_PANDA int audio_buffer_size;
-extern EXPCL_PANDA string* audio_device;
-extern EXPCL_PANDA int audio_auto_update_delay;
-extern EXPCL_PANDA bool audio_is_active;
-extern EXPCL_PANDA bool audio_sfx_active;
-extern EXPCL_PANDA bool audio_music_active;
-extern EXPCL_PANDA float audio_master_sfx_volume;
-extern EXPCL_PANDA float audio_master_music_volume;
-extern EXPCL_PANDA int audio_thread_priority;
+extern EXPCL_PANDA bool audio_active;
+extern EXPCL_PANDA float audio_volume;
 
-extern EXPCL_PANDA void audio_load_loaders();
+extern EXPCL_PANDA bool audio_software_midi;
+extern EXPCL_PANDA string* audio_dls_file;
+
+extern EXPCL_PANDA bool audio_play_midi;
+extern EXPCL_PANDA bool audio_play_wave;
+extern EXPCL_PANDA bool audio_play_mp3;
+
+extern EXPCL_PANDA int audio_output_rate;
+extern EXPCL_PANDA int audio_output_bits;
+extern EXPCL_PANDA int audio_output_channels;
 
 #ifndef NDEBUG //[
   // Non-release build: