davideriboli
6/25/2015 - 2:05 PM

VJing Processing #studenti #processing #vj #video

VJing Processing #studenti #processing #vj #video

/*
Daria Kokareva
ABA Urbino NTA III
Multimedia
prof. Davide Riboli
2014/2015
 */

//Libs
import ddf.minim.spi.*;
import ddf.minim.signals.*;
import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.ugens.*;
import ddf.minim.effects.*;
import processing.video.*;

AudioPlayer song;
AudioPlayer[] effect;
Minim minim;
AudioMetaData meta;
BeatDetect beat;
FFT         fft;

Movie myMovie;
Movie myMovie_macro;
int freq=20;
int u=0;
int n=15;
int index=0;
int m=255;
int b=255;
int frames=24;
boolean recording = false;
int q = 0;

void effectPlay() {

  effect = new AudioPlayer[7];

  effect[0] = minim.loadFile("music_01.mp3");
  effect[1] = minim.loadFile("music_02.mp3");
  effect[2] = minim.loadFile("music_03.mp3");
  effect[3] = minim.loadFile("music_04.mp3");
  effect[4] = minim.loadFile("music_05.mp3");
  effect[5] = minim.loadFile("music_06.mp3");
  effect[6] = minim.loadFile("music_07.mp3");
  //effect[] = minim.loadFile("");

  index=  int (random(effect.length));
}

void setup()
{
  size(352, 288);
  
  //frameRate (frames);

  myMovie = new Movie(this, "video_01.3gp");
  myMovie.frameRate(frames);
  myMovie.loop(); 
  myMovie_macro=new Movie(this, "music_02.3gp");
  myMovie_macro.loop();

  minim= new Minim(this);

  effectPlay();
  effect[index].loop();

  // fast furier transform, legge frequenze audio
  fft = new FFT( effect[index].bufferSize(), effect[index].sampleRate() );

}

void draw() {
  fft.forward( effect[index].mix );
  tint(b, 255);
  image(myMovie, 0, 0);
  tint(m, fft.getFreq(n)*freq);
  image(myMovie_macro, 0, 0);  

  if (recording) {
    // VideoExport.saveFrame();
    updatePixels();
  }
}

//Read the video
void movieEvent(Movie m) {
  myMovie.read();
  myMovie_macro.read();
}

void keyPressed() {

  if (key=='s') {
    recording = !recording;
    println("Recording is " + (recording ? "ON" : "OFF"));
  } 

  // z= random play audio tracks
  if (key=='z') {  

    effect[index].close();
    index= int (random(effect.length));
    effect[index].play();
  }

  // 0/9 = play/pause
  if (key =='0') {
    effect[index].pause();
  }

  if (key=='9') {
    effect[index].play();
  }


  //Light Video 01
  if (key=='m') {
    m=m+15;
    println (m);
    if (m>255) {
      m=255;
    }
  }
  if (key=='n') {
    m=m-15;
    println (m);
    if (m<0) {
      m=0;
    }
  }

  //Light Video 02
  if (key=='l') {
    b=b+15;
    println (b);
    if (b>255 || b==0) {
      b=255;
    }
  }
  if (key=='k') {
    b=b-15;
    println (b);
    if (b<0 || b==0) {
      b=0;
    }
  }

  //Video freq
  if (key=='d') {
    freq= freq+5;
    println (freq);
  }
  if (key=='f') {
    freq= freq-5;
    println (freq);
  }

  //Video 01 play/pause
  if (key=='h') {
    myMovie.play();
  }

  if (key=='j') {
    myMovie.pause();
  }

 //Video 02 play/pause
  if (key=='o') {
    myMovie_macro.play();
  }

  if (key=='p') {
    myMovie_macro.pause();
  }
}