#include "AUSS/AUSS.h"
#include <math.h>

/**
 * This program is a random ring modulator
 * Acts a filter with AUSS
 * */
#define BUFFSIZE = 128;
int main(int argc, char ** argv) {
	int port;
	char * host;
	short buffer[BUFFSIZE];
	short buffer1[BUFFSIZE];
	short buffer2[BUFFSIZE];
	float irate = 1/44100;
	int freq = 100;
	int time = 0;
	int  i = 0;
	srand(time());
	connection conn;
	if (argc < 3) {
		printf("%s <host> <port>\n",argv[0]);
		return 1;
	}
	host = argv[1];
	port = atoi(argv[2]);
	if (!auss_connect(&conn,host,port,true,true)) {
		printf("Could not connect to Server!\n");
		return 1;
	}
	for(;;) {
		auss_read(&conn,buffer,sizeof(short)*BUFFSIZE);
		freq+=10-rand()%11;
		for (i = 0; i < BUFFSIZE; i++) {
			/*buffer[i]*=sin(M_PI2*freq*(time%44101)*irate);*/
			buffer1[i]=buffer2[i]=buffer[i];
			time++;
		}
		for (i = 0; i < BUFFSIZE; i++) {
			jitter = 1 - rand()%3;
			buffer[i] = buffer[i]>>2+buffer1[(i+jitter)%BUFFSIZE]
		}
		if (-1==auss_write(&conn,buffer,sizeof(short)*BUFFSIZE)) {
			auss_close(&conn);
			return 1;
		}
	}
}

