#pragma once #include "ofMain.h" #include "ofxDmx.h" #include "ofxMidi.h" #include "chainImage.h" class dmxMap{ //resolution independent DMX colour tracker public: dmxMap(){ } dmxMap(ofxDmx *_dmx,int _chan_R,int _chan_G,int _chan_B,int _chan_intensity,float _x,float _y){ dmx=_dmx; chan_R=_chan_R; chan_G=_chan_G; chan_B=_chan_B; chan_intensity=_chan_intensity; x=_x; y=_y; } void update(int intensity){ unsigned char color[3]; glReadPixels(x*ofGetWidth() , ofGetHeight() - (y*ofGetHeight()) , 1 , 1 , GL_RGB , GL_UNSIGNED_BYTE , color); //printf("dmxMap %i,%i: colour %i %i %i\n",x,y,color[0],color[1],color[2]); dmx->setLevel(chan_R, color[0]); dmx->setLevel(chan_G, color[1]); dmx->setLevel(chan_B, color[2]); dmx->setLevel(chan_intensity, intensity); dmx->update(); } int chan_R, chan_G, chan_B, chan_intensity; float x,y; ofxDmx *dmx; }; class ofApp : public ofBaseApp, public ofxMidiListener{ public: void setup(); void update(); void updateOutput(ofEventArgs & args); void draw(); void drawOutput(ofEventArgs & args); void exit(); void keyPressed(ofKeyEventArgs &keyargs); void keyReleased(int key); void mouseMoved(int x, int y ); void mouseDragged(int x, int y, int button); void mousePressed(int x, int y, int button); void mouseReleased(int x, int y, int button); void mouseEntered(int x, int y); void mouseExited(int x, int y); void windowResized(int w, int h); void outputWindowResized(ofResizeEventArgs &resizeargs); void dragEvent(ofDragInfo dragInfo); void gotMessage(ofMessage msg); vector arguments; chainImageSet images; ofxDmx dmx; vector map; void newMidiMessage(ofxMidiMessage& eventArgs); ofxMidiIn midiIn; ofxMidiMessage midiMessage; int dmxIntensity; };