- d = MixADSR(&s_chan->ADSRX, d);
- if (d < ns_to) {
- spu.dwChannelsAudible &= ~(1 << ch);
- s_chan->ADSRX.State = ADSR_RELEASE;
- s_chan->ADSRX.EnvelopeVol = 0;
- memset(&ChanBuf[d], 0, (ns_to - d) * sizeof(ChanBuf[0]));
+ if (!s_chan->bStarting) {
+ d = MixADSR(&s_chan->ADSRX, d);
+ if (d < ns_to) {
+ spu.dwChannelsAudible &= ~(1 << ch);
+ s_chan->ADSRX.State = ADSR_RELEASE;
+ s_chan->ADSRX.EnvelopeVol = 0;
+ memset(&ChanBuf[d], 0, (ns_to - d) * sizeof(ChanBuf[0]));
+ }