annotate HeresyBigBangDone/IO.pde @ 50:f4c6999ecfe9 tip

added the files on my computer that aren't aiff s> these shoudl be everything for the big bang fair 2011 - heresy, and tim's file's also here
author Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk>
date Sat, 08 Oct 2011 22:12:49 +0100
parents 0eeda0223db3
children
rev   line source
rebecca@26 1 void sendNote(VPNote note, int channel){ // send note function gathers info to output to max
rebecca@26 2 outputToMax(note.VPNotePitch, note.VPNoteVelocity, channel);
rebecca@26 3 }
rebecca@26 4
rebecca@26 5
rebecca@26 6 //-------------------------------------------------------------------------------------------------------------------------------
rebecca@26 7
rebecca@26 8 void outputToMax(int note, int velocity, int channel){ // calculates the necessary note on and note offs depending on ducking and muting and sends them to max
rebecca@26 9 String noteOut = "";
rebecca@26 10 if (!tracks[channel].mute){
rebecca@26 11 if (tracks[channel].ducking){
rebecca@26 12 if (velocity != 0){
rebecca@26 13 noteOut = ("" + note + " " + velocity + " " + (channel+8));
rebecca@26 14 }
rebecca@26 15 if (velocity == 0 && !tracks[channel].cycled){
rebecca@26 16 noteOut = ("" + note + " " + velocity + " " + (channel+8));
rebecca@26 17 OscMessage message = new OscMessage("/pitch_vel_chan");
rebecca@26 18 message.add(noteOut);
rebecca@26 19 oscP5return.send(message, ableton);
rebecca@26 20 link.output(noteOut);
rebecca@26 21 noteOut = ("" + note + " " + velocity + " " + channel);
rebecca@26 22 }
rebecca@26 23 if (velocity == 0 && tracks[channel].cycled){
rebecca@26 24 noteOut = ("" + note + " " + velocity + " " + (channel+8));
rebecca@26 25 }
rebecca@26 26 }
rebecca@26 27 if (!tracks[channel].ducking){
rebecca@26 28 if (velocity != 0){
rebecca@26 29 noteOut = ("" + note + " " + velocity + " " + channel);
rebecca@26 30 }
rebecca@26 31 if (velocity == 0 && !tracks[channel].cycled){
rebecca@26 32 noteOut = ("" + note + " " + velocity + " " + (channel+8));
rebecca@26 33 OscMessage message = new OscMessage("/pitch_vel_chan");
rebecca@26 34 message.add(noteOut);
rebecca@26 35 oscP5return.send(message, ableton);
rebecca@26 36 link.output(noteOut);
rebecca@26 37 noteOut = ("" + note + " " + velocity + " " + channel);
rebecca@26 38 }
rebecca@26 39 if (velocity == 0 && tracks[channel].cycled){
rebecca@26 40 noteOut = ("" + note + " " + velocity + " " + channel);
rebecca@26 41 }
rebecca@26 42 }
rebecca@26 43 link.output(noteOut);
rebecca@26 44 OscMessage message = new OscMessage("/pitch_vel_chan");
rebecca@26 45 message.add(noteOut);
rebecca@26 46 oscP5return.send(message, ableton);
rebecca@26 47
rebecca@26 48 }
rebecca@26 49 if (tracks[channel].mute){
rebecca@26 50 if (velocity == 0 && !tracks[channel].cycled){
rebecca@26 51 noteOut = ("" + note + " " + velocity + " " + (channel+8));
rebecca@26 52 link.output(noteOut);
rebecca@26 53 OscMessage message = new OscMessage("/pitch_vel_chan");
rebecca@26 54 message.add(noteOut);
rebecca@26 55 oscP5return.send(message, ableton);
rebecca@26 56 noteOut = ("" + note + " " + velocity + " " + channel);
rebecca@26 57 OscMessage message2 = new OscMessage("/pitch_vel_chan");
rebecca@26 58 message2.add(noteOut);
rebecca@26 59 oscP5return.send(message, ableton);
rebecca@26 60 link.output(noteOut);
rebecca@26 61 }
rebecca@26 62 }
rebecca@26 63 }
rebecca@26 64
rebecca@26 65
rebecca@26 66 //-------------------------------------------------------------------------------------------------------------------------------
rebecca@26 67
rebecca@26 68 void mouseDragged(){ // not used
rebecca@26 69 }
rebecca@26 70
rebecca@26 71
rebecca@26 72 //-------------------------------------------------------------------------------------------------------------------------------
rebecca@26 73
rebecca@26 74 void mouseReleased(){ // not used
rebecca@26 75 }
rebecca@26 76
rebecca@26 77
rebecca@26 78 //-------------------------------------------------------------------------------------------------------------------------------
rebecca@26 79
rebecca@26 80 void mousePressed(){ // not used
rebecca@26 81 }
rebecca@26 82
rebecca@26 83
rebecca@26 84 //-------------------------------------------------------------------------------------------------------------------------------
rebecca@26 85
rebecca@26 86 void keyPressed() { // takes keyboard input
rebecca@26 87 if (key == 'c' || key == 'C') {
rebecca@26 88 chordSelecter = !chordSelecter;
rebecca@26 89 if (!chordSelecter)
rebecca@26 90 trSelected = lastTrack;
rebecca@26 91 else{
rebecca@26 92 lastTrack = trSelected;
rebecca@26 93 trSelected = 0;
rebecca@26 94
rebecca@26 95 }
rebecca@26 96 }
rebecca@26 97
rebecca@26 98 if (key == ' ') {
rebecca@26 99 if (trSelected != 0){
rebecca@26 100 for (int i = 0; i < 16; i++){
rebecca@26 101 noteOnArray[i] = false;
rebecca@26 102 finishNote(i);
rebecca@26 103 displayNoteOnArray[i] = false;
rebecca@26 104 }
rebecca@26 105
rebecca@26 106 if (trSelected != 0){
rebecca@26 107 for (int i = 24; i < 109; i++)
rebecca@26 108 outputToMax(i, 0, trSelected);
rebecca@26 109 }
rebecca@26 110 tracks[trSelected] = new Track(tracks[trSelected].name, true, tracks[trSelected].loopLength, tracks[trSelected].quantize, false, false);
rebecca@26 111 imgNotes = null;
rebecca@26 112 }
rebecca@26 113
rebecca@26 114 if (trSelected == 0){
rebecca@26 115 for (int i = 0; i < 16; i++){
rebecca@26 116 noteOnArray[i] = false;
rebecca@26 117 finishNote(i);
rebecca@26 118 displayNoteOnArray[i] = false;
rebecca@26 119 }
rebecca@26 120 heresyMinor = false;
rebecca@26 121 heresy7th = false;
rebecca@26 122 heresy9th = false;
rebecca@26 123 heresy11th = false;
rebecca@26 124 heresy13th = false;
rebecca@26 125 chordsTemp = new Track(tracks[trSelected].name, true, tracks[trSelected].loopLength, tracks[trSelected].quantize, false, false);
rebecca@26 126 imgNotes = null;
rebecca@26 127 }
rebecca@26 128 }
rebecca@26 129
rebecca@26 130 if (key == 'p' || key == 'P') {
rebecca@26 131 for (int i = 0; i < 16; i++){
rebecca@26 132 for (int ii = 24; ii < 109; ii++)
rebecca@26 133 outputToMax(ii, 0, trSelected);
rebecca@26 134 noteOnArray[i] = false;
rebecca@26 135 displayNoteOnArray[i] = false;
rebecca@26 136 }
rebecca@26 137 }
rebecca@26 138
rebecca@26 139 if (key == 'd' || key == 'D') {
rebecca@26 140 if (trSelected != 0 && trSelected != 1){
rebecca@26 141 tracks[trSelected].ducking = !tracks[trSelected].ducking;
rebecca@26 142 tracks[trSelected].cycled = false;
rebecca@26 143 tracks[trSelected].cycledPosition = currentPulse%tracks[trSelected].loopLength;
rebecca@26 144 }
rebecca@26 145 }
rebecca@26 146
rebecca@26 147 if (key == 'w' || key == 'W') {
rebecca@26 148
rebecca@26 149 trSelected = 0;
rebecca@26 150
rebecca@26 151 for (int i = 0; i < 16; i++){
rebecca@26 152 noteOnArray[i] = false;
rebecca@26 153 finishNoteCutOff(i);
rebecca@26 154 displayNoteOnArray[i] = false;
rebecca@26 155 }
rebecca@26 156 heresyMinor = false;
rebecca@26 157 heresy7th = false;
rebecca@26 158 heresy9th = false;
rebecca@26 159 heresy11th = false;
rebecca@26 160 heresy13th = false;
rebecca@26 161
rebecca@26 162 tracks[trSelected] = new Track(tracks[trSelected].name, true, tracks[trSelected].loopLength, tracks[trSelected].quantize, false, false);
rebecca@26 163 chordsTemp = new Track(tracks[trSelected].name, true, tracks[trSelected].loopLength, tracks[trSelected].quantize, false, false);
rebecca@26 164 imgNotes = null;
rebecca@26 165 }
rebecca@26 166
rebecca@26 167 if (key == 'q' || key == 'Q'){
rebecca@26 168 quantizeValueIn = true;
rebecca@26 169 sendToScreen(tracks[trSelected].name + " quantize?");
rebecca@26 170 }
rebecca@26 171
rebecca@26 172 if (key == 'x' || key == 'X'){
rebecca@26 173 clickTrackOn = !clickTrackOn;
rebecca@26 174 }
rebecca@26 175
rebecca@26 176 if (key == 'e' || key == 'E'){
rebecca@26 177 eraseOn = !eraseOn;
rebecca@26 178 if (!eraseOn) imgNotes = null;
rebecca@26 179 }
rebecca@26 180
rebecca@26 181 if (key == 'r' || key == 'R'){
rebecca@26 182 imgNotes = null;
rebecca@26 183 }
rebecca@26 184
rebecca@26 185 if (key == 'l' || key == 'L'){
rebecca@26 186 loopLengthValueIn = true;
rebecca@26 187 sendToScreen(tracks[trSelected].name + " loop length?");
rebecca@26 188 }
rebecca@26 189
rebecca@26 190 if (key == 'm' || key == 'M'){
rebecca@26 191 if (trSelected != 0){
rebecca@26 192 muteValueIn = true;
rebecca@26 193 if (!tracks[trSelected].mute)
rebecca@26 194 sendToScreen(tracks[trSelected].name + " mute in?");
rebecca@26 195 if (tracks[trSelected].mute)
rebecca@26 196 sendToScreen(tracks[trSelected].name + " unmute in?");
rebecca@26 197 }
rebecca@26 198 }
rebecca@26 199
rebecca@26 200
rebecca@26 201 if (key == '1') numberKey(1);
rebecca@26 202 if (key == '2') numberKey(2);
rebecca@26 203 if (key == '3') numberKey(3);
rebecca@26 204 if (key == '4') numberKey(4);
rebecca@26 205 if (key == '5') numberKey(5);
rebecca@26 206 if (key == '6') numberKey(6);
rebecca@26 207 if (key == '7') numberKey(7);
rebecca@26 208 if (key == '8') numberKey(8);
rebecca@26 209 if (key == '9') numberKey(9);
rebecca@26 210 if (key == '0') numberKey(0);
rebecca@26 211
rebecca@26 212 if (key == CODED) {
rebecca@26 213 if (keyCode == UP && trSelected < Track.currentNumberOfTracks-1)
rebecca@26 214 trSelected++;
rebecca@26 215 if (keyCode == DOWN && trSelected > 1) {
rebecca@26 216 trSelected--;
rebecca@26 217 }
rebecca@26 218 }
rebecca@26 219
rebecca@26 220 if (key == 's' || key == 'S'){
rebecca@26 221 for (int i = 0; i < 16; i++){
rebecca@26 222 for (int ii = 0; ii < tracks[0].loopLength; ii++){
rebecca@26 223 if (chordsTemp.sequence[i][ii] != null)
rebecca@26 224 tracks[0].sequence[i][ii] = chordsTemp.sequence[i][ii];
rebecca@26 225 }
rebecca@26 226 }
rebecca@26 227 }
rebecca@26 228
rebecca@26 229
rebecca@26 230 }
rebecca@26 231
rebecca@26 232
rebecca@26 233 //-------------------------------------------------------------------------------------------------------------------------------
rebecca@26 234
rebecca@26 235 void numberKey(int input){ // if a number is enterd, this method works out what to do with it
rebecca@26 236 if (quantizeValueIn == true)
rebecca@26 237 if (input == 1 || input == 2 || input == 4 || input == 8 || input == 0){
rebecca@26 238 tracks[trSelected].quantize = input;
rebecca@26 239 quantizeValueIn = false;
rebecca@26 240 aniOut = true;
rebecca@26 241 }
rebecca@26 242
rebecca@26 243 if (loopLengthValueIn == true){
rebecca@26 244 if (input >= 1 && input <= 8 ){
rebecca@26 245 Track tempTrack = new Track(tracks[trSelected].name, tracks[trSelected].polyphonic, (input * loopLength / 2), tracks[trSelected].quantize, false, false);
rebecca@26 246 NoteEvent tempNote;
rebecca@26 247
rebecca@26 248 for (int i = 0; i < 16; i++){
rebecca@26 249 if (tempTrack.loopLength >= tracks[trSelected].loopLength){
rebecca@26 250 for (int ii = 0; ii < tracks[trSelected].loopLength; ii++){
rebecca@26 251 tempTrack.sequence[i][ii] = tracks[trSelected].sequence[i][ii];
rebecca@26 252 }
rebecca@26 253 }else{
rebecca@26 254 for (int ii = 0; ii < tempTrack.loopLength; ii++){
rebecca@26 255 tempTrack.sequence[i][ii] = tracks[trSelected].sequence[i][ii];
rebecca@26 256 }
rebecca@26 257 }
rebecca@26 258 }
rebecca@26 259 tracks[trSelected] = tempTrack;
rebecca@26 260 for (int i = 0; i < 16; i++)
rebecca@26 261 if (noteOnArray[i] = true){
rebecca@26 262 noteOnArray[i] = false;
rebecca@26 263 finishNoteCutOff(i);
rebecca@26 264 displayNoteOnArray[i] = false;
rebecca@26 265 }
rebecca@26 266
rebecca@26 267
rebecca@26 268 loopLengthValueIn = false;
rebecca@26 269 aniOut = true;
rebecca@26 270 if (trSelected ==0){
rebecca@26 271 Track tempTrack2 = new Track(chordsTemp.name, chordsTemp.polyphonic, (input * loopLength / 2), chordsTemp.quantize, false, false);
rebecca@26 272 NoteEvent tempNote2;
rebecca@26 273
rebecca@26 274 for (int i = 0; i < 16; i++){
rebecca@26 275 if (tempTrack2.loopLength >= chordsTemp.loopLength){
rebecca@26 276 for (int ii = 0; ii < chordsTemp.loopLength; ii++){
rebecca@26 277 tempTrack2.sequence[i][ii] = chordsTemp.sequence[i][ii];
rebecca@26 278 }
rebecca@26 279 }else{
rebecca@26 280 for (int ii = 0; ii < tempTrack2.loopLength; ii++){
rebecca@26 281 tempTrack2.sequence[i][ii] = chordsTemp.sequence[i][ii];
rebecca@26 282 }
rebecca@26 283 }
rebecca@26 284 }
rebecca@26 285 chordsTemp = tempTrack2;
rebecca@26 286 }
rebecca@26 287 imgNotes = null;
rebecca@26 288 }
rebecca@26 289 }
rebecca@26 290
rebecca@26 291 if (muteValueIn == true){
rebecca@26 292 tracks[trSelected].muteIn = bar + input;
rebecca@26 293 muteValueIn = false;
rebecca@26 294 tracks[trSelected].muteDone = false;
rebecca@26 295 aniOut = true;
rebecca@26 296 }
rebecca@26 297
rebecca@26 298
rebecca@26 299 }
rebecca@26 300
rebecca@26 301
rebecca@26 302 //-------------------------------------------------------------------------------------------------------------------------------
rebecca@26 303
rebecca@26 304 void sendToScreen(String name){ // prepares a question for asking the user and turns the question on
rebecca@26 305
rebecca@26 306 screenQuestion = name;
rebecca@26 307 screenAni = 0;
rebecca@26 308 haveQuestion = true;
rebecca@26 309
rebecca@26 310 }
rebecca@26 311
rebecca@26 312
rebecca@26 313 //-------------------------------------------------------------------------------------------------------------------------------
rebecca@26 314
rebecca@26 315 void checkCycled(){ // checks whether after ducking or muting all note offs are played.
rebecca@26 316 for (int i = 1; i < Track.currentNumberOfTracks; i++)
rebecca@26 317 if (tracks[i].cycled == false)
rebecca@26 318 if (tracks[i].cycledPosition-1 == currentPulse%tracks[trSelected].loopLength)
rebecca@26 319 tracks[i].cycled = true;
rebecca@26 320
rebecca@26 321 }
rebecca@26 322
rebecca@26 323
rebecca@26 324 //-------------------------------------------------------------------------------------------------------------------------------
rebecca@26 325
rebecca@26 326
rebecca@26 327 void checkForMutes(){ // looks for mute / unmuted changes in tracks
rebecca@26 328 for (int i = 1; i < Track.currentNumberOfTracks; i++)
rebecca@26 329 if (tracks[i].muteIn == bar && !tracks[i].muteDone){
rebecca@26 330 tracks[i].mute = !tracks[i].mute;
rebecca@26 331 tracks[i].muteDone = true;
rebecca@26 332 tracks[trSelected].cycled = false;
rebecca@26 333 tracks[trSelected].cycledPosition = currentPulse%tracks[trSelected].loopLength;
rebecca@26 334 }
rebecca@26 335 }
rebecca@26 336
rebecca@26 337
rebecca@26 338
rebecca@26 339 //-------------------------------------------------------------------------------------------------------------------------------
rebecca@26 340
rebecca@26 341 void writeQuestion(){ // animates screen questions
rebecca@26 342
rebecca@26 343 if (screenAni < 10 && !aniOut){
rebecca@26 344 screenAni++;
rebecca@26 345 }
rebecca@26 346
rebecca@26 347 if (screenAni > 0 && aniOut){
rebecca@26 348 screenAni--;
rebecca@26 349 }
rebecca@26 350
rebecca@26 351 if (screenAni == 0){
rebecca@26 352 haveQuestion = false;
rebecca@26 353 aniOut = false;
rebecca@26 354 }
rebecca@26 355
rebecca@26 356 fill(255,0,0, screenAni*12);
rebecca@26 357 textSize((11-screenAni)*40);
rebecca@26 358 text(screenQuestion, (screenAni*50)-200,(100-screenAni*10)+150);
rebecca@26 359
rebecca@26 360
rebecca@26 361 }
rebecca@26 362
rebecca@26 363
rebecca@26 364 //-------------------------------------------------------------------------------------------------------------------------------
rebecca@26 365
rebecca@26 366 void oscEvent(OscMessage theOscMessage) { // recieves osc messages from openFrameworks
rebecca@36 367 println("osc message : " + theOscMessage);
rebecca@26 368 if(theOscMessage.checkAddrPattern("/test")==true) {
rebecca@36 369 println("i1 : " + theOscMessage.get(1).intValue() + " i2 : " + theOscMessage.get(2).intValue() + " i3 : " + theOscMessage.get(3).intValue() + " i4 : " + theOscMessage.get(4).intValue());
rebecca@26 370 clickTrack = false;
rebecca@26 371 String stringValue = theOscMessage.get(0).stringValue();
rebecca@26 372 int firstValue = theOscMessage.get(1).intValue();
rebecca@26 373 int secondValue = theOscMessage.get(2).intValue();
rebecca@26 374 int thirdValue = theOscMessage.get(3).intValue(); //velocity
rebecca@26 375 int fourthValue = theOscMessage.get(4).intValue(); //channel
rebecca@26 376 if (secondValue == 1){
andrew@49 377 if (firstValue != 0 && fourthValue == 1){
rebecca@26 378 noteOnArray[firstValue] = true;
andrew@49 379 writeNote(firstValue-1, thirdValue, fourthValue);
andrew@49 380 }
andrew@49 381 else {
andrew@49 382 noteOnArray[firstValue] = true;
andrew@49 383 writeNote(firstValue, thirdValue, fourthValue);
andrew@49 384 }
andrew@49 385 }
andrew@49 386 else if (firstValue != 0 && fourthValue == 1){
andrew@49 387 noteOnArray[firstValue] = false;
andrew@49 388 writeNote(firstValue-=1, 0, fourthValue);
rebecca@26 389 }
rebecca@26 390 else{
andrew@49 391 noteOnArray[firstValue] = false;
andrew@49 392 writeNote(firstValue, 0, fourthValue);
rebecca@26 393 }
rebecca@26 394 }
rebecca@26 395 if(theOscMessage.checkAddrPattern("/chord")==true) {
rebecca@42 396 chordCalc();
rebecca@42 397 // writeNote(15, 80, 6);
rebecca@42 398 writeNote(14, 80, 6);
rebecca@42 399 writeNote(13, 80, 6);
rebecca@42 400 writeNote(12, 80, 6);
rebecca@42 401 writeNote(11, 80, 6);
rebecca@42 402 writeNote(10, 80, 6);
rebecca@42 403 writeNote(9, 80, 6);
rebecca@26 404 }
rebecca@26 405 }
rebecca@26 406
rebecca@26 407
rebecca@26 408