inlets = 1;
outlets = 2;
autowatch = 1;

twopi = 8 * Math.atan(1);
len = jsarguments[1];

if(len < 0 ){
  len = 8192;
} 

function sine()
{
  for(i = 0; i < len; i++ ){
    val = Math.sin(twopi * i / len);
    outlet(1,val);
    outlet(0,i);
  }
}

function adsyn()
{
  cnt = arguments.length;
  var wave = new Array(len);
  for(j = 0; j < len; j++ ){
    wave[j] = 0.0;
  }
  for(i = 0; i < arguments.length; i++){
    speed = i + 1;
    amp = arguments[i];
    if( amp ){
      for(j = 0; j < len; j++ ){
	wave[j] += amp * Math.sin(twopi * speed * (j / len) ); 
      }
    }
  }
  maxy = 0.0;
  for( i = 0; i < len; i++ ){
    if( wave[i] > maxy ){
      maxy = wave[i];
    }
  }
  if( max == 0.0 ){
    post("Zero Max Amp!\n");
  }
  for( i = 0; i < len; i++ ){
    wave[i] /= maxy;
    outlet(1,wave[i]);
    outlet(0,i);
  }

}

function list()
{
  cnt = arguments.length;
  val = arguments[1];
  outlet(1,val);
  outlet(0,cnt);

}

