ftp.nice.ch/pub/next/unix/audio/cmusic.bs.N.tar.gz#/src/cmusic/ug.defs.h

This is ug.defs.h in view mode; [Download] [Up]

/* UNIT GENERATOR DEFINITIONS */
#include <stdio.h>
#ifdef csound
#include <carl/sndio.h>
extern int sferror;
#endif csound
#ifdef bicsf
#include <carl/snd.h>
extern int sferror;
#endif bicsf
#ifdef nextsf
#import <sound/sound.h>
#import <sys/file.h>
#endif nextsf


struct ug_desc{			/* unit generator table entry */
    char *ug_name;		/* ug symbolic name */
    char *ug_arglist;		/* symbolic argument list description */
    int  (*ug_call)();		/* pointer to ug code */
};

union arg_ptr{ /* args may be float or function pointers, etc. */
    float *v; 
    float **fp; 
    double **dp; 
    float (*f)();
    char  *s;
    long  *l;
    FILE **fileptr;
#ifdef csound
    struct sndesc **sfd;
#endif
#ifdef bicsf
    struct sndesc **snd;
#endif
#ifdef nextsf
    SNDSoundStruct **nxtsnd;
    struct sndesc **sfd;
#endif
};

#define	UGHEAD	(narg, ap, lens, incs, atypes, ugflags)\
register long narg,incs[];\
register union arg_ptr ap[];\
float lens[];\
char atypes[];\
long *ugflags;

#define	UGINIT \
 register long i,arg; extern long Ngen, Nchan; extern float *Outblock, *Outptr

#define UGLOOP  *ugflags &= ~(STARTFLAG); for (i=0; i<Ngen; i++)

#define	UGEND(n)	for(arg=n;arg<narg;arg++)ap[arg].v += incs[arg];

#define OUT	0

#define	FPTR(x) *ap[x].fp
#define	DPTR(x) *ap[x].dp
#define	FPT(x) ap[x].v
#define	VAL(x) *ap[x].v
#define	LVAL(x) *ap[x].l
#ifdef csound
#define	PVAL(x) *(*ap[x].sfd)
#define	PLOC(x) (*ap[x].sfd)
#endif csound
#ifdef bicsf
#define PVAL(x) *(*ap[x].snd)
#define PLOC(x) (*ap[x].snd)
#endif  bicsf
#ifdef nextsf
#define	PLOC(x) (*ap[x].nxtsnd)
#define	SFPLOC(x) (*ap[x].sfd)
#endif  nextsf
#define	FPLOC(x) (*ap[x].fileptr)
#define	SVAL(x) *ap[x].s
#define	LOC(x) ap[x].v
#define	SLOC(x) ap[x].s
#define LEN(x) lens[x]
#define INC(x) incs[x]
#define TYPE(x) atypes[x]
#define	LOOKUP(table,index)	*(LOC(table) + (long) VAL(index) )
#define STARTFLAG 1
#define ENDFLAG 2
#define	STARTNOTE (*ugflags & STARTFLAG)
#define	ENDNOTE (*ugflags & ENDFLAG)

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