static int writebuffer(CSOUND *csound, SNDFILE *outfd, MYFLT *outbuf, int nsmps, int *nrecs, OPARMS *O) { int n; if (outfd == NULL) return 0; n = sf_write_MYFLT(outfd, outbuf, nsmps); if (n < nsmps) { sndwrterr(csound, n, nsmps); return -1; } if (O->rewrt_hdr) csound->rewriteheader(outfd); (*nrecs)++; /* JPff fix */ switch (O->heartbeat) { case 1: csound->MessageS(csound, CSOUNDMSG_REALTIME, "%c\b", "|/-\\"[*nrecs & 3]); break; case 2: csound->MessageS(csound, CSOUNDMSG_REALTIME, "."); break; case 3: csound->MessageS(csound, CSOUNDMSG_REALTIME, "%d%n", *nrecs, &n); while (n--) csound->MessageS(csound, CSOUNDMSG_REALTIME, "\b"); break; case 4: csound->MessageS(csound, CSOUNDMSG_REALTIME, "\a"); break; } return nsmps; }
static void writesf_dither_8(CSOUND *csound, const MYFLT *outbuf, int nbytes) { OPARMS *O = csound->oparms; int n; int m = nbytes / sizeof(MYFLT); MYFLT *buf = (MYFLT*) outbuf; int dith; if (UNLIKELY(STA(outfile) == NULL)) return; dith = STA(dither); for (n=0; n<m; n++) { int tmp = ((dith * 15625) + 1) & 0xFFFF; int rnd = ((tmp * 15625) + 1) & 0xFFFF; MYFLT result; dith = rnd; rnd = (rnd+tmp)>>1; /* triangular distribution */ result = (MYFLT) (rnd - 0x8000) / ((MYFLT) 0x10000); result /= ((MYFLT) 0x7f); buf[n] += result; } STA(dither) = dith; n = (int) sf_write_MYFLT(STA(outfile), (MYFLT*) outbuf, nbytes / sizeof(MYFLT)) * (int) sizeof(MYFLT); if (UNLIKELY(n < nbytes)) sndwrterr(csound, n, nbytes); if (UNLIKELY(O->rewrt_hdr)) rewriteheader(STA(outfile)); switch (O->heartbeat) { case 1: csound->MessageS(csound, CSOUNDMSG_REALTIME, "%c\010", "|/-\\"[csound->nrecs & 3]); break; case 2: csound->MessageS(csound, CSOUNDMSG_REALTIME, "."); break; case 3: { char s[512]; CS_SPRINTF(s, "%ld(%.3f)%n", (long) csound->nrecs, csound->icurTime/csound->esr, &n); if (n > 0) { memset(&(s[n]), '\b', n); s[n + n] = '\0'; csound->MessageS(csound, CSOUNDMSG_REALTIME, "%s", s); } } break; case 4: csound->MessageS(csound, CSOUNDMSG_REALTIME, "\a"); break; } }
static void writesf(CSOUND *csound, const MYFLT *outbuf, int nbytes) { OPARMS *O = csound->oparms; int n; if (UNLIKELY(STA(outfile) == NULL)) return; n = (int) sf_write_MYFLT(STA(outfile), (MYFLT*) outbuf, nbytes / sizeof(MYFLT)) * (int) sizeof(MYFLT); if (UNLIKELY(n < nbytes)) sndwrterr(csound, n, nbytes); if (UNLIKELY(O->rewrt_hdr)) rewriteheader((void *)STA(outfile)); switch (O->heartbeat) { case 1: csound->MessageS(csound, CSOUNDMSG_REALTIME, "%c\010", "|/-\\"[csound->nrecs & 3]); break; case 2: csound->MessageS(csound, CSOUNDMSG_REALTIME, "."); break; case 3: { char s[512]; CS_SPRINTF(s, "%ld(%.3f)%n", (long) csound->nrecs, csound->icurTime/csound->esr, &n); if (n > 0) { memset(&(s[n]), '\b', n); s[n + n] = '\0'; csound->MessageS(csound, CSOUNDMSG_REALTIME, "%s", s); } } break; case 4: csound->MessageS(csound, CSOUNDMSG_REALTIME, "%s", "\a"); break; } }