Fundamentals of Programming
This assignment tasks students with developing a unique music visualization using selected audio tracks. The project includes designing creative graphics and implementing complex programming concepts. Utilize the Minim audio library for sound processing and beat detection, ensuring to meet set criteria for design, complexity, and creativity. Key components include audio playback, beat detection algorithms, and dynamic visual elements. Examples provided can inspire your work. Submit by December 20, 2011.
Fundamentals of Programming
E N D
Presentation Transcript
Fundamentals of Programming SM1204 Semester A 2011
Assignment 3 Due date 20 Dec Collection via ACS
Requirements • Create your own music visualization (20%) • Select your audio / music • Design your visualization • Use of Minim audio library (30%) • Program complexity (20%) • 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 • 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 (inti=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 (inti=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(); }