Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package soundvisualization;
- import processing.core.PApplet;
- import processing.event.KeyEvent;
- import ddf.minim.analysis.*;
- import ddf.minim.*;
- public class SoundVisualization extends PApplet {
- Minim minim;
- AudioPlayer audio;
- FFT fft;
- float angle = 0;
- int num = 600;
- Effect[] myEffect = new Effect[num];
- public void settings(){
- size(1920, 1080);
- }
- public void setup() {
- for (int i = 0; i < num; i++) {
- myEffect[i] = new Effect(color(random(125, 255), random(125, 255), random(125, 255)), random(0, 10),
- random(0.003f, 0.01f));
- }
- minim = new Minim(this);
- System.out.println(dataPath("Kanye West_Stronger.mp3"));
- audio = minim.loadFile(dataPath("Kanye West_Stronger.mp3"), 2048);
- audio.loop();
- fft = new FFT(audio.bufferSize(), audio.sampleRate());
- smooth();
- noStroke();
- background(255);
- }
- public void draw() {
- background(0);
- fft.forward(audio.mix);
- fft.window(FFT.HAMMING);
- for (int i = 0; i < num - 1; i++) {
- float freq = fft.getAverageCenterFrequency(i);
- myEffect[i].add_won_size = fft.getFreq(freq) / 20 + 2;
- myEffect[i].add_num = i;
- myEffect[i].c_alpha = fft.getBand(i) * 5;
- myEffect[i].b = myEffect[i].b + fft.getBand(i) / 200;
- myEffect[i].mix_level = audio.mix.level() * 10;
- myEffect[i].display();
- myEffect[i].drive();
- }
- }
- public void stop()
- {
- // always close Minim audio classes when you finish with them
- minim.stop();
- super.stop();
- }
- public static void main(String _args[]) {
- PApplet.main(new String[] { soundvisualization.SoundVisualization.class.getName() });
- }
- class Effect {
- float xpos, ypos;
- float won_size;
- float add_won_size;
- float speed;
- float speed_a = 0;
- float b = 0;
- float add_num;
- float c_alpha;
- int c;
- float mix_level;
- Effect(int temp_c, float temp_won_size, float temp_speed) {
- c = temp_c;
- won_size = temp_won_size;
- speed = temp_speed;
- }
- void display() {
- if (c_alpha > 10) {
- stroke(c, c_alpha / 0.8f);
- line(width / 2, height / 2, xpos, ypos);
- }
- noStroke();
- fill(c, 40 + c_alpha);
- ellipse(xpos, ypos, won_size + add_won_size, won_size + add_won_size);
- fill(c, 40 + c_alpha);
- ellipse(xpos, ypos, won_size + add_won_size + mix_level * 2, won_size + add_won_size + mix_level * 2);
- }
- void drive() {
- xpos = width / 2 + sin(speed_a + (add_num)) * (add_num * sin(b));
- ypos = height / 2 + cos(speed_a + (add_num)) * (add_num * sin(b));
- speed_a += speed; // 회전속도
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement