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.