its ot'
[vg.git] / src / vg / vg_audio.h
index 6ef64ebc11278cbb65671376af532cf93e3bfa3f..024d87c7b23c27b13aeb8ccb8f3d080bd5e3f696 100644 (file)
@@ -36,7 +36,9 @@ struct sfx_system
        
        /* Modifiers */
        sfx_vol_control *vol_src;
-       float   vol, cvol;
+       float   vol, cvol, pan;
+
+   u32 delay;
        
        /* Info */
        u32 ch, end, cur;
@@ -223,7 +225,8 @@ static float sfx_get_master(void)
        return val;
 }
 
-void audio_mixer_callback( ma_device *pDevice, void *pOutBuf, const void *pInput, ma_uint32 frameCount );
+void audio_mixer_callback( ma_device *pDevice, void *pOutBuf,
+      const void *pInput, ma_uint32 frameCount );
 
 static void vg_audio_init(void)
 {
@@ -323,6 +326,7 @@ void audio_mixer_callback( ma_device *pDevice, void *pOutBuf,
                if( sys->flags & SFX_FLAG_PERSISTENT )
                {
                        sys->vol = sys->persisitent_source->vol * g_master_volume;
+         sys->pan = sys->persisitent_source->pan;
                        
                        /* Fadeout effect ( + remove ) */
                        if( sys->persisitent_source->fadeout )
@@ -377,7 +381,7 @@ void audio_mixer_callback( ma_device *pDevice, void *pOutBuf,
                                samples_this_run = VG_MIN( samples_this_run, sys->fadeout_current );
                        }
                        
-                       for( u32 j = 0; j < samples_this_run; j ++ )
+                       for( u32 j=0; j<samples_this_run; j++ )
                        {
                                audio_mixer_getsamples( pcf, sys->source, cursor, sys->ch );
                                
@@ -394,8 +398,11 @@ void audio_mixer_callback( ma_device *pDevice, void *pOutBuf,
                                        break;
                                }
 
-                               pOut32F[ buffer_pos*2+0 ] += pcf[0] * vol;
-                               pOut32F[ buffer_pos*2+1 ] += pcf[1] * vol;
+            float sl = 1.0f-sys->pan,
+                  sr = 1.0f+sys->pan;
+
+                               pOut32F[ buffer_pos*2+0 ] += pcf[0] * vol * sl;
+                               pOut32F[ buffer_pos*2+1 ] += pcf[1] * vol * sr;
                                
                                cursor ++;
                                buffer_pos ++;
@@ -407,7 +414,7 @@ void audio_mixer_callback( ma_device *pDevice, void *pOutBuf,
                        {
                                if( frames_write )
                                {
-                                       cursor = 0;
+                                       cursor = sys->clip_start;
                                        continue;
                                }
                        }