This is ug.band.c in view mode; [Download] [Up]
/* Band-filling Generator */ #include "mm.head.h" #include "ug.head.h" #define AMP 1 #define AFAC 2 #define INCA 3 #define INCB 4 #define FAC 5 #define TABLE 6 #define TIME 7 band UGHEAD{ UGINIT; float pos, namp, ninc, spos; if(TYPE(TABLE) != 'f'){ /* Find start of function if number given */ FORLIST(fp, next_fp, fplist) if(fp->f_index == (int) VAL(TABLE))break; if(!fp){ Error++; PROUT("BAND: Function %.0f undefined\n",VAL(TABLE)); SEMIC; return; } LOC(TABLE) = fp->f_vals; LEN(TABLE) = fp->f_len; TYPE(TABLE) = 'f'; } UGLOOP{ spos = 0.0; pos = VAL(INCA) * LVAL(TIME); if (pos >= LEN(TABLE) || pos < 0.0) pos -= floor(pos/LEN(TABLE))*LEN(TABLE); spos += pos; VAL(OUT) = VAL(AMP) * *(LOC(TABLE) + (long) pos ); namp = VAL(AMP); ninc = VAL(INCA); while(ninc < VAL(INCB)){ if(VAL(FAC) > 0.0)ninc += VAL(FAC); if(VAL(FAC) < 0.0)ninc *= -VAL(FAC); pos = LVAL(TIME) * ninc; if (pos >= LEN(TABLE) || pos < 0.0) pos -= floor(pos/LEN(TABLE))*LEN(TABLE); spos += pos; namp *= VAL(AFAC); VAL(OUT) += namp * *(LOC(TABLE) + (long) pos ); } if(!spos)LVAL(TIME) = 1; else LVAL(TIME) += 1; UGEND(0) } }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.