ftp.nice.ch/pub/next/unix/audio/cmix.s.tar.gz#/cmix/proto/obplay.m

This is obplay.m in view mode; [Download] [Up]

#include "../H/ugens.h"
#include "../macros/macros.h"
#include <stdio.h>
#import "Oscili.h"
play(p,n_args)
 
float *p;

{
	int i,nsamps,unit;
	float val,out[2],q[9],dur,rise,decay,si,*f1,*f2,amp,phase;
	int len,risef,j,z,wave;

	id anOscili;
/* p0=start, p1=dur, p2=pitch, p3=amp, p4=riset, p5=decayt */
/* assumes function 1 is waveform and function 2 is envelope*/

	wave = 1; risef = 2;
	unit = 0;  /* writing to file 0*/
	nsamps = setnote(p[0],p[1],unit);

	evset(p[1],p[4],p[5],risef,q);

	f1 = floc(risef);
	f2 = floc(wave);
	len = fsize(wave);

	si = p[2] * fsize(1)/SR;
	z = SR/p[2];
	j = phase = 0;

	amp = p[3];

	anOscili = [ Oscili create ];
	[anOscili floc : f2];
	[anOscili si : p[2] * 512/SR];
	[anOscili amp : p[3]];
	for(i = 0; i < nsamps; i++) {
		if (!j--) {
                	val = amp * evp(i,f1,f1,q);
			j=z; 
		}
		out[0] = oscili(val,si,f2,len,&phase);

		/*out[0] = [anOscili  value];*/
		WIPEOUT(out,unit); 
	}
	endnote(unit);
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.