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.
 
 

175 lines
6.3 KiB

PFont f10;
PFont f11;
PFont f14;
PFont f18;
PFont f20;
PFont f40;
MText katapult;
MLine mline;
String state = "nothing";
String mousestate = "nothing";
String menustate = "nothing";
String device = "Launchpad";
int mselection = 0;
int mselout = 0;
int mselmax = 0;
int menuAnswer = 0;
void menus() {
//if (NETWORK) lpdetect = true;
if (HEADLESS) { lpdetect = true; NOSEND = true; }
if (state.equals("splash")) {
background(#000000);
if (katapult != null) katapult.draw();
if (mline != null) mline.draw();
if (mline.isDone() && katapult.isDone() && katapult.y > 35) {
katapult.y -= 3;
mline.y -= 3;
mline.starty -= 3;
}
if (mline.isDone() && katapult.isDone() && katapult.y <= 35) {
if (delay > 0) {
delay--;
} else {
if (lpdetect && menustate.equals("midiout")) {
if (mselection != MFINAL && !DEVICECONFIG) {
fill(#FFFFFF);
textFont(f18, 18);
textAlign(CENTER);
smooth();
text(device+" connected", WINDOWSIZE/2, 65);
textFont(f14, 14);
textAlign(LEFT);
int ii = 0;
int[] midilist = new int[256];
String midiliststr = "What MIDI port should Katapult send MIDI data to?\n\n";
for (int i = 0; i < launchpad.infos.length; i++) {
try {
if ((MidiSystem.getMidiDevice(launchpad.infos[i]).getMaxReceivers() > 0 || MidiSystem.getMidiDevice(launchpad.infos[i]).getMaxReceivers() == -1) && !(launchpad.infos[i].getName().equals("Launchpad"))) {
midilist[ii] = i;
ii++;
}
} catch (MidiUnavailableException e) {
println("MIDI error while enumerating devices");
}
}
for (int i = 0; i < ii; i++) {
midiliststr = midiliststr + " " + (i+1) + ": " + launchpad.infos[midilist[i]].getName() + "\n";
}
midiliststr = midiliststr+"\nThis should be set to your software's input port.\nUse the arrow keys and enter to select.";
mselmax = ii;
text(midiliststr, 5, 105);
ellipse(15, 134+(17.5*mselection), 5, 5);
SOFTWARESEL = launchpad.infos[midilist[mselection]].getName();
} else {
SOFTWARE = SOFTWARESEL;
menustate = "midiin";
mselection = 0;
}
} else if (lpdetect && menustate.equals("midiin")) {
if (mselection != MFINAL && !DEVICECONFIG) {
fill(#FFFFFF);
textFont(f18, 18);
textAlign(CENTER);
smooth();
text("Launchpad connected", WINDOWSIZE/2, 65);
textFont(f14, 14);
textAlign(LEFT);
int ii = 0;
int[] midilist = new int[256];
String midiliststr = "What device should Katapult listen for MIDI data on?\n\n";
for (int i = 0; i < launchpad.infos.length; i++) {
try {
if ((MidiSystem.getMidiDevice(launchpad.infos[i]).getMaxTransmitters() > 0 || MidiSystem.getMidiDevice(launchpad.infos[i]).getMaxReceivers() == -1) && !(launchpad.infos[i].getName().equals("Launchpad"))) {
midilist[ii] = i;
ii++;
}
} catch (MidiUnavailableException e) {
println("MIDI error while enumerating devices");
}
}
for (int i = 0; i < ii; i++) {
midiliststr = midiliststr + " " + (i+1) + ": " + launchpad.infos[midilist[i]].getName() + "\n";
}
midiliststr = midiliststr+"\nThis should be set to your software's output port.\nUse the arrow keys and enter to select.";
mselmax = ii;
text(midiliststr, 5, 105);
ellipse(15, 134+(17.5*mselection), 5, 5);
SOFTWAREINSEL = launchpad.infos[midilist[mselection]].getName();
} else {
SOFTWAREIN = SOFTWAREINSEL;
menustate = "saveconfig";
mselection = 0;
}
} else if (lpdetect && menustate.equals("saveconfig")) {
if (mselection != MFINAL && !DEVICECONFIG) {
fill(#FFFFFF);
textFont(f18, 18);
textAlign(CENTER);
smooth();
text("Launchpad connected", WINDOWSIZE/2, 65);
textFont(f14, 14);
textAlign(LEFT);
int ii = 0;
int[] midilist = new int[256];
String midiliststr = "Save devices choices?\n\n Yes\n No\n\n";
midiliststr += "If you choose 'yes', your choices will be written\nto the configuration file, and this menu\nwill not be displayed at startup.\n\n";
midiliststr += "If you want to edit your devices at a later point\nyou must remove the in/out lines from the\nconfiguration file.";
mselmax = 2;
text(midiliststr, 5, 105);
ellipse(15, 134+(17.5*mselection), 5, 5);
menuAnswer = mselection;
} else {
if (menuAnswer == 0) { saveConfig(); }
menustate = "nothing";
mselection = 0;
DEMO = false;
state = "run";
noStroke();
noFill();
background(0);
initMidiSystem();
}
} else if (!lpdetect) {
fill(#FFFFFF);
textFont(f18, 18);
textAlign(CENTER);
smooth();
text("No Launchpad detected via USB\nWaiting for network connection...", WINDOWSIZE/2, WINDOWSIZE/2);
if (!online) {
initServer();
NETWORK = true;
NOSEND = true;
}
if (slaveConnected) {
mousestate = "hold";
menustate = "nothing";
mselection = 0;
device = "iPad";
DEMO = false;
//HEADLESS = true;
NOSEND = false;
state = "run";
noStroke();
noFill();
background(0);
//initMidiSystem();
splash(true);
}
if (mousestate.equals("hold")) {
mousestate = "nothing";
} else {
mousestate = "quit";
}
}
}
}
fill(#FFFFFF);
textFont(f11, 11);
textAlign(RIGHT);
smooth();
text(UNLICENSED+" v:"+VERSION, WINDOWSIZE-2, WINDOWSIZE-2);
}
}