# Music visualizer processing (minim library)

hi, i’m new to Processing and i’m interested in being able to synchronize the sketch with the audio specifically that the height of the “mountains” grows in sync with the audio. I made this sketch following the video: https://www.youtube.com/watch?v=IKB1hWWedMk and to understand the audio I was following the “PlayAFile” example from Minim. If anyone could help me solve it, I would appreciate it.

``````//dibujo
int cols,rows;
int scl = 20;
int w= 2000;
int h= 1600;

//vuelo
float terrain  [][] ;
float flying = 0;

//musica
import ddf.minim.*;
Minim minim;
AudioPlayer player;

void setup(){
size(500,500, P3D);
cols = w/scl;
rows = h/scl;
terrain = new float[cols][rows];

minim = new Minim(this);
}
void draw(){

player.play();

background(0);
stroke(255);
noFill();

//posicion dibujo
translate(width/2,height/2+50);
rotateX(PI/3);
translate(-w/2, -h/2);

frameRate(1);

flying -= 0.2;
float yoff = flying;
for (int y = 0; y < rows; y++){
float xoff = 0;
for(int x= 0; x < cols; x++){
terrain [x][y] = map(noise (xoff, yoff),0,1,-100, 100);
xoff += 0.2;
}
yoff += 0.2;
}

for (int y = 0; y < rows-1; y++){
beginShape(TRIANGLE_STRIP);
for(int x= 0; x < cols; x++){
vertex(x*scl, y*scl, terrain[x][y]);
vertex(x*scl, (y+1)*scl, terrain [x][y+1]);

//rect(x*scl,y*scl,scl,scl);
}
endShape();
}
}
``````

I insert the file “PlayAFile”:

``````/**
* This sketch demonstrates how to play a file with Minim using an AudioPlayer. <br />
* It's also a good example of how to draw the waveform of the audio. Full documentation
* for AudioPlayer can be found at http://code.compartmental.net/minim/audioplayer_class_audioplayer.html
* <p>
* visit http://code.compartmental.net/minim/
*/

import ddf.minim.*;

Minim minim;
AudioPlayer player;

void setup()
{
size(512, 200, P3D);

// we pass this to Minim so that it can load files from the data directory
minim = new Minim(this);

// loadFile will look in all the same places as loadImage does.
// this means you can find files that are in the data folder and the
// sketch folder. you can also pass an absolute path, or a URL.
}

void draw()
{
background(0);
stroke(255);

// draw the waveforms
// the values returned by left.get() and right.get() will be between -1 and 1,
// so we need to scale them up to see the waveform
// note that if the file is MONO, left.get() and right.get() will return the same value
for(int i = 0; i < player.bufferSize() - 1; i++)
{
float x1 = map( i, 0, player.bufferSize(), 0, width );
float x2 = map( i+1, 0, player.bufferSize(), 0, width );
line( x1, 50 + player.left.get(i)*50, x2, 50 + player.left.get(i+1)*50 );
//line( x1, 150 + player.right.get(i)*50, x2, 150 + player.right.get(i+1)*50 );
}

// draw a line to show where in the song playback is currently located
// float posx = map(player.position(), 0, player.length(), 0, width);
// stroke(0,200,0);
//line(posx, 0, posx, height);

if ( player.isPlaying() )
{
text("Press any key to pause playback.", 10, 20 );
}
else
{
text("Press any key to start playback.", 10, 20 );
}
}

void keyPressed()
{
if ( player.isPlaying() )
{
player.pause();
}
// if the player is at the end of the file,
// we have to rewind it before telling it to play again
else if ( player.position() == player.length() )
{
player.rewind();
player.play();
}
else
{
player.play();
}
}
``````

Thanks!