/* Modifiers */
sfx_vol_control *vol_src;
- float vol, cvol;
+ float vol, cvol, pan;
+
+ u32 delay;
/* Info */
u32 ch, end, cur;
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)
{
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 )
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 );
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 ++;
{
if( frames_write )
{
- cursor = 0;
+ cursor = sys->clip_start;
continue;
}
}