فهرست منبع

convert to miles 6.5 volume api

cxgeorge 23 سال پیش
والد
کامیت
84ebd035ad
1فایلهای تغییر یافته به همراه31 افزوده شده و 9 حذف شده
  1. 31 9
      panda/src/audiotraits/milesAudioSound.cxx

+ 31 - 9
panda/src/audiotraits/milesAudioSound.cxx

@@ -24,6 +24,10 @@
 
 #define NEED_MILES_LENGTH_WORKAROUND
 
+#if (MSS_MAJOR_VERSION >= 6) && (MSS_MINOR_VERSION >= 5)
+#define MILES_6_5
+#endif
+
 #ifndef NDEBUG //[
   namespace {
     char
@@ -156,22 +160,40 @@ set_volume(float volume) {
   _volume=volume;
   // Account for the category of sound:
   volume*=_manager->get_volume();
-  // Change to Miles volume, range 0 to 127:
-  S32 milesVolume=((S32)(127*volume))%128;
+  #ifdef MILES_6_5
+    // Change to Miles volume, range 0 to 1.0:
+    F32 milesVolume=volume;
+    milesVolume=min(milesVolume,1.0f);
+    milesVolume=max(milesVolume,0.0f);
+  #else
+    // Change to Miles volume, range 0 to 127:
+    S32 milesVolume=((S32)(127*volume))%128;
+  #endif
   // Account for type:
   S32 audioType=AIL_quick_type(_audio);
-  if (audioType==AIL_QUICK_XMIDI_TYPE
-      ||
-      audioType==AIL_QUICK_DLS_XMIDI_TYPE) {
+  if ((audioType==AIL_QUICK_XMIDI_TYPE) || (audioType==AIL_QUICK_DLS_XMIDI_TYPE)) {
     // ...it's a midi file.
-    AIL_quick_set_volume(_audio, milesVolume, 0); // 0 delay.
+
+    // 0 delay, set to this volume immediately    
+    #ifdef MILES_6_5
+      F32 midiVolDelay =0.0f; 
+    #else
+      S32 midiVolDelay =0;
+    #endif
+    
+    AIL_quick_set_volume(_audio, milesVolume, midiVolDelay); 
     audio_debug("  volume for this midi is now "<<milesVolume);
   } else {
     // ...it's a wav or mp3.
-    // Convert balance of -1.0..1.0 to 0..127:
-    S32 milesBalance=((S32)(63.5f*(_balance+1.0f)))%128;
+    #ifdef MILES_6_5
+      // Convert balance of -1.0..1.0 to 0-1.0:
+      F32 milesBalance=(F32)((_balance+1.0f)*0.5f);
+    #else
+      // Convert balance of -1.0..1.0 to 0..127:
+      S32 milesBalance=((S32)(63.5f*(_balance+1.0f)))%128;  
+    #endif
     AIL_quick_set_volume(_audio, milesVolume, milesBalance);
-    audio_debug("  volume for this wav or mp3 is now "<<milesVolume
+    audio_debug("  volume for this wav or mp3 is now " << milesVolume
         <<", balance="<<milesBalance);
   }
 }