Sound 3: Radial Wave

In this example we will create a radial audio wave by substituting the (x,y) values with the points on a circle:

x = radius * cos(theta);
y = radius * sin(theta)
x = (sound sample * multiplier + radius) * cos( angle interval  * loop counter);
y = (sound sample * multiplier + radius) * sin( angle interval  * loop counter);

import ddf.minim.*;
import controlP5.*;

//declaration of minim object
Minim minim;
//audio input variable
AudioInput sound;
//declaration of ControlP5 object
ControlP5 cp5;

//sound amplitude multiplier
float amplitude = 150;

//size of radial wave
float radius = 20;

void setup() {
  size(1000, 500);
  
  minim = new Minim(this);
  sound = minim.getLineIn(Minim.STEREO, 1024);
  
  cp5 = new ControlP5(this);
  
  cp5.addSlider("amplitude")
    .setPosition(40,40)
    .setRange(0,1200)
    .setSize(200,20)
    .setValue(400)
    .setColorForeground(color(20,200,200))
     .setColorLabel(color(255))
     .setColorBackground(color(70,70,70))
     .setColorValue(color(0,0,0))
     .setColorActive(color(0,255,255))
  ;
  
  cp5.addSlider("radius")
    .setPosition(40,80)
    .setRange(0,200)
    .setSize(200,20)
    .setValue(50)
    .setColorForeground(color(20,200,200))
     .setColorLabel(color(255))
     .setColorBackground(color(70,70,70))
     .setColorValue(color(0,0,0))
     .setColorActive(color(0,255,255))
  ;
  
}

void draw()
{
  background(0);
  stroke(255);
  //creare a radian step size for angle interval based on 1024 sound samples
  float radians_step = 2*PI/sound.bufferSize();
  for(int i = 0; i < sound.bufferSize()-1; i++){ 
    ////calculate positions to create a line based on a circle
    float xpos1 = width/2 + (sound.mix.get(i)*amplitude+radius) * cos(i*radians_step);
    float ypos1 = height/2 + (sound.mix.get(i)*amplitude+radius) * sin(i*radians_step);
    float xpos2 = width/2 + (sound.mix.get(i)*amplitude+radius) * cos((i+1)*radians_step);
    float ypos2 = height/2 + (sound.mix.get(i)*amplitude+radius) * sin((i+1)*radians_step);
    line( xpos1,ypos1,xpos2,ypos2);
  }

}