diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/HeresyBigBangDone/application.macosx/source/IO.pde	Sat Oct 08 22:12:49 2011 +0100
@@ -0,0 +1,398 @@
+void sendNote(VPNote note, int channel){ // send note function gathers info to output to max
+    outputToMax(note.VPNotePitch, note.VPNoteVelocity, channel);
+}
+
+
+//-------------------------------------------------------------------------------------------------------------------------------
+
+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
+    String noteOut = "";
+    if (!tracks[channel].mute){
+        if (tracks[channel].ducking){
+            if (velocity != 0){
+                noteOut = ("" + note + " " + velocity + " " + (channel+8));
+            }
+            if (velocity == 0 && !tracks[channel].cycled){
+                noteOut = ("" + note + " " + velocity + " " + (channel+8));
+                  OscMessage message = new OscMessage("/pitch_vel_chan");
+                  message.add(noteOut);
+                  oscP5return.send(message, ableton);
+                link.output(noteOut);
+                noteOut = ("" + note + " " + velocity + " " + channel);
+            }
+            if (velocity == 0 && tracks[channel].cycled){
+                noteOut = ("" + note + " " + velocity + " " + (channel+8));      
+            }
+        }
+        if (!tracks[channel].ducking){
+            if (velocity != 0){
+                noteOut = ("" + note + " " + velocity + " " + channel);
+            }
+            if (velocity == 0 && !tracks[channel].cycled){
+                noteOut = ("" + note + " " + velocity + " " + (channel+8));
+                  OscMessage message = new OscMessage("/pitch_vel_chan");
+                  message.add(noteOut);
+                  oscP5return.send(message, ableton);
+                link.output(noteOut);
+                noteOut = ("" + note + " " + velocity + " " + channel);
+            }
+            if (velocity == 0 && tracks[channel].cycled){
+                noteOut = ("" + note + " " + velocity + " " + channel);  
+            }
+        }
+        link.output(noteOut);
+        OscMessage message = new OscMessage("/pitch_vel_chan");
+        message.add(noteOut);
+        oscP5return.send(message, ableton);
+        
+    }
+    if (tracks[channel].mute){
+        if (velocity == 0 && !tracks[channel].cycled){
+            noteOut = ("" + note + " " + velocity + " " + (channel+8));
+            link.output(noteOut);
+            OscMessage message = new OscMessage("/pitch_vel_chan");
+            message.add(noteOut);
+            oscP5return.send(message, ableton);
+            noteOut = ("" + note + " " + velocity + " " + channel);
+            OscMessage message2 = new OscMessage("/pitch_vel_chan");
+            message2.add(noteOut);
+            oscP5return.send(message, ableton);
+            link.output(noteOut);
+        }
+    }   
+}
+
+
+//-------------------------------------------------------------------------------------------------------------------------------
+
+void mouseDragged(){ // not used
+}
+
+
+//-------------------------------------------------------------------------------------------------------------------------------
+
+void mouseReleased(){ // not used
+}
+
+
+//-------------------------------------------------------------------------------------------------------------------------------
+
+void mousePressed(){ // not used
+}
+
+
+//-------------------------------------------------------------------------------------------------------------------------------
+
+void keyPressed() { // takes keyboard input
+    if (key == 'c' || key == 'C') {
+        chordSelecter = !chordSelecter;
+        if (!chordSelecter)
+            trSelected = lastTrack;
+        else{
+            lastTrack = trSelected;
+            trSelected = 0;
+            
+        }
+    }
+    
+    if (key == ' ') {
+        if (trSelected != 0){
+            for (int i = 0; i < 16; i++){
+                noteOnArray[i] = false;
+                finishNote(i);
+                displayNoteOnArray[i] = false;
+           }
+    
+           if (trSelected != 0){     
+              for (int i = 24; i < 109; i++)
+                outputToMax(i, 0, trSelected);
+           }
+           tracks[trSelected] = new Track(tracks[trSelected].name, true,  tracks[trSelected].loopLength, tracks[trSelected].quantize, false, false);
+           imgNotes = null;
+        }
+        
+        if (trSelected == 0){
+           for (int i = 0; i < 16; i++){
+               noteOnArray[i] = false;
+               finishNote(i);
+               displayNoteOnArray[i] = false;
+           }
+           heresyMinor = false;
+           heresy7th = false;
+           heresy9th = false;
+           heresy11th = false;
+           heresy13th = false;
+           chordsTemp = new Track(tracks[trSelected].name, true,  tracks[trSelected].loopLength, tracks[trSelected].quantize, false, false);
+           imgNotes = null;
+        }
+    }
+
+     if (key == 'p' || key == 'P') {
+         for (int i = 0; i < 16; i++){
+              for (int ii = 24; ii < 109; ii++)
+                outputToMax(ii, 0, trSelected);
+             noteOnArray[i] = false;
+             displayNoteOnArray[i] = false; 
+         }
+     }
+     
+     if (key == 'd' || key == 'D') {
+         if (trSelected != 0 && trSelected != 1){
+               tracks[trSelected].ducking = !tracks[trSelected].ducking;
+               tracks[trSelected].cycled = false;
+               tracks[trSelected].cycledPosition = currentPulse%tracks[trSelected].loopLength; 
+         }
+     }
+    
+     if (key == 'w' || key == 'W') {
+       
+        trSelected = 0;
+
+        for (int i = 0; i < 16; i++){
+            noteOnArray[i] = false;
+            finishNoteCutOff(i);
+            displayNoteOnArray[i] = false;
+        }
+        heresyMinor = false;
+        heresy7th = false;
+        heresy9th = false;
+        heresy11th = false;
+        heresy13th = false;
+        
+        tracks[trSelected] = new Track(tracks[trSelected].name, true,  tracks[trSelected].loopLength, tracks[trSelected].quantize, false, false);
+        chordsTemp = new Track(tracks[trSelected].name, true,  tracks[trSelected].loopLength, tracks[trSelected].quantize, false, false);
+        imgNotes = null;
+    }
+    
+    if (key == 'q' || key == 'Q'){
+        quantizeValueIn = true;
+        sendToScreen(tracks[trSelected].name + " quantize?");
+    }
+    
+    if (key == 'x' || key == 'X'){
+        clickTrackOn = !clickTrackOn;
+    }
+    
+    if (key == 'e' || key == 'E'){
+        eraseOn = !eraseOn;
+        if (!eraseOn) imgNotes = null;
+    }
+    
+    if (key == 'r' || key == 'R'){
+        imgNotes = null;
+    }
+    
+    if (key == 'l' || key == 'L'){
+        loopLengthValueIn = true;
+        sendToScreen(tracks[trSelected].name + " loop length?");
+    }
+    
+    if (key == 'm' || key == 'M'){
+        if (trSelected != 0){
+            muteValueIn = true;
+            if (!tracks[trSelected].mute)
+                sendToScreen(tracks[trSelected].name + " mute in?");
+            if (tracks[trSelected].mute)
+                sendToScreen(tracks[trSelected].name + " unmute in?");              
+        }
+    }
+
+   
+    if (key == '1') numberKey(1);
+    if (key == '2') numberKey(2);
+    if (key == '3') numberKey(3);
+    if (key == '4') numberKey(4);
+    if (key == '5') numberKey(5);
+    if (key == '6') numberKey(6);
+    if (key == '7') numberKey(7);
+    if (key == '8') numberKey(8);       
+    if (key == '9') numberKey(9);
+    if (key == '0') numberKey(0);
+
+    if (key == CODED) {
+        if (keyCode == UP && trSelected < Track.currentNumberOfTracks-1)
+            trSelected++;
+        if (keyCode == DOWN && trSelected > 1) {
+           trSelected--;
+        } 
+     }
+     
+     if (key == 's' || key == 'S'){
+          for (int i = 0; i < 16; i++){
+              for (int ii = 0; ii < tracks[0].loopLength; ii++){
+                  if (chordsTemp.sequence[i][ii] != null)
+                      tracks[0].sequence[i][ii] = chordsTemp.sequence[i][ii];
+              }
+          }
+     }
+     
+ 
+}
+
+
+//------------------------------------------------------------------------------------------------------------------------------- 
+
+void numberKey(int input){ // if a number is enterd, this method works out what to do with it
+    if (quantizeValueIn == true)
+        if (input == 1 || input == 2 || input == 4 || input == 8 || input == 0){
+             tracks[trSelected].quantize = input;
+             quantizeValueIn = false;
+             aniOut = true;
+        }
+         
+    if (loopLengthValueIn == true){
+        if (input >= 1 && input <= 8 ){
+            Track tempTrack = new Track(tracks[trSelected].name, tracks[trSelected].polyphonic, (input * loopLength / 2), tracks[trSelected].quantize, false, false);
+            NoteEvent tempNote;
+            
+            for (int i = 0; i < 16; i++){
+                if (tempTrack.loopLength >= tracks[trSelected].loopLength){
+                    for (int ii = 0; ii < tracks[trSelected].loopLength; ii++){
+                        tempTrack.sequence[i][ii] = tracks[trSelected].sequence[i][ii];
+                    }
+                }else{
+                    for (int ii = 0; ii < tempTrack.loopLength; ii++){
+                        tempTrack.sequence[i][ii] = tracks[trSelected].sequence[i][ii];
+                    }
+                }
+            }
+            tracks[trSelected] = tempTrack;
+            for (int i = 0; i < 16; i++)
+            if (noteOnArray[i] = true){
+                noteOnArray[i] = false;
+                finishNoteCutOff(i);
+                displayNoteOnArray[i] = false;
+            }
+  
+             
+            loopLengthValueIn = false;
+            aniOut = true;
+            if (trSelected ==0){
+                Track tempTrack2 = new Track(chordsTemp.name, chordsTemp.polyphonic, (input * loopLength / 2), chordsTemp.quantize, false, false);
+                NoteEvent tempNote2;
+            
+                for (int i = 0; i < 16; i++){
+                    if (tempTrack2.loopLength >= chordsTemp.loopLength){
+                        for (int ii = 0; ii < chordsTemp.loopLength; ii++){
+                            tempTrack2.sequence[i][ii] = chordsTemp.sequence[i][ii];
+                        }
+                    }else{
+                        for (int ii = 0; ii < tempTrack2.loopLength; ii++){
+                            tempTrack2.sequence[i][ii] = chordsTemp.sequence[i][ii];
+                        }
+                    }  
+                }
+            chordsTemp = tempTrack2;
+            }
+            imgNotes = null;
+        }
+    }
+    
+    if (muteValueIn == true){
+        tracks[trSelected].muteIn = bar + input;
+        muteValueIn = false;
+        tracks[trSelected].muteDone = false;
+        aniOut = true;
+    }
+        
+         
+}
+
+
+//------------------------------------------------------------------------------------------------------------------------------- 
+
+void sendToScreen(String name){ // prepares a question for asking the user and turns the question on
+
+      screenQuestion = name;
+      screenAni = 0;
+      haveQuestion = true;
+    
+}
+
+
+//------------------------------------------------------------------------------------------------------------------------------- 
+
+void checkCycled(){  // checks whether after ducking or muting all note offs are played.
+    for (int i = 1; i < Track.currentNumberOfTracks; i++)
+        if (tracks[i].cycled == false)
+            if (tracks[i].cycledPosition-1 == currentPulse%tracks[trSelected].loopLength)
+                tracks[i].cycled = true;
+    
+}
+
+
+//------------------------------------------------------------------------------------------------------------------------------- 
+
+
+void checkForMutes(){ // looks for mute / unmuted changes in tracks
+    for (int i = 1; i < Track.currentNumberOfTracks; i++)
+        if (tracks[i].muteIn == bar && !tracks[i].muteDone){
+            tracks[i].mute = !tracks[i].mute;
+            tracks[i].muteDone = true;
+            tracks[trSelected].cycled = false;
+            tracks[trSelected].cycledPosition = currentPulse%tracks[trSelected].loopLength; 
+        }
+}
+
+
+
+//------------------------------------------------------------------------------------------------------------------------------- 
+
+void writeQuestion(){ // animates screen questions
+  
+  if (screenAni < 10 && !aniOut){
+      screenAni++;
+  }
+  
+  if (screenAni > 0 && aniOut){
+     screenAni--;
+  }
+  
+   if (screenAni == 0){
+      haveQuestion = false;
+      aniOut = false;
+   }
+  
+  fill(255,0,0, screenAni*12);
+  textSize((11-screenAni)*40);
+  text(screenQuestion, (screenAni*50)-200,(100-screenAni*10)+150);
+  
+    
+}
+
+
+//------------------------------------------------------------------------------------------------------------------------------- 
+
+void oscEvent(OscMessage theOscMessage) { // recieves osc messages from openFrameworks
+    println("osc message : " + theOscMessage);
+    if(theOscMessage.checkAddrPattern("/test")==true) {
+        println("i1 : " + theOscMessage.get(1).intValue() + "  i2 : " + theOscMessage.get(2).intValue() + "  i3 : " + theOscMessage.get(3).intValue() + "  i4 : " + theOscMessage.get(4).intValue());
+        clickTrack = false;
+        String stringValue = theOscMessage.get(0).stringValue();
+        int firstValue = theOscMessage.get(1).intValue(); 
+        int secondValue = theOscMessage.get(2).intValue();
+        int thirdValue = theOscMessage.get(3).intValue(); //velocity
+        int fourthValue = theOscMessage.get(4).intValue(); //channel
+        if (secondValue == 1){
+            noteOnArray[firstValue] = true;
+            writeNote(firstValue, thirdValue, fourthValue);       
+        }
+        else{
+            noteOnArray[firstValue] = false;
+            writeNote(firstValue, 0, fourthValue); 
+        }
+    }
+    if(theOscMessage.checkAddrPattern("/chord")==true) {
+        chordCalc();
+  //      writeNote(15, 80, 6);
+        writeNote(14, 80, 6);
+        writeNote(13, 80, 6);
+        writeNote(12, 80, 6);
+        writeNote(11, 80, 6);
+        writeNote(10, 80, 6);
+        writeNote(9, 80, 6);
+    }
+}
+
+
+