--- np2/sound/beepg.c 2003/10/16 17:58:03 1.1 +++ np2/sound/beepg.c 2003/10/20 12:08:01 1.3 @@ -14,11 +14,11 @@ static void oneshot(BEEP bp, SINT32 *pcm SINT32 remain; BPEVENT *bev; - vol = beepcfg.vol << 11; + vol = beepcfg.vol; bev = bp->event; do { - remain = pc.sampleclock; + remain = (1 << 16); samp = 0; while(remain >= bev->clock) { if (--bp->events) { @@ -33,7 +33,7 @@ static void oneshot(BEEP bp, SINT32 *pcm if (bp->lastenable) { samp += remain; samp *= vol; - samp /= pc.sampleclock; + samp >>= (16 - 11); do { pcm[0] += samp; pcm[1] += samp; @@ -43,10 +43,11 @@ static void oneshot(BEEP bp, SINT32 *pcm } else { samp *= vol; - samp /= pc.sampleclock; + samp >>= (16 - 11); pcm[0] += samp; pcm[1] += samp; } + bp->lastenable = bev->enable; return; } } @@ -55,7 +56,7 @@ static void oneshot(BEEP bp, SINT32 *pcm samp += remain; } samp *= vol; - samp /= pc.sampleclock; + samp >>= (16 - 11); pcm[0] += samp; pcm[1] += samp; pcm += 2; @@ -86,7 +87,7 @@ void SOUNDCALL beep_getpcm(BEEP bp, SINT if ((count) && (beepcfg.vol)) { if (bp->mode == 0) { - if ((bp->events) && (pc.sampleclock)) { + if (bp->events) { oneshot(bp, pcm, count); } }