ftp.nice.ch/pub/next/unix/audio/fugue.s.tar.gz#/fugue/doc/example2.c

This is example2.c in view mode; [Download] [Up]

/*
 * FILE: example2.c
 *   BY: Christopher Lee Fraley
 * DESC: An example of a function which takes a sound and an integer as input,
 *	    and returns a sound.
 *
 * 1.0 ( 3-JUN-89) - created. (clf)
 */

#include <math.h>
#include "xlisp.h"
#include "sound.h"


SoundPtr round(sound, k)
SoundPtr sound;
int k;
{
   SoundPtr val;
   SDataPtr data;
   int len, newLen;
   double newSrate;
   int i;

   /* Must flatten sound before I can access its samples: */
   (void)s_flatten(sound);
   len = sound->ptr.sample->length;

   /* Let's create the return value: */
   val = s_create();
   newLen = len;	/* Make return sound the same length as input sound */
   newSrate = sound->srate;	/* Make val have same srate as input sound */
   data = sdata_create(newLen);
   val->ptr.sample = spl_create(data, newLen, newSrate);
   val->tag = SAMPLES;
   val->to = val->logicalTo = newLen / newSrate;
   val->srate = newSrate;
   val->shift = sound->shift;

   for (i=0; i<len && i<newLen; i++)
     {
     /* Put your own calculations here, for example: */
     val->ptr.sample->data[i] = floor(sound->ptr.sample->data[i] / k) * k;
     }
   return (val);
}

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