*** aops.c Thu Mar 8 18:31:29 1990 --- aops.c.new Thu Mar 8 18:31:29 1990 *************** *** 288,293 **** --- 288,294 ---- } extern float *spout; + extern int spout_virgin; out(p) register OUT *p; *************** *** 297,306 **** ap = p->asig; sp = spout; ! do { ! *sp += *ap++; sp++; } - while (--nsmps); } outs(p) --- 298,315 ---- ap = p->asig; sp = spout; ! if (spout_virgin) { ! do { ! *sp++ = *ap++; ! } ! while (--nsmps); ! spout_virgin = 0; ! } else { ! do { ! *sp += *ap++; sp++; ! } ! while (--nsmps); } } outs(p) *************** *** 312,322 **** ap1 = p->asig1; ap2 = p->asig2; sp = spout; ! do { ! *sp += *ap1++; sp++; ! *sp += *ap2++; sp++; } - while (--nsmps); } outq(p) --- 321,340 ---- ap1 = p->asig1; ap2 = p->asig2; sp = spout; ! if (spout_virgin) { ! do { ! *sp++ = *ap1++; ! *sp++ = *ap2++; ! } ! while (--nsmps); ! spout_virgin = 0; ! } else { ! do { ! *sp += *ap1++; sp++; ! *sp += *ap2++; sp++; ! } ! while (--nsmps); } } outq(p) *************** *** 330,342 **** ap3 = p->asig3; ap4 = p->asig4; sp = spout; ! do { ! *sp += *ap1++; sp++; ! *sp += *ap2++; sp++; ! *sp += *ap3++; sp++; ! *sp += *ap4++; sp++; } - while (--nsmps); } outs1(p) --- 348,371 ---- ap3 = p->asig3; ap4 = p->asig4; sp = spout; ! if (spout_virgin) { ! do { ! *sp++ = *ap1++; ! *sp++ = *ap2++; ! *sp++ = *ap3++; ! *sp++ = *ap4++; ! } ! while (--nsmps); ! spout_virgin = 0; ! } else { ! do { ! *sp += *ap1++; sp++; ! *sp += *ap2++; sp++; ! *sp += *ap3++; sp++; ! *sp += *ap4++; sp++; ! } ! while (--nsmps); } } outs1(p) *************** *** 347,357 **** ap = p->asig; sp = spout; ! do { ! *sp += *ap++; ! sp += 2; } - while (--nsmps); } outs2(p) --- 376,395 ---- ap = p->asig; sp = spout; ! if (spout_virgin) { ! do { ! *sp = *ap++; ! sp += 2; ! } ! while (--nsmps); ! spout_virgin = 0; ! } else { ! do { ! *sp += *ap++; ! sp += 2; ! } ! while (--nsmps); } } outs2(p) *************** *** 362,375 **** ap = p->asig; sp = spout + 1; ! do { ! *sp += *ap++; ! sp += 2; } - while (--nsmps); } ! outq1(p) register OUT *p; { register float *ap, *sp; --- 400,424 ---- ap = p->asig; sp = spout + 1; ! if (spout_virgin) { ! do { ! *sp = *ap++; ! sp += 2; ! } ! while (--nsmps); ! spout_virgin = 0; ! } else { ! do { ! *sp += *ap++; ! sp += 2; ! } ! while (--nsmps); } } ! /* generic quad channel output routine */ ! static ! outqn(p, n) register OUT *p; { register float *ap, *sp; *************** *** 376,430 **** register int nsmps = ksmps; ap = p->asig; ! sp = spout; ! do { ! *sp += *ap++; ! sp += 4; } - while (--nsmps); } ! outq2(p) register OUT *p; { ! register float *ap, *sp; ! register int nsmps = ksmps; ! ap = p->asig; ! sp = spout + 1; ! do { ! *sp += *ap++; ! sp += 4; ! } ! while (--nsmps); } outq3(p) register OUT *p; { ! register float *ap, *sp; ! register int nsmps = ksmps; ! ! ap = p->asig; ! sp = spout + 2; ! do { ! *sp += *ap++; ! sp += 4; ! } ! while (--nsmps); } outq4(p) register OUT *p; { ! register float *ap, *sp; ! register int nsmps = ksmps; ! ! ap = p->asig; ! sp = spout + 3; ! do { ! *sp += *ap++; ! sp += 4; ! } ! while (--nsmps); } --- 425,467 ---- register int nsmps = ksmps; ap = p->asig; ! sp = spout + n; ! if (spout_virgin) { ! do { ! *sp = *ap++; ! sp += 4; ! } ! while (--nsmps); ! spout_virgin = 0; ! } else { ! do { ! *sp += *ap++; ! sp += 4; ! } ! while (--nsmps); } } ! outq1(p) register OUT *p; { ! outqn(p,0); ! } ! outq2(p) ! register OUT *p; ! { ! outqn(p,1); } outq3(p) register OUT *p; { ! outqn(p,2); } outq4(p) register OUT *p; { ! outqn(p,3); } *** insert.c Thu Mar 8 18:31:38 1990 --- insert.c.new Thu Mar 8 18:31:39 1990 *************** *** 261,268 **** { extern float *spout; extern int nspout; ! register long *lp; ! register int n; register INSDS *ip; if (odebug) printf("perfing %d kprds\n",kcnt); --- 261,267 ---- { extern float *spout; extern int nspout; ! extern int spout_virgin; register INSDS *ip; if (odebug) printf("perfing %d kprds\n",kcnt); *************** *** 270,279 **** zerotran(kcnt); /* send kcnt zerospouts */ } else while (kcnt--) { /* else for each kcnt: */ ! lp = (long *) spout; ! n = nspout; ! do *lp++ = 0; /* clear spout to 0 */ ! while (--n); ip = &actanchor; while ((ip = ip->nxtact) != NULL) { /* for instrs activ */ pds = (OPDS *)ip; --- 269,275 ---- zerotran(kcnt); /* send kcnt zerospouts */ } else while (kcnt--) { /* else for each kcnt: */ ! spout_virgin = 1; /* pretend buffer is zeroed */ ip = &actanchor; while ((ip = ip->nxtact) != NULL) { /* for instrs activ */ pds = (OPDS *)ip; *************** *** 280,286 **** while ((pds = pds->nxtp) != NULL) pds->opadr(pds); /* run each opcod */ } ! tran(); /* send spout to disk*/ } } --- 276,283 ---- while ((pds = pds->nxtp) != NULL) pds->opadr(pds); /* run each opcod */ } ! if (spout_virgin) zerotran(1); ! else tran(); /* send spout to disk*/ } } *** oload.c Thu Mar 8 18:31:41 1990 --- oload.c.new Thu Mar 8 18:31:42 1990 *************** *** 13,18 **** --- 13,19 ---- float twopi = 6.2831853, tpidsr, mtpdsr, hfkprd, *spout, *plgadr(); float sicvt, kicvt, maxlen = MAXLEN, dv32768; int nspout; + int spout_virgin; /* has nobody done sound output yet this kperiod ? */ extern int odebug; /* for verbose orch tran */ extern char errmsg[]; /* work space for sprintf */