INLINE void StartSound(SPUCHAN * pChannel) { StartADSR(pChannel); StartREVERB(pChannel); pChannel->pCurr=pChannel->pStart; // set sample start pChannel->s_1=0; // init mixing vars pChannel->s_2=0; pChannel->iSBPos=28; pChannel->bNew=0; // init channel flags pChannel->bStop=0; pChannel->bOn=1; pChannel->SB[29]=0; // init our interpolation helpers pChannel->SB[30]=0; if(iUseInterpolation>=2) // gauss interpolation? {pChannel->spos=0x30000L;pChannel->SB[28]=0;} // -> start with more decoding else {pChannel->spos=0x10000L;pChannel->SB[31]=0;} // -> no/simple interpolation starts with one 44100 decoding }
INLINE void StartSound(int ch) { StartADSR(ch); StartREVERB(ch); s_chan[ch].pCurr=s_chan[ch].pStart; // set sample start s_chan[ch].s_1=0; // init mixing vars s_chan[ch].s_2=0; s_chan[ch].iSBPos=28; s_chan[ch].bNew=0; // init channel flags s_chan[ch].bStop=0; s_chan[ch].bOn=1; s_chan[ch].SB[29]=0; // init our interpolation helpers s_chan[ch].SB[30]=0; s_chan[ch].spos=0x10000L;s_chan[ch].SB[31]=0; // -> no/simple interpolation starts with one 44100 decoding dwNewChannel&=~(1<<ch); // clear new channel bit }
INLINE void StartSound(int ch) { StartADSR(ch); StartREVERB(ch); // fussy timing issues - do in VoiceOn //s_chan[ch].pCurr=s_chan[ch].pStart; // set sample start //s_chan[ch].bStop=0; //s_chan[ch].bOn=1; s_chan[ch].s_1=0; // init mixing vars s_chan[ch].s_2=0; s_chan[ch].iSBPos=28; s_chan[ch].SB[29]=0; // init our interpolation helpers s_chan[ch].SB[30]=0; if(iUseInterpolation>=2) // gauss interpolation? {s_chan[ch].spos=0x30000L;s_chan[ch].SB[28]=0;} // -> start with more decoding else {s_chan[ch].spos=0x10000L;s_chan[ch].SB[31]=0;} // -> no/simple interpolation starts with one 44100 decoding dwNewChannel&=~(1<<ch); // clear new channel bit }