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){
}
}
|