Advertisement
nintyning

Untitled

May 27th, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.54 KB | None | 0 0
  1. package soundvisualization;
  2.  
  3. import processing.core.PApplet;
  4. import processing.event.KeyEvent;
  5. import ddf.minim.analysis.*;
  6. import ddf.minim.*;
  7.  
  8. public class SoundVisualization extends PApplet {
  9.     Minim minim;
  10.     AudioPlayer audio;
  11.     FFT fft;
  12.     float angle = 0;
  13.     int num = 600;
  14.     Effect[] myEffect = new Effect[num];
  15.  
  16.     public void settings(){
  17.         size(1920, 1080);
  18.     }
  19.    
  20.     public void setup() {
  21.        
  22.         for (int i = 0; i < num; i++) {
  23.             myEffect[i] = new Effect(color(random(125, 255), random(125, 255), random(125, 255)), random(0, 10),
  24.                     random(0.003f, 0.01f));
  25.         }
  26.         minim = new Minim(this);
  27.         System.out.println(dataPath("Kanye West_Stronger.mp3"));
  28.         audio = minim.loadFile(dataPath("Kanye West_Stronger.mp3"), 2048);
  29.         audio.loop();
  30.         fft = new FFT(audio.bufferSize(), audio.sampleRate());
  31.         smooth();
  32.         noStroke();
  33.         background(255);
  34.     }
  35.  
  36.     public void draw() {
  37.         background(0);
  38.         fft.forward(audio.mix);
  39.         fft.window(FFT.HAMMING);
  40.  
  41.         for (int i = 0; i < num - 1; i++) {
  42.             float freq = fft.getAverageCenterFrequency(i);
  43.             myEffect[i].add_won_size = fft.getFreq(freq) / 20 + 2;
  44.             myEffect[i].add_num = i;
  45.             myEffect[i].c_alpha = fft.getBand(i) * 5;
  46.             myEffect[i].b = myEffect[i].b + fft.getBand(i) / 200;
  47.             myEffect[i].mix_level = audio.mix.level() * 10;
  48.             myEffect[i].display();
  49.             myEffect[i].drive();
  50.         }
  51.     }
  52.     public void stop()
  53.     {
  54.       // always close Minim audio classes when you finish with them
  55.       minim.stop();
  56.      
  57.       super.stop();
  58.     }
  59.    
  60.    
  61.    
  62.     public static void main(String _args[]) {
  63.         PApplet.main(new String[] { soundvisualization.SoundVisualization.class.getName() });
  64.     }
  65.  
  66.     class Effect {
  67.         float xpos, ypos;
  68.         float won_size;
  69.         float add_won_size;
  70.         float speed;
  71.         float speed_a = 0;
  72.         float b = 0;
  73.         float add_num;
  74.         float c_alpha;
  75.         int c;
  76.         float mix_level;
  77.  
  78.         Effect(int temp_c, float temp_won_size, float temp_speed) {
  79.             c = temp_c;
  80.             won_size = temp_won_size;
  81.             speed = temp_speed;
  82.         }
  83.  
  84.         void display() {
  85.             if (c_alpha > 10) {
  86.                 stroke(c, c_alpha / 0.8f);
  87.                 line(width / 2, height / 2, xpos, ypos);
  88.             }
  89.             noStroke();
  90.             fill(c, 40 + c_alpha);
  91.             ellipse(xpos, ypos, won_size + add_won_size, won_size + add_won_size);
  92.             fill(c, 40 + c_alpha);
  93.             ellipse(xpos, ypos, won_size + add_won_size + mix_level * 2, won_size + add_won_size + mix_level * 2);
  94.         }
  95.  
  96.         void drive() {
  97.             xpos = width / 2 + sin(speed_a + (add_num)) * (add_num * sin(b));
  98.             ypos = height / 2 + cos(speed_a + (add_num)) * (add_num * sin(b));
  99.             speed_a += speed; // 회전속도
  100.         }
  101.     }
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement