You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
3.8 KiB
140 lines
3.8 KiB
License license = new License();
|
|
boolean lpdetect = false;
|
|
boolean allgood = false;
|
|
int delay;
|
|
|
|
void setup(){
|
|
loadConfig();
|
|
setupDemos();
|
|
f10 = loadFont("10.vlw");
|
|
f11 = loadFont("11.vlw");
|
|
f14 = loadFont("14.vlw");
|
|
f18 = loadFont("18.vlw");
|
|
f20 = loadFont("20.vlw");
|
|
f40 = loadFont("40.vlw");
|
|
size(WINDOWSIZE, WINDOWSIZE);
|
|
background(0);
|
|
frameRate(FRAMERATE);
|
|
launchpad = new MIDI("Launchpad");
|
|
if (launchpad.initialised) launchpad.sendCtl(0, 0, 0);
|
|
sleep(500);
|
|
if (launchpad.initialised) launchpad.sendCtl(0, 0, 0);
|
|
|
|
if (launchpad.initialised) {
|
|
//debug("Launchpad detected, huzzah!");
|
|
launchpad.reset();
|
|
splash(true);
|
|
} else {
|
|
//debug("Oh sorrow... No Launchpad was detected...");
|
|
splash(false);
|
|
}
|
|
}
|
|
|
|
void splash(boolean success) {
|
|
if (SILENTMODE) {
|
|
if (!SOFTWARE.equals("") && !SOFTWAREIN.equals("")) {
|
|
fill(#FFFFFF);
|
|
textFont(f10, 10);
|
|
textAlign(LEFT);
|
|
smooth();
|
|
text("Out: "+SOFTWARE+"\nIn: "+SOFTWAREIN, 2, 12);
|
|
initMidiSystem();
|
|
} else {
|
|
SILENTMODE = false;
|
|
}
|
|
}
|
|
if (!SILENTMODE) {
|
|
if (success) { launchpad.reset(); DEMO = true; displaystate = true; }
|
|
lpdetect = success;
|
|
delay = 15;
|
|
state = "splash";
|
|
menustate = "midiout";
|
|
katapult = new MText("Katapult", 0, WINDOWSIZE/2);
|
|
mline = new MLine(WINDOWSIZE, WINDOWSIZE/2+3);
|
|
katapult.setDestination(WINDOWSIZE/2, WINDOWSIZE/2);
|
|
katapult.setDuration(16);
|
|
mline.setDestination(0, WINDOWSIZE/2+3);
|
|
mline.setDuration(20);
|
|
mline.animate();
|
|
katapult.animate();
|
|
}
|
|
}
|
|
|
|
void initMidiSystem() {
|
|
//debug("Initiaing MIDI system...");
|
|
//debug("SOFTWARE: " + SOFTWARE);
|
|
//debug("SOFTWAREIN: " + SOFTWAREIN);
|
|
receiverA = new MIDIListener("Launchpad");
|
|
receiverB = new MIDIListener("Software");
|
|
software = new MIDI(SOFTWARE);
|
|
softwareIn = new MIDIinput(SOFTWAREIN, receiverB);
|
|
launchpadIn = new MIDIinput("Launchpad", receiverA);
|
|
software.reset();
|
|
softwareIn.reset();
|
|
launchpadIn.reset();
|
|
|
|
displaystate = true;
|
|
clearDisplay();
|
|
displaystate = false;
|
|
loadLayouts();
|
|
for (int i = 0; i < numberOfPages; i++) {
|
|
loadLayout(pageNumbers[i]);
|
|
loadLayout(PAGESELECTOR);
|
|
}
|
|
displaystate = true;
|
|
loadLayout(1);
|
|
demo = sdemo;
|
|
allgood = true;
|
|
}
|
|
|
|
void draw() {
|
|
if (online) readServer();
|
|
if (DEMO) demos();
|
|
menus();
|
|
}
|
|
|
|
void cleanup() {
|
|
clearDisplay();
|
|
if (launchpad != null) launchpad.close();
|
|
if (software != null) software.close();
|
|
if (launchpadIn != null) launchpadIn.close();
|
|
if (softwareIn != null) softwareIn.close();
|
|
}
|
|
|
|
public void stop() {
|
|
cleanup();
|
|
clearDisplay();
|
|
super.stop();
|
|
}
|
|
|
|
void mousePressed() {
|
|
if (mousestate.equals("quit")) {
|
|
displaystate = false;
|
|
clearDisplay();
|
|
exit();
|
|
}
|
|
}
|
|
|
|
void keyPressed() {
|
|
if ((int)keyCode == 40 && mselection < mselmax - 1) mselection = (mselection + 1)%mselmax;
|
|
if ((int)keyCode == 38 && mselection > 0) mselection = (mselection - 1)%mselmax;
|
|
if ((int)keyCode == 10) { mselout = mselection; mselection = MFINAL; }
|
|
if ((int)keyCode == 37 && (HEADLESS == true || NETWORK == true) && currentPage > 1) { selectedPage = pageNumbers[indexForKey(pageNumbers, selectedPage)-1]; loadLayout(selectedPage); }
|
|
if ((int)keyCode == 39 && (HEADLESS == true || NETWORK == true) && currentPage < pageNumbers[numberOfPages-1]) { selectedPage = pageNumbers[indexForKey(pageNumbers, selectedPage)+1]; loadLayout(selectedPage); }
|
|
if ((int)keyCode == 80 && (HEADLESS == true || NETWORK == true || LIVEENABLED == true)) { reloadLayouts(); }
|
|
//if ((int)keyCode == 80 && (HEADLESS == true || NETWORK == true)) { DEMO = !(DEMO); }
|
|
// if ((int)keyCode == 27) cleanup();
|
|
}
|
|
|
|
// Testing functions
|
|
|
|
void debug(String msg) {
|
|
if (DEBUG) println(msg);
|
|
}
|
|
|
|
int indexForKey(int[] a, int target) {
|
|
for (int i = 0; i < a.length; i++) {
|
|
if (a[i] == target) return i;
|
|
}
|
|
return 0;
|
|
}
|
|
|