summaryrefslogtreecommitdiff
path: root/liveengine/src/testApp.cpp
diff options
context:
space:
mode:
authorTim Redfern <tim@eclectronics.org>2015-04-12 22:20:30 +0100
committerTim Redfern <tim@eclectronics.org>2015-04-12 22:20:30 +0100
commit8c86c8e56d5948f44ba7524284824bbc6eff952b (patch)
tree704dc88be2f22c69b4d16838092bc83cf692a75b /liveengine/src/testApp.cpp
initial commitHEADmaster
Diffstat (limited to 'liveengine/src/testApp.cpp')
-rwxr-xr-xliveengine/src/testApp.cpp646
1 files changed, 646 insertions, 0 deletions
diff --git a/liveengine/src/testApp.cpp b/liveengine/src/testApp.cpp
new file mode 100755
index 0000000..ced71d4
--- /dev/null
+++ b/liveengine/src/testApp.cpp
@@ -0,0 +1,646 @@
+#include "testApp.h"
+previewWindow::~previewWindow(){
+ cout << "preview window destroyed" << endl;
+}
+void previewWindow::setup(){}
+void previewWindow::setBuffer(ofFbo *buffer){
+ rb=buffer;
+}
+void previewWindow::draw(){
+
+ rb->draw(0,0,ofGetWidth(),ofGetHeight()); //why crash?
+
+}
+//--------------------------------------------------------------
+guiWindow::~guiWindow(){
+ cout << "gui window destroyed" << endl;
+}
+void guiWindow::setup(){}
+void guiWindow::setParent(testApp *p){
+ parent=p;
+}
+void guiWindow::draw(){
+
+ parent->gui.draw();
+ if (parent->list.lock()) { //if loaded
+ if (!parent->list.thumbnailed) parent->list.makeThumbnail();
+ if (parent->list.thumbnailed) parent->list.thumbnail.draw(20,ofGetHeight()-150);
+ parent->list.unlock();
+ }
+ ofDrawBitmapString(parent->list.name,20,ofGetHeight()-10);
+
+}
+void guiWindow::dragEvent(ofDragInfo dragInfo, ofxFenster* win){
+ parent->dragEvent(dragInfo);
+}
+void guiWindow::windowMoved(int x,int y){
+ //printf("window moved!\n");
+}
+
+//----------------------------------------------------------------------
+
+kinectWindow::~kinectWindow(){
+ cout << "kinect window destroyed" << endl;
+}
+void kinectWindow::setup(){
+ ofSetBackgroundAuto(false);
+}
+void kinectWindow::setParent(testApp *p){
+ parent=p;
+}
+void kinectWindow::draw(){
+ //parent->NIinstance.drawpreview();
+ //parent->NIinstance.recordDepth.draw(0,0,ofGetWidth(),ofGetHeight());
+ parent->NIinstance.recordUser.draw(ofGetWidth(),ofGetHeight());
+}
+
+
+//--------------------------------------------------------------
+void testApp::setup(){
+ int midiPort=0;
+ midiChannel=0;
+ useKinect=false;
+ if( !XML.loadFile("settings.xml") ){
+ printf("unable to load settings.xml check data/ folder\n");
+ }else{
+ printf("settings loaded!\n");
+ midiPort=ofToInt(XML.getAttribute("liveEngine", "port", "0")); //default to 0/all
+ midiChannel=ofToInt(XML.getAttribute("liveEngine", "channel", "0"));
+ if (midiChannel) printf("listening on port %d, midi channel %d\n",midiPort,midiChannel);
+ else printf("listening on port %d, all midi channels\n",midiPort);
+ if(XML.pushTag("liveEngine")) {
+ int numViews=XML.getNumTags("viewport");
+ if(numViews) {
+ for (int i=0;i<numViews;i++) {
+ int w=XML.getAttribute("viewport", "w",0,i);
+ int h=XML.getAttribute("viewport", "h",0,i);
+ int x=XML.getAttribute("viewport", "x",0,i);
+ int y=XML.getAttribute("viewport", "y",0,i);
+ int rot=XML.getAttribute("viewport", "rot",0,i);
+ int ox=XML.getAttribute("viewport", "ox",0,i);
+ int oy=XML.getAttribute("viewport", "oy",0,i);
+ int mapped=XML.getAttribute("viewport", "mapped",0,i);
+ printf("viewport %i: %ix%i %s\n",i,w,h,mapped==1?"mapped":"unmapped");
+ if (mapped==1) {
+ if (!useKinect) {
+ //set up preview window and kinect classes
+ useKinect=true;
+ kinectWin=new kinectWindow();
+ ofxFenster* kw=ofxFensterManager::get()->createFenster(0, 0, 320, 240, OF_WINDOW);
+ kw->setWindowTitle("kinect");
+ kw->addListener(kinectWin);
+ kinectWin->setup();
+ kinectWin->setParent(this);
+
+ NIinstance.start();
+
+ }
+ viewports.push_back(new viewport(w,h,x,y,rot,ox,oy));
+ viewports[i]->setUG(&NIinstance.recordUser);
+
+ XML.pushTag("viewport",i);
+ vector<string>keys;
+ XML.getAttributeNames("settings", keys, 0);
+ map<string,string>settings;
+ for (int k=0;k<keys.size();k++) {
+ settings[keys[k]]=XML.getAttribute("settings",keys[k],"none",0);
+ }
+ viewports[i]->setcam(settings);
+ XML.popTag();
+
+ }
+ else viewports.push_back(new viewport(w,h,x,y,rot,ox,oy));
+ }
+ }
+ else printf("no viewports!\n");
+
+ XML.popTag();
+
+ }
+ }
+
+ activeView=-1;
+
+ midiIn.listPorts();
+ midiIn.openPort(midiPort);
+ midiIn.addListener(this);
+
+ // to register only to one controller pass the id as first argument
+ // midiIn.addListener(84,this);
+ // to debug
+ // midiIn.setVerbose(true);
+
+ controllers=new unsigned char[NUM_CONTROLLERS];
+ memset(controllers,NUM_CONTROLLERS,0);
+ note=0;
+
+ makeColours();
+
+ colShift=0;
+
+ controlColours=false;
+ debug=false;
+ noteRandomiseColours=false;
+ transparentBlack=false;
+ reversemain=false;
+
+ //vp1.setup(768,1024,1024,0,-90,-256,-384);
+ //vp2.setup(1024,768,0,0,0,-512,-384);
+
+ showFPS=false;
+ ofBackground(0,0,0);
+
+ ofSetBackgroundAuto(false);
+
+ xshift=-1;
+ yshift=-1;
+
+ fadetime=0;
+
+ mode=BLOCKS;
+
+ lastnoteTime=ofGetElapsedTimef();
+ decayTime=1.0f;
+
+ //ofSetVerticalSync(true); deosn't seem effective
+ //glXSwapIntervalSGI(1);
+ /*
+ printf("hue of red is %f\n",ofColor(255,0,0).getHue());
+ printf("hue of green is %f\n",ofColor(0,255,0).getHue());
+ printf("hue of blue is %f\n",ofColor(0,0,255).getHue());
+ hue is float from 0.0-255.0
+ */
+ ofSetFrameRate(60);
+ rotate=-90;
+ scale=1.0f;
+ fscale=1.0f;
+
+
+ //preview window stuff
+ prevWin=new previewWindow();
+ win=ofxFensterManager::get()->createFenster(0, 0, 600, 800, OF_WINDOW);
+ ofAddListener(win->events.mouseDragged, this, &testApp::mousePressedEvent);
+ ofAddListener(win->events.mousePressed, this, &testApp::mousePressedEvent);
+ ofAddListener(win->events.keyPressed, this, &testApp::keyPressedEvent);
+ win->setWindowTitle("preview");
+ win->addListener(prevWin);
+ prevWin->setup();
+ prevWin->setBuffer(&viewports[0]->rb2);
+
+ fullscreenoutput=false;
+
+ guiWin=new guiWindow();
+ gui.setup("","panel.xml",0,0);
+ gui.add(reversemain.setup("reverse main", false));
+ gui.add(controlColours.setup("control colours", false));
+ gui.add(noteRandomiseColours.setup("randomise note colours", false));
+ gui.add(transparentBlack.setup("transparent black", false));
+ gui.add(resetDrawscale.setup("reset draw scale"));
+ gui.add(resetFBscale.setup("reset FB scale"));
+ fadeScale=128;
+ gui.add(fS.setup("fade scale",fadeScale,0,255,255));
+ decayTime=1.0f;
+ gui.add(dT.setup("decay time",decayTime,0,10.0,255));
+
+ gui.add(oscScale.setup("scale size LFO", false));
+ gui.add(breakOsc.setup("break oscillators", false));
+ gui.add(randomOsc.setup("randomise oscillators", false));
+ scaleAmplitude=0.5f;
+ gui.add(sA.setup("fade scale",scaleAmplitude,0,2.0,255));
+ scaleFrequency=1.0f;
+ gui.add(sF.setup("fade freq",scaleFrequency,0,5.0,255));
+ gui.add(drawCloud.setup("draw pointCloud",false));
+ gui.add(drawSkel.setup("draw Skeleton",false));
+
+ resetDrawscale.addListener(this,&testApp::resetDrawscalePressed);
+ resetFBscale.addListener(this,&testApp::resetFBscalePressed);
+
+ //gui window stuff
+ ofxFenster* win2=ofxFensterManager::get()->createFenster(0, 0, 200, 400, OF_WINDOW);
+
+ ofAddListener(win2->events.windowResized, this, &testApp::windowEvent);
+
+ win2->setWindowTitle("config");
+ win2->addListener(guiWin);
+ guiWin->setup();
+ guiWin->setParent(this);
+
+ debug=false;
+
+}
+
+void testApp::resetDrawscalePressed(bool & pressed){
+ scale=1.0f;
+}
+void testApp::resetFBscalePressed(bool & pressed){
+ fscale=1.0f;
+}
+
+void testApp::makeColours() {
+ controller_colours=new ofColor[NUM_CONTROLLERS];
+ for (int i=0;i<NUM_CONTROLLERS;i++) controller_colours[i]=ofColor::fromHsb(ofRandom(255), 255, 255);
+ colShift=ofRandom(255.0f);
+}
+//--------------------------------------------------------------
+void testApp::update(){
+ //for (int i=0;i<numLayers;i++) layers[i]->update();
+}
+void testApp::saveSettings(string filename){
+
+ if(XML.pushTag("liveEngine")) {
+ for (int i=0;i<viewports.size();i++){
+ if (viewports[i]->isMapped) {
+ XML.pushTag("viewport",i);
+ vector<string>keys;
+ XML.getAttributeNames("settings", keys, 0);
+ for (int k=0;k<keys.size();k++) {
+ XML.setAttribute("settings", keys[k], viewports[i]->getSetting(keys[k]),0);
+ }
+ XML.popTag();
+ }
+ }
+ XML.popTag();
+ }
+ XML.saveFile(filename);
+ printf("saved %s\n",filename.c_str());
+}
+//--------------------------------------------------------------
+void testApp::draw(){
+
+ float lambda=max(0.0f,1.0f-((ofGetElapsedTimef()-lastnoteTime)/decayTime));
+
+ int ft=255-(fadetime*((float)fadeScale)*0.1f);
+ //if(ofGetFrameNum()%25==0) printf("fadeScale %i\n",(int)fadeScale);
+ ofSetColor(ft,ft,ft); //for feedback
+
+ float os=oscScale?(sin((breakOsc?ofGetElapsedTimef()-(randomOsc?randOffs:lastnoteTime):ofGetElapsedTimef()))*scaleFrequency)*scaleAmplitude:0.0f;
+ //vp1.draw(lambda,controllers,xshift,yshift,list,transparentBlack,note,mode,controller_colours,controlColours,scale,fscale,noteRandomiseColours?colShift:0.0f);
+ //vp2.draw(lambda,controllers,reversemain?-xshift:xshift,yshift,list,transparentBlack,note,mode,controller_colours,controlColours,reversemain?1.0f/scale:scale,reversemain?1.0f/fscale:fscale,noteRandomiseColours?colShift:0.0f);
+ for (int i=0;i<viewports.size();i++) {
+ bool even=!(i%2);
+ if (viewports[i]->isMapped) viewports[i]->mapdraw(lambda,controllers,even&&reversemain?-xshift:xshift,yshift,list,transparentBlack,note,mode,controller_colours,controlColours,even&&reversemain?1.0f/(scale+os):scale+os,even&&reversemain?1.0f/fscale:fscale,noteRandomiseColours?colShift:0.0f,drawCloud,drawSkel);
+ else viewports[i]->draw(lambda,controllers,even&&reversemain?-xshift:xshift,yshift,list,transparentBlack,note,mode,controller_colours,controlColours,even&&reversemain?1.0f/(scale+os):scale+os,even&&reversemain?1.0f/fscale:fscale,noteRandomiseColours?colShift:0.0f);
+ }
+
+ ofSetColor(255,255,255);
+ if (showFPS) ofDrawBitmapString(ofToString(ofGetFrameRate(), 2),20,20);
+
+ /*
+ rb1.begin();
+
+
+ // can this work?
+ //grab.setAnchorPoint(xshift,yshift);
+ //grab.setTextureWrap( GL_WRAP_BORDER, GL_WRAP_BORDER);
+ //grab.draw(0,0); // xshift,yshift);
+
+ ofSetColor(255-fadetime,255-fadetime,255-fadetime);
+ for (int i=(xshift>0?xshift-rb1.getWidth():xshift);i<rb1.getWidth()*2;i+=ofGetWidth()) {
+ for (int j=(yshift>0?yshift-rb1.getHeight():yshift);j<rb1.getHeight()*2;j+=rb1.getHeight()) {
+ rb2.draw(i,j);
+ }
+ }
+
+ float notewidth=rb1.getWidth()/NUM_NOTES;
+ float noteheight=rb1.getHeight()/NUM_CONTROLLERS;
+
+
+
+ if (note>0) {
+ switch(mode) {
+ case BLOCKS:
+ for (int i=0;i<NUM_CONTROLLERS;i++){
+ ofSetColor(ofColor((controller_colours[i].r*controllers[i])>>7,(controller_colours[i].g*controllers[i])>>7,(controller_colours[i].b*controllers[i])>>7));
+ ofRect((note-START_NOTE)*notewidth,i*noteheight,notewidth,noteheight);
+ }
+ break;
+ case LIST:
+ if (list.lock()) { //if playlist is loaded
+ ofPushMatrix();
+ ofTranslate(rb1.getWidth()/2,rb1.getHeight()/2);
+ ofScale(scale,scale,scale);
+ ofRotate(rotate);
+ ofTranslate(-rb1.getWidth()/2,-rb1.getHeight()/2);
+ if (list.layers.find(note)!=list.layers.end()) {
+ if (controlColours) list.layers[note]->draw(lamda,controllers,512,384,transparentBlack);
+ else list.layers[note]->draw(lamda,512,384);
+ }
+ ofPopMatrix();
+ list.unlock();
+ }
+ break;
+ }
+ }
+
+ //for (int i=0;i<numLayers;i++) layers[i]->draw();
+ ofSetColor(255,255,255);
+ if (showFPS) ofDrawBitmapString(ofToString(ofGetFrameRate(), 2),20,20);
+
+ rb1.end();
+
+ rb2.begin();
+ ofSetColor(255,255,255);
+ rb1.draw(0,0);
+ rb2.end();
+
+ rb2.draw(1024,0);
+
+ rb3.begin(); //landscape
+
+
+
+ ofSetColor(255-fadetime,255-fadetime,255-fadetime);
+ for (int i=(xshift>0?xshift-rb3.getWidth():xshift);i<rb3.getWidth()*2;i+=ofGetWidth()) {
+ for (int j=(yshift>0?yshift-rb3.getHeight():yshift);j<rb3.getHeight()*2;j+=rb3.getHeight()) {
+ rb4.draw(i,j);
+ }
+ }
+
+ notewidth=rb3.getHeight()/NUM_NOTES;
+ noteheight=rb3.getWidth()/NUM_CONTROLLERS;
+
+ ofPushMatrix();
+ ofTranslate(rb3.getWidth(),rb3.getHeight()/2);
+ ofRotate(90);
+ ofTranslate(-rb3.getWidth()/2,-rb3.getHeight()/2);
+
+ if (note>0) {
+ switch(mode) {
+ case BLOCKS:
+ for (int i=0;i<NUM_CONTROLLERS;i++){
+ ofSetColor(ofColor((controller_colours[i].r*controllers[i])>>7,(controller_colours[i].g*controllers[i])>>7,(controller_colours[i].b*controllers[i])>>7));
+ ofRect((note-START_NOTE)*notewidth,i*noteheight,notewidth,noteheight);
+ }
+ break;
+ case LIST:
+ if (list.lock()) { //if playlist is loaded
+ ofPushMatrix();
+ ofTranslate(rb3.getWidth()/2,rb3.getHeight()/2);
+ ofScale(scale,scale,scale);
+ ofRotate(rotate);
+ ofTranslate(-rb3.getWidth()/2,-rb3.getHeight()/2);
+ if (list.layers.find(note)!=list.layers.end()) {
+ if (controlColours) list.layers[note]->draw(lamda,controllers,512,384,transparentBlack);
+ else list.layers[note]->draw(lamda,512,384);
+ }
+ ofPopMatrix();
+ list.unlock();
+ }
+ break;
+ }
+ }
+
+ ofPopMatrix();
+
+ //for (int i=0;i<numLayers;i++) layers[i]->draw();
+ ofSetColor(255,255,255);
+ if (showFPS) ofDrawBitmapString(ofToString(ofGetFrameRate(), 2),20,20);
+
+ rb3.end();
+
+ rb4.begin();
+ ofSetColor(255,255,255);
+ rb3.draw(0,0);
+ rb4.end();
+
+ rb4.draw(0,0);
+
+ */
+
+ /* test screen shape
+ ofSetColor(255,0,0);
+ ofRect(0,0,1024,768);
+ ofSetColor(0,255,0);
+ ofRect(1024,0,1024,768);
+ */
+
+}
+
+//--------------------------------------------------------------
+void testApp::keyPressed(int key, ofxFenster* win){
+ if(key == ' '){
+ fullscreenoutput=!fullscreenoutput;
+ win->setFullscreen(fullscreenoutput);
+ printf("resolution: %ix%i %s\n",win->getWidth(),win->getHeight(),fullscreenoutput?"fullscreen":"windowed");
+ }
+ else keyPressed(key);
+}
+void testApp::keyPressed(int key){
+
+ if (activeView==-1) {
+ for (int i=0;i<viewports.size();i++) if (viewports[i]->isMapped) viewports[i]->keyPressed(key);
+ }
+ else if (activeView>-1&&activeView<viewports.size()&&viewports[activeView]->isMapped) viewports[activeView]->keyPressed(key);
+
+
+ if (key>='0' && key <='5'){
+ activeView=min(key-'2',(int)viewports.size()-1);
+ switch (activeView){
+ case -2:
+ printf("deactivating viewport adjustment\n");
+ break;
+ case -1:
+ printf("adjusting all viewports\n");
+ break;
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ printf("adjusting viewport %i of %i\n",activeView,viewports.size());
+ break;
+ }
+ }
+ if(key =='q'){
+ nmidiMessage(144,ofRandom(64)+36,127);
+ }
+ if(key == 'p'){
+ saveSettings("settings.xml");
+ printf("settings saved!\n");
+ }
+ if(key == 'f'){
+ toggleFPS();
+ }
+ if(key >='6' && key <= '9'){
+ mode=key-'6';
+ }
+ if(key == 267){
+ xshift--;
+ }
+ if(key == 268){
+ xshift++;
+ }
+ if(key == 269){
+ yshift--;
+ }
+ if(key == 270){
+ yshift++;
+ }
+ if(key == '='){
+ makeColours();
+ }
+ if(key == '+'){
+ fadetime=min(128,fadetime+1);
+ }
+ if(key == '_'){
+ fadetime=max(0,fadetime-1);
+ }
+ if(key == ']'){
+ scale*=1.01;
+ }
+ if(key == '['){
+ scale/=1.01;
+ }
+ if(key == '}'){
+ rotate+=90;
+ }
+ if(key == '{'){
+ rotate-=90;
+ }
+
+
+ if(key == 'd'){
+ debug=!debug;
+ }
+
+ if (key=='j') {
+ fscale=1.0f;
+ }
+ if (key=='h') {
+ scale=1.0f;
+ }
+
+}
+
+//--------------------------------------------------------------
+void testApp::keyReleased(int key){
+ if (activeView<0) for (int i=0;i<viewports.size();i++) viewports[i]->keyReleased(key);
+ else if (activeView<viewports.size()) viewports[activeView]->keyReleased(key);
+}
+
+//--------------------------------------------------------------
+void testApp::mouseMoved(int x, int y ){
+
+}
+
+//--------------------------------------------------------------
+void testApp::mouseDragged(int x, int y, int button){
+
+}
+
+//--------------------------------------------------------------
+void testApp::mouseReleased(int x, int y, int button){
+
+
+}
+void testApp::mousePressed(int x, int y, int button) {
+}
+
+//--------------------------------------------------------------
+void testApp::windowResized(int w, int h){
+
+}
+
+//--------------------------------------------------------------
+void testApp::gotMessage(ofMessage msg){
+
+}
+
+//--------------------------------------------------------------
+
+void testApp::dragEvent(ofDragInfo dragInfo, ofxFenster* win){
+ dragEvent(dragInfo);
+}
+void testApp::dragEvent(ofDragInfo dragInfo){
+ printf("got draginfo: %s\n",dragInfo.files[0].c_str());
+ int sta=dragInfo.files[0].find_last_of("\\/")+1;
+ int len=(dragInfo.files[0].find_last_of(".")+4)-sta;
+ string filename=dragInfo.files[0].substr(sta,len);
+ printf("loading %s\n",filename.c_str());
+
+ list.load(filename);
+}
+void testApp::windowEvent(ofResizeEventArgs &args){
+ printf("window event\n");
+}
+
+void testApp::mousePressedEvent(ofMouseEventArgs &args) {
+ //printf("mouse: %i,%i %i of %ix%i\n",args.x,args.y,args.button,win->getWidth(),win->getHeight());
+ //0-2
+ switch (args.button) {
+ case 0:
+ xshift=args.x-(win->getWidth()/2);
+ yshift=args.y-(win->getHeight()/2);
+ break;
+ case 1:
+ scale=pow(pow(args.x-(win->getWidth()/2),2)+pow(args.y-(win->getHeight()/2),2),0.5)/(win->getWidth()*.1);
+ break;
+ case 2:
+ fscale=(pow(pow(args.x-(win->getWidth()/2),2)+pow(args.y-(win->getHeight()/2),2),0.5)/(win->getWidth()))+0.5;
+ break;
+ }
+}
+
+void testApp::keyPressedEvent(ofKeyEventArgs &args) {
+ //printf("window key pressed: %i (%c)\n",args.key,args.key);
+ keyPressed(args.key);
+}
+
+void testApp::toggleFPS(){
+ showFPS=!showFPS;
+}
+
+void testApp::newMidiMessage(ofxMidiEventArgs& eventArgs){
+ if ((midiChannel==0)||(eventArgs.channel==midiChannel)) {
+ nmidiMessage(eventArgs.status,eventArgs.byteOne,eventArgs.byteTwo);
+ }
+}
+
+ //newMessage(eventArgs.port, eventArgs.channel, eventArgs.byteTwo, eventArgs.timestamp);
+
+//byteOne : message type
+
+ /*
+ int port;
+ int channel;
+ int status;
+ int byteOne;
+ int byteTwo;
+ double timestamp;
+ */
+
+ //printf("%d %d %d %d %d\n",eventArgs.port,eventArgs.channel,eventArgs.status,eventArgs.byteOne,eventArgs.byteTwo);
+void testApp::nmidiMessage(int event,int data1, int data2) {
+ if (debug) printf("midi: %i %i\n",event,data1);
+ bool noteOn; //this old thing!
+ int i;
+ switch(event) {
+ case 144: //noteon-off channel 0
+ noteOn=(data2==0?false:true);
+ //for (int i=0;i<numLayers;i++){
+ // if (layers[i]->note==eventArgs.byteOne) layers[i]->setActive(noteOn);
+ //}
+
+ note=data1;
+ lastnoteTime=ofGetElapsedTimef();
+ if (list.layers.size()&&list.lock()) { //if playlist is loaded
+ map<int, layer*>::iterator itr;
+ //for(itr = list.layers.begin(); itr != list.layers.end(); ++itr){
+ // list.layers[itr->first]->setNote(note);
+ //}
+ list.layers[note]->setNote(note);
+ list.unlock();
+ }
+ if (noteRandomiseColours) {
+ makeColours(); //
+ }
+ randOffs=ofRandom(100.0f);
+ break;
+ case 176: //control change channel 0
+ //for (int i=0;i<numLayers;i++){
+ // if (layers[i]->mix==eventArgs.byteOne) layers[i]->setMixAmt(((float)eventArgs.byteTwo)/127.0f);
+ //}
+ if (debug) printf("cc: %i %i\n",data1,data2);
+ if (data1>=START_CONTROLLER) controllers[data1-START_CONTROLLER]=data2;
+ }
+}
+