\r
////////////////////////////////////////////////////////////////////////\r
\r
-static int MixADSR(ADSRInfoEx *adsr, int ns_to)\r
+static int MixADSR(int *samples, ADSRInfoEx *adsr, int ns_to)\r
{\r
unsigned int EnvelopeVol = adsr->EnvelopeVol;\r
int ns = 0, val, rto, level;\r
if ((signed int)EnvelopeVol <= 0)\r
break;\r
\r
- ChanBuf[ns] *= (signed int)EnvelopeVol >> 21;\r
- ChanBuf[ns] >>= 10;\r
+ samples[ns] *= (signed int)EnvelopeVol >> 21;\r
+ samples[ns] >>= 10;\r
}\r
}\r
else\r
if ((signed int)EnvelopeVol <= 0)\r
break;\r
\r
- ChanBuf[ns] *= (signed int)EnvelopeVol >> 21;\r
- ChanBuf[ns] >>= 10;\r
+ samples[ns] *= (signed int)EnvelopeVol >> 21;\r
+ samples[ns] >>= 10;\r
}\r
}\r
\r
if ((signed int)EnvelopeVol < 0) // overflow\r
break;\r
\r
- ChanBuf[ns] *= (signed int)EnvelopeVol >> 21;\r
- ChanBuf[ns] >>= 10;\r
+ samples[ns] *= (signed int)EnvelopeVol >> 21;\r
+ samples[ns] >>= 10;\r
}\r
\r
if ((signed int)EnvelopeVol < 0) // overflow\r
if ((signed int)EnvelopeVol < 0)\r
EnvelopeVol = 0;\r
\r
- ChanBuf[ns] *= EnvelopeVol >> 21;\r
- ChanBuf[ns] >>= 10;\r
+ samples[ns] *= EnvelopeVol >> 21;\r
+ samples[ns] >>= 10;\r
ns++;\r
\r
if (((EnvelopeVol >> 27) & 0xf) <= level)\r
break;\r
}\r
\r
- ChanBuf[ns] *= (signed int)EnvelopeVol >> 21;\r
- ChanBuf[ns] >>= 10;\r
+ samples[ns] *= (signed int)EnvelopeVol >> 21;\r
+ samples[ns] >>= 10;\r
}\r
}\r
else\r
if ((signed int)EnvelopeVol < 0)\r
break;\r
\r
- ChanBuf[ns] *= (signed int)EnvelopeVol >> 21;\r
- ChanBuf[ns] >>= 10;\r
+ samples[ns] *= (signed int)EnvelopeVol >> 21;\r
+ samples[ns] >>= 10;\r
}\r
}\r
else\r
if ((signed int)EnvelopeVol < 0)\r
break;\r
\r
- ChanBuf[ns] *= (signed int)EnvelopeVol >> 21;\r
- ChanBuf[ns] >>= 10;\r
+ samples[ns] *= (signed int)EnvelopeVol >> 21;\r
+ samples[ns] >>= 10;\r
}\r
}\r
}\r