Quantcast
Channel: Library Questions - Processing 2.x and 3.x Forum
Viewing all articles
Browse latest Browse all 2896

I want the sound representing points to be vertical (See description)

$
0
0

I have modified a lot of code, added them up and came up with this..Here the sound representing points are presented in horizontal ..I want these points to be put vertical..But with this code I cant get my logic right..Any help?TIA..

import ddf.minim.analysis.*;
import ddf.minim.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List;


Minim minim;
AudioInput in;
FFT fft;
AudioPlayer song;
String str="X coordinate= || Y cordinate=";
ArrayList<String> times = new ArrayList();



// Configuration: spectrogram size (pixels)
int colmax = 500;
int rowmax = 250;
// Sample rate
float sampleRate = 22050;
// buffer size (= FFT size, must be power of 2)
int bufferSize = 1024;

// Variables
int[][] sgram = new int[rowmax][colmax];
int col;
int row;
int leftedge;
int topedge;
int window_len = bufferSize;
String timeHoover="";

PFont mono;


void setup()
{
  size(580, 250, P3D);
  textMode(SCREEN);
  textFont(createFont("SanSerif", 12));

  minim = new Minim(this);
  song = minim.loadFile("theMez.mp3", bufferSize);
  song.loop();
  // setup audio input
  //in = minim.getLineIn(Minim.MONO, bufferSize, sampleRate);

  fft = new FFT(song.bufferSize(), song.sampleRate());

  // suppress windowing inside FFT - we'll do it ourselves
  fft.window(FFT.NONE);
  times.add("");
}

void draw()
{
  background(0);
  stroke(255);
  strokeWeight(3);
  line(70, 0, 70, height);

  //song.play();
  // grab the input samples
  float[] samples = song.mix.toArray();
  // apply windowing
  for (int i = 0; i < samples.length/2; ++i) {
    // Calculate & apply window symmetrically around center point
    // Hanning (raised cosine) window
    float winval = (float)(0.5+0.5*Math.cos(Math.PI*(float)i/(float)(window_len/2)));
    if (i > window_len/2)  winval = 0;
    samples[samples.length/2 - i] *= winval;
    samples[samples.length/2 + i] *= winval;
  }
  // zero out first point (not touched by odd-length window)
  samples[0] = 0;

  // perform a forward FFT on the samples in the input buffer
  fft.forward(samples);

  // fill in the new column of spectral values
  for (int i = 0; i < colmax /* fft.specSize() */; i++) {
    sgram[row][i] = (int)Math.round(Math.max(0, 2*20*Math.log10(1000*fft.getBand(i))));

  }

  // next time will be the next column
  row = row+1;
  // wrap back to the first column when we get to the end
  if (row == rowmax) {
    row = 0;
  }

  // Draw points.
  // leftedge is the column in the ring-filled array that is drawn at the extreme left
  // start from there, and draw to the end of the array


  for (int i= 0; i<colmax; i++)
  {
    for (int j=0; j<row; j++)
    {
      stroke(sgram[j][i]);
      point(100+i,j);
     // l.add(sdf.format(cal.getTime()));

    }
  }



  //==============timePrinting
  mono = createFont("Verdana", 12);
  textFont(mono);
   if ( !times.get(0).equals("" + hour() + ":" + minute() + ":" + second())) {
    times.add(0, "" + hour() + ":" + minute() + ":" + second());
  }
 // println(times.size());
  while (times.size() > 15) {
    times.remove(15);
  }
  for ( int i = 0; i < times.size(); i++) {
    text(times.get(i), 5,  20* i);

    if (times.get(i).length()>0)
    {
      //timeHoover= times.get(i);
    stroke(255);
    strokeWeight(2);
    line(5,20*i+5,35,20*i+5);
    }

  }


  text(timeHoover,480,40);
  // Report window size
  //text(str, 8, 10);
}


void mousePressed()
{
  str="X cordinate = ";
  str += String.valueOf(mouseX);
  str+=" || Y cordinate = ";
  str+=String.valueOf(mouseY);
}

void mouseDragged() {
  // map mouse position within window to -1..1
  float proportion = map(mouseX, 0, colmax, -1, 0);
  // convert to window length, log scale, 2^8 range
  window_len = (int)Math.round(Math.pow(2.0, 4.0*proportion)*(float)bufferSize);
  text("asdffs",50,50);
}

void mouseMoved()
{

  int y = mouseY;
  int pos= mouseY/20;
  if (pos<times.size())
  {
    timeHoover = times.get(pos);
    text(timeHoover,480,40);
  }
}


void stop()
{
  // always close Minim audio classes when you finish with them
  in.close();
  minim.stop();
  super.stop();
}

And this is the representation: help


Viewing all articles
Browse latest Browse all 2896

Trending Articles