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