Slide

FUNDAMENTALS
OF PROGRAMMING
SM1204 Semester A 2011
Assignment 3
Due date 20 Dec
Collection via ACS
Requirements
o
Create your own music visualization (20%)
o
o
Select your audio / music
Design your visualization
o
Use of Minim audio library (30%)
o
Program complexity (20%)
o
Creative graphics (30%)
Example

http://www.youtube.com/watch?v=KW5D9IVfb1k&feature=related
Example

http://www.youtube.com/watch?v=1JkN3Uwgqi4&feature=related
Example

http://www.youtube.com/watch?v=0AVyhytUy7k&feature=related
Sample Program
Sample Program


Import library
Define player and beat detector objects
import ddf.minim.*;
import ddf.minim.analysis.*;
Minim minim;
AudioPlayer player;
BeatDetect beat;
int n = 5;
float[][] a = new float[n][n];
Sample Program

Create objects & Initialize array elements
void setup() {
size(400, 400);
minim = new Minim(this);
player = minim.loadFile("test2.mp3");
beat = new BeatDetect(
player.bufferSize(),
player.sampleRate()
);
player.play();
// initialize item size
for (int i=0; i<n; i++) {
for (int j=0; j<n; j++) {
a[i][j] = 40;
}
}
}
Sample Program

Beat detection and rendering
void draw() {
beat.detect(player.mix);
background(0);
strokeWeight(4);
for (int i=0; i<n; i++) {
for (int j=0; j<n; j++) {
if (beat.isOnset(i*5+j)) { a[i][j] = 80; }
float s = a[i][j];
float c = map(s, 40, 80, 200, 255);
noFill(); stroke(c);
ellipse(i*80+40, j*80+40, s, s);
fill(c); noStroke();
ellipse(i*80+40, j*80+40, s / 2, s / 2);
if (a[i][j] > 40) { a[i][j] *= 0.95; }
}
}
}
Sample Program

Do not forget to add the stop( ) function
void stop() {
player.close();
minim.stop();
super.stop();
}