summaryrefslogtreecommitdiff
path: root/sf_live/sf_live.pde
blob: aa8406f889477ad6ddaea60a528b7575c8a483a8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
//modprobe snd-virmidi
//creates virtual midi interface

import javax.sound.midi.*;
import java.io.File;
import ddf.minim.*;

String midiFileName = "Sailing Architraves Tim Live.mid";
String audioFileName = "Sailing Architraves Tim Live.mp3";
Sequencer s;
MetaListener metaListener;

Minim minim;
AudioPlayer audioPlayer;

int pw,ph;

import rwmidi.*;
MidiOutput midiOut;

void setup(){
  

   rwmidi.MidiDevice[] devs=RWMidi.getOutputDevices();
  /*
  if (devs.length>0) {
    println("MIDI devices:");
    for (int i=0;i<devs.length;i++) {
      println(str(i)+": "+devs[i]);
    }
  }
  */
  
  midiOut= RWMidi.getOutputDevices()[0].createOutput();
  
  println("opened "+devs[0]+" for output");
  
  
 
  size(300, 110, P3D);
 
  frameRate(15);
 
  //load audio file
  minim = new Minim(this);
  audioPlayer = minim.loadFile(audioFileName, 2048);
  audioPlayer.play();
  //audioPlayer.loop(9999999);
  //audioPlayer is started when midi sequencer is started
  
  startMidiFile();

  background(0);
  rectMode(CORNER);
  noStroke();

  colorMode(RGB, 255);

 
}

float time=0;
void draw(){
  time+=(1f/(153f*25));


    //saveFrame("frames/img####.png");
    if (!audioPlayer.isPlaying()) exit();
}

//change rate of drop?
//veering??


void startMidiFile(){
  InputStream midiFileStream =  createInput(midiFileName);
    
  try {
    s = MidiSystem.getSequencer(false);
    s.setSequence(MidiSystem.getSequence(midiFileStream));
    
    //Create a MidiReceiver that listens to NOTE ON and OFF events
    Receiver midiReceiver = new MidiReceiver();
    Transmitter midiTransmitter = s.getTransmitter();
    midiTransmitter.setReceiver(midiReceiver);
    
    //Create a MetaEventListener that listens to the END OF TRACK event
    metaListener = new MetaListener();
    s.addMetaEventListener(metaListener);
    s.open();
    s.setTickPosition(0L);
    s.start();
  }
  catch(Exception e) {
    println(e);
    background(0, 100, 100); //red screen if erro
    //stop();
  }
        
}


void stop(){
 s.stop();
}


void keyPressed() {
 switch(key){

 }
}