diff options
| author | Comment <tim@gray.(none)> | 2013-01-24 18:07:04 +0000 |
|---|---|---|
| committer | Comment <tim@gray.(none)> | 2013-01-24 18:07:04 +0000 |
| commit | 3bf0663e94b6335cb748a50a8b95e8a98d2a0630 (patch) | |
| tree | a82627776c3bdeedbc99e2b6dcf97b78328a5047 /liveengine/src | |
| parent | e54790009e0d7b6ae5cc4d3e54880ff0bdc63f86 (diff) | |
folded kinect into main branch
Diffstat (limited to 'liveengine/src')
| -rwxr-xr-x | liveengine/src/layers.cpp | 160 | ||||
| -rwxr-xr-x | liveengine/src/layers.h | 85 | ||||
| -rwxr-xr-x | liveengine/src/main.cpp | 2 | ||||
| -rwxr-xr-x | liveengine/src/playlist.cpp | 45 | ||||
| -rwxr-xr-x | liveengine/src/playlist.h | 10 | ||||
| -rwxr-xr-x | liveengine/src/testApp.cpp | 100 | ||||
| -rwxr-xr-x | liveengine/src/testApp.h | 17 | ||||
| -rwxr-xr-x | liveengine/src/viewport.cpp | 21 | ||||
| -rwxr-xr-x | liveengine/src/viewport.h | 8 |
9 files changed, 360 insertions, 88 deletions
diff --git a/liveengine/src/layers.cpp b/liveengine/src/layers.cpp index 4ac0c59..a0fb213 100755 --- a/liveengine/src/layers.cpp +++ b/liveengine/src/layers.cpp @@ -63,53 +63,167 @@ void svglayer::draw(float a,unsigned char* controllers,int cx,int cy,bool transp getCentre(cx,cy);
//draw layers grouped by controllers
float layerspercontroller=((float)svg.getNumPath())/6.0f;
-
+
for (int i=0;i<6;i++) {
+ //for (int j=(int)((i+1)*layerspercontroller)-1;j>(int)(i*layerspercontroller);j--) { for (int j=(int)(i*layerspercontroller);j<(int)((i+1)*layerspercontroller);j++) {
- svg.getPathAt(j).setFillColor(fills[i]*a*controllers[i]);
- if (!transparentBlack||((a*controllers[i])/127.0)>0.1) {
+ svg.getPathAt(j).setFillColor(fills[j]*a*(((float)controllers[5-i])/127.0f)); //try to reverse order of these
+ if (!transparentBlack||((a*controllers[5-i])/127.0f)>0.1) {
svg.getPathAt(j).draw(xo,yo);
}
}
- }
+ } + //printf("counted %i layers of %i\n",(int)(6*layerspercontroller),svg.getNumPath());
} svglayer::~svglayer()
{
//dtor
-}
-
+} + +//------------------------------------------------------------------------ imglayer::imglayer() { - //img.setUseTexture(false); + //sprite.setUseTexture(false); }
-imglayer::imglayer(string _f)
-{
- load(_f);
+imglayer::imglayer(string _filename,int _frames,int _start,float _rate,int n, int e){
+ load(_filename,_frames,_start,_rate,n,e);
}
-void imglayer::load(string _f){
- bool success=img.loadImage(_f);
- printf("%s\n",success?"loaded":"not loaded");
+void imglayer::load(string _filename,int _frames,int _start,float _rate,int n, int e){ + startNote=n; + endNote=e;
+ sprite.load(_filename,_frames,_start);
+ sprite.setFrameRate(_rate);
}
-/* -WTF is going on with the image drawing - - -*/
+
void imglayer::draw(float a,int cx,int cy,float colShift) { - //if (img.isAllocated()) if (!img.isUsingTexture()) img.setUseTexture(true); //has to be done from the main thread? still doesn't work
- img.draw(0,0,ofGetWidth(),ofGetHeight()); - printf("drawing %f\n",ofGetElapsedTimef());
+ //if (sprite.isAllocated()) if (!sprite.isUsingTexture()) sprite.setUseTexture(true); //has to be done from the main thread? still doesn't work
+ + sprite.update();
+ int x,y,w,h;
+ if ((((float)cx)/cy)<(((float)sprite.getWidth())/sprite.getHeight())){
+ x=0;
+ w=cx;
+ h=((float)cx)*(((float)sprite.getHeight())/sprite.getWidth());
+ y=(cy-h)/2;
+ }
+ else {
+ y=0;
+ h=cy;
+ w=((float)cy)*(((float)sprite.getWidth())/sprite.getHeight());
+ x=(cx-w)/2;
+ }
+ ofEnableAlphaBlending(); + sprite.draw(x,y,w,h);
+ ofDisableAlphaBlending();
} void imglayer::draw(float a,unsigned char* controllers,int cx,int cy,bool transparentBlack=false,float colShift=0.0f) { imglayer::draw(a,cx,cy,colShift);
-} +}
+
+void imglayer::setNote(int note)
+{ + //is called rerpeatedly no startNote,endNote + //printf("note %i (%i - %i)\n",note,startNote,endNote);
+ if ((startNote<=note)&&(endNote>=note)) {
+ if (!sprite.getIsPlaying()) {
+
+ sprite.play();
+
+ } + //printf("triggered frame %i of %i\n",(int)(((((float)note-startNote)/((float)endNote-startNote)))*sprite.getTotalFrames()),sprite.getTotalFrames());
+ sprite.setCurrentFrame((int)(((((float)note-startNote)/((float)endNote-startNote)))*sprite.getTotalFrames()));
+ //printf("movie %i (%i - %i) frame: %i\n",note,startNote,endNote,(int)(((((float)note-startNote)/((float)endNote-startNote)))*mov.getTotalNumFrames()));
+ }
+ else {
+ if (sprite.getIsPlaying()) {
+ sprite.stop();
+ }
+ }
+
+}; imglayer::~imglayer()
{
- //img.setUseTexture(false); //free texture
+ //sprite.setUseTexture(false); //free texture
+} +//------------------------------------------------------------------------ +videolayer::videolayer() { + //sprite.setUseTexture(false); +}
+videolayer::videolayer(string _f,int n,int e,float s)
+{ + startNote=n; + endNote=e;
+ speed=s;
+ load(_f);
+}
+
+void videolayer::load(string _f){
+ name=_f;
+ mov.setPixelFormat(OF_PIXELS_BGRA);
+ mov.setUseTexture(false);
+ bool success=mov.loadMovie(_f);
+ if (success) {
+ mov.stop();
+ }
+ printf("%s %s %i bpp\n",success?"loaded":"not loaded",_f.c_str(),success?mov.getPixelsRef().getBytesPerPixel():0);
+}
+
+void videolayer::draw(float a,int cx,int cy,float colShift) { + if (mov.isPlaying()) { + mov.update();
+ //unsigned char *pix=mov.getPixels();
+ //for (int i=0;i<mov.getWidth()*mov.getHeight()*4;i+=4) pix[i+3]=(pix[i]>>2)+(pix[i+1]>>1)+(pix[i+2]>>2);
+ int x,y,w,h;
+ if ((((float)cx)/cy)<(((float)mov.getWidth())/mov.getHeight())){
+ x=0;
+ w=cx;
+ h=((float)cx)*(((float)mov.getHeight())/mov.getWidth());
+ y=(cy-h)/2;
+ }
+ else {
+ y=0;
+ h=cy;
+ w=((float)cy)*(((float)mov.getWidth())/mov.getHeight());
+ x=(cx-w)/2;
+ }
+ ofEnableAlphaBlending();
+ mov.draw(x,y,w,h);
+ ofDisableAlphaBlending(); + }
+} + +void videolayer::draw(float a,unsigned char* controllers,int cx,int cy,bool transparentBlack=false,float colShift=0.0f) { + draw(a,cx,cy,colShift);
+} + +void videolayer::setNote(int note) +{
+ + if ((startNote<=note)&&(endNote>=note)) { + if (!mov.isPlaying()) {
+ //printf("starting movie!\n");
+ mov.setUseTexture(true);
+ mov.play();
+ mov.setSpeed(speed);
+ } + mov.setFrame((int)(((((float)note-startNote)/((float)endNote-startNote)))*mov.getTotalNumFrames()));
+ //printf("movie %i (%i - %i) frame: %i\n",note,startNote,endNote,(int)(((((float)note-startNote)/((float)endNote-startNote)))*mov.getTotalNumFrames())); + } + else { + if (mov.isPlaying()) { + mov.stop(); + } + } + +}; +
+
+videolayer::~videolayer()
+{
}
diff --git a/liveengine/src/layers.h b/liveengine/src/layers.h index c6f4171..f8ed650 100755 --- a/liveengine/src/layers.h +++ b/liveengine/src/layers.h @@ -3,6 +3,7 @@ #include "ofxSVGTiny.h" #include "ofMain.h"
+#include "ofxSprite.h"
class layer
{
@@ -13,7 +14,10 @@ class layer virtual void load(string _f){};
virtual void draw(float a,int cx,int cy,float colShift){}; virtual void draw(float a,unsigned char* controllers,int cx,int cy,bool transparentBlack=false,float colShift=0.0f){ draw(a,cx,cy,colShift);}; - bool getLoaded() {return isLoaded;};
+ bool getLoaded() {return isLoaded;}; + virtual void setNote(int note) {};
+ string name;
+ int startNote,endNote;
protected: bool isLoaded;
private:
@@ -37,18 +41,91 @@ class svglayer: public layer vector <ofColor> strokes; float xo,yo;
};
+ +class sunkenSprite: public ofxSprite { + public: + float playhead,frameRate;
+ void setFrameRate(float frameRate) { this->frameRate = frameRate;}; + void play() { + startTime=ofGetElapsedTimef(); + ofxSprite::play(); + } + void update() { + if (!getIsPlaying()) return;
+ playhead=fmod(speed * frameRate * (ofGetElapsedTimef()-startTime),(float)getTotalFrames()); + ofxSprite::setCurrentFrame(playhead); + + } + void setCurrentFrame(float frame) {
+ //this idea doesn't work - fucks up when frameRate is 0 -
+ //need to rethink
+
+ //when frameRate is 0 startTime doesn't matter
+ //this still might not be not entirely correct
+ if (frameRate>0) startTime-=(frame-pos) / ((float)(frameRate * speed ));
+ //printf("sunkensprite setting frame %i of %i\n",(int)frame,getTotalFrames());
+ //printf("1 checking frame %i of %i\n",(int)frame,getTotalFrames()); + ofxSprite::setCurrentFrame(frame);
+ /*
+ pos = frame;
+ printf("2 checking frame %i of %i\n",(int)frame,getTotalFrames());
+ printf("requesting movie frame %i of %i\n",(int)pos,getTotalFrames());
+ if (pos<0) if (loop) { pos += totalFrames; } else stop();
+ if (pos>=totalFrames) if (loop) {
+ while (pos>=totalFrames) pos -= totalFrames;
+ } else { pos = totalFrames-.00001f; isPlaying=false; }
+ printf("set movie frame %i of %i\n",(int)pos,totalFrames);
+ */ + } + void draw(int x,int y,int w,int h) { + + int f=playhead; + float fr=fmod(playhead,1.0); + ofSetColor(255,255,255,(1.0-fr)*255); + //not always? + getImageAtFrame(f).setUseTexture(true); + getImageAtFrame(f).reloadTexture();
+ getImageAtFrame(f).draw(x,y,w,h); + ofSetColor(255,255,255,fr*255);
+ f=(f+1)%getTotalFrames(); + getImageAtFrame(f).setUseTexture(true);
+ getImageAtFrame(f).reloadTexture();
+ getImageAtFrame(f).draw(x,y,w,h); + } + + private: + float startTime; + +}; class imglayer: public layer
{
public:
imglayer();
- imglayer(string _f);
+ imglayer(string _f,int _frames=1,int _start=1,float _rate=0,int note=0,int endnote=0);
virtual ~imglayer();
- void load(string _f);
+ void load(string _filename,int _frames=1,int _start=1,float _rate=0.0,int note=0,int endnote=0);
void draw(float a,int cx,int cy,float colShift); void draw(float a,unsigned char* controllers,int cx,int cy,bool transparentBlack,float colShift);
+ void setNote(int n);
protected:
private:
- ofImage img;
+ sunkenSprite sprite;
+}; + +class videolayer: public layer
+{
+ public:
+ videolayer();
+ videolayer(string _f,int n,int e,float s);
+ virtual ~videolayer();
+ void load(string _f);
+ void draw(float a,int cx,int cy,float colShift); + void draw(float a,unsigned char* controllers,int cx,int cy,bool transparentBlack,float colShift); + void setNote(int n); + protected:
+ private: + float speed;
+ ofVideoPlayer mov;
};
#endif // SVGLAYER_H
diff --git a/liveengine/src/main.cpp b/liveengine/src/main.cpp index 6f40023..f0c0c0f 100755 --- a/liveengine/src/main.cpp +++ b/liveengine/src/main.cpp @@ -7,7 +7,7 @@ int main( ){ ofAppGlutWindow window; - ofSetupOpenGL(ofxFensterManager::get(),2048,768, OF_WINDOW); //2048,768 + ofSetupOpenGL(ofxFensterManager::get(),1024,768, OF_WINDOW); //2048,768 //ofSetupOpenGL(&window, 1024,768, OF_WINDOW); // <-------- setup the GL context //ofSetupOpenGL(&window, 1024,768, OF_WINDOW); diff --git a/liveengine/src/playlist.cpp b/liveengine/src/playlist.cpp index 51bd852..683cd3c 100755 --- a/liveengine/src/playlist.cpp +++ b/liveengine/src/playlist.cpp @@ -25,26 +25,61 @@ void playlist::load(string _name){ void playlist::threadedFunction(){ if( lock() ){ - loadsvg(); + loadLayers(); unlock(); } }
-void playlist::loadsvg(){ +void playlist::loadLayers(){ int numLayers=0; layers.clear(); name=XML.getAttribute("playlist", "name", ""); + float speed=XML.getAttribute("playlist", "speed", 0); if(XML.pushTag("playlist")) {
numLayers=XML.getNumTags("svglayer");
if(numLayers) {
for (int i=0;i<numLayers;i++) {
string s=XML.getAttribute("svglayer", "file", "",i);
- printf("loading %s: ",s.c_str());
+ printf("loading %s: \n",s.c_str());
layers[XML.getAttribute("svglayer", "note", 0,i)]=new svglayer(XML.getAttribute("svglayer", "file", "",i));
} thumbnailed=false;
- }
- else printf("no SVG layers loaded!\n"); + } + numLayers=XML.getNumTags("movlayer");
+ if(numLayers) {
+ for (int i=0;i<numLayers;i++) {
+ string s=XML.getAttribute("movlayer", "file", "",i);
+ printf("loading %s: \n",s.c_str()); + int note=XML.getAttribute("movlayer", "note", 0,i); + int endnote=XML.getAttribute("movlayer", "endnote", 0,i);
+ layers[note]=new videolayer(XML.getAttribute("movlayer", "file", "",i),note,endnote,speed); + if (endnote>note) { + for (int j=note+1;j<endnote;j++) { + layers[j]=layers[note]; + } + }
+ } + thumbnailed=false;
+ } + numLayers=XML.getNumTags("imglayer"); + if(numLayers) { + for (int i=0;i<numLayers;i++) { + string s=XML.getAttribute("imglayer", "files", "",i); + printf("loading %s: \n",s.c_str()); + int note=XML.getAttribute("imglayer", "note", 0,i); + int endnote=XML.getAttribute("imglayer", "endnote", 0,i); + float rate=XML.getAttribute("imglayer", "rate", 0.0,i); + int frames=XML.getAttribute("imglayer", "frames", 0,i); + int start=XML.getAttribute("imglayer", "start", 1,i); + layers[note]=new imglayer(s,frames,start,rate,note,endnote); + if (endnote>note) { + for (int j=note+1;j<=endnote;j++) { + layers[j]=layers[note]; + } + } + } + thumbnailed=false; + } XML.popTag();
} diff --git a/liveengine/src/playlist.h b/liveengine/src/playlist.h index 846de74..2790835 100755 --- a/liveengine/src/playlist.h +++ b/liveengine/src/playlist.h @@ -12,17 +12,17 @@ class playlist : public ofThread { playlist();
virtual ~playlist(); void loadimg(); - void loadsvg(); + void loadLayers(); void load(string _name); void threadedFunction();
- void makeThumbnail(); + void makeThumbnail(); - ofFbo thumbnail;
- bool thumbnailed;
+ ofFbo thumbnail;
+ bool thumbnailed;
ofxXmlSettings XML; map<int,layer*> layers;
- string name;
+ string name;
protected:
private:
};
diff --git a/liveengine/src/testApp.cpp b/liveengine/src/testApp.cpp index cdff1af..c69ac66 100755 --- a/liveengine/src/testApp.cpp +++ b/liveengine/src/testApp.cpp @@ -58,7 +58,7 @@ void kinectWindow::draw(){ //-------------------------------------------------------------- void testApp::setup(){
int midiPort=0;
- midiChannel=0; + midiChannel=0;
useKinect=false;
if( !XML.loadFile("settings.xml") ){
printf("unable to load settings.xml check data/ folder\n");
@@ -91,7 +91,7 @@ void testApp::setup(){ kw->addListener(kinectWin); kinectWin->setup(); kinectWin->setParent(this); - + NIinstance.start(); } @@ -106,9 +106,9 @@ void testApp::setup(){ settings[keys[k]]=XML.getAttribute("settings",keys[k],"none",0); } viewports[i]->setcam(settings); - XML.popTag(); + XML.popTag(); - } + } else viewports.push_back(new viewport(w,h,x,y,rot,ox,oy)); } } @@ -116,23 +116,22 @@ void testApp::setup(){ XML.popTag(); - } -
+ }
} - +
activeView=-1; midiIn.listPorts();
midiIn.openPort(midiPort);
midiIn.addListener(this);
- //to register only to one controller pass the id as first argument
+ // 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,127,NUM_CONTROLLERS); + memset(controllers,NUM_CONTROLLERS,0); note=0; makeColours(); @@ -198,8 +197,20 @@ void testApp::setup(){ 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)); + gui.add(drawSkel.setup("draw Skeleton",false)); resetDrawscale.addListener(this,&testApp::resetDrawscalePressed); resetFBscale.addListener(this,&testApp::resetFBscalePressed); @@ -214,6 +225,7 @@ void testApp::setup(){ guiWin->setup(); guiWin->setParent(this); + debug=false; } @@ -231,8 +243,7 @@ void testApp::makeColours() { } //-------------------------------------------------------------- void testApp::update(){
- - + //for (int i=0;i<numLayers;i++) layers[i]->update(); } void testApp::saveSettings(string filename){ @@ -258,14 +269,17 @@ void testApp::draw(){ float lambda=max(0.0f,1.0f-((ofGetElapsedTimef()-lastnoteTime)/decayTime)); - ofSetColor(255-fadetime,255-fadetime,255-fadetime); //for feedback
+ 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:scale,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:scale,even&&reversemain?1.0f/fscale:fscale,noteRandomiseColours?colShift:0.0f); + 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); @@ -413,8 +427,8 @@ void testApp::keyPressed(int key, ofxFenster* win){ } void testApp::keyPressed(int key){ - if (activeView<0) for (int i=0;i<viewports.size();i++) viewports[i]->keyPressed(key); - else if (activeView<viewports.size()) viewports[activeView]->keyPressed(key); + if (activeView<0) for (int i=0;i<viewports.size();i++) if (viewports[i]->isMapped) viewports[i]->keyPressed(key); + else if (activeView<viewports.size()&&viewports[activeView]->isMapped) viewports[activeView]->keyPressed(key); if (key>='0' && key <='5'){ @@ -434,7 +448,9 @@ void testApp::keyPressed(int key){ break; } } - + if(key =='q'){
+ nmidiMessage(144,ofRandom(64)+36,127); + } if(key == 'p'){ saveSettings("settings.xml"); printf("settings saved!\n"); @@ -480,10 +496,14 @@ void testApp::keyPressed(int key){ } - if (key=='.') { + if(key == 'd'){ + debug=!debug; + } + + if (key=='j') { fscale=1.0f; } - if (key=='/') { + if (key=='h') { scale=1.0f; } @@ -567,7 +587,11 @@ void testApp::toggleFPS(){ showFPS=!showFPS;
} -void testApp::newMidiMessage(ofxMidiEventArgs& eventArgs){
+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);
@@ -583,30 +607,38 @@ void testApp::newMidiMessage(ofxMidiEventArgs& eventArgs){ */
//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!
-
- if ((midiChannel==0)||(eventArgs.channel==midiChannel)) {
- switch(eventArgs.status) {
+ int i;
+ switch(event) {
case 144: //noteon-off channel 0
- noteOn=(eventArgs.byteTwo==0?false:true);
+ noteOn=(data2==0?false:true);
//for (int i=0;i<numLayers;i++){
// if (layers[i]->note==eventArgs.byteOne) layers[i]->setActive(noteOn);
//} - if (debug) printf("note: %i %i\n",eventArgs.byteOne,eventArgs.byteTwo); - note=eventArgs.byteOne; + + note=data1; lastnoteTime=ofGetElapsedTimef(); - if (noteRandomiseColours) { - makeColours(); // - }
+ 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",eventArgs.byteOne,eventArgs.byteTwo); - controllers[eventArgs.byteOne-START_CONTROLLER]=eventArgs.byteTwo;
+ if (debug) printf("cc: %i %i\n",data1,data2); + if (data1>=START_CONTROLLER) controllers[data1-START_CONTROLLER]=data2;
}
- }
}
diff --git a/liveengine/src/testApp.h b/liveengine/src/testApp.h index 689fb18..fa04e0b 100755 --- a/liveengine/src/testApp.h +++ b/liveengine/src/testApp.h @@ -2,7 +2,6 @@ //#include <GL/glxew.h> - #include "ofMain.h" #include "ofxXmlSettings.h" @@ -127,6 +126,8 @@ class testApp : public ofxFensterListener, public ofxMidiListener{ void keyPressedEvent(ofKeyEventArgs &args); void windowEvent(ofResizeEventArgs &args); + void nmidiMessage(int event,int data1, int data2); + void makeColours(); void toggleFPS(); @@ -144,7 +145,6 @@ class testApp : public ofxFensterListener, public ofxMidiListener{ bool fullscreenoutput; float lastnoteTime; - float decayTime; int fadetime; int rotate; @@ -182,9 +182,22 @@ class testApp : public ofxFensterListener, public ofxMidiListener{ ofxToggle transparentBlack; ofxButton resetDrawscale; ofxButton resetFBscale; + ofxIntSlider fS; + ofxParameter<int> fadeScale; + ofxFloatSlider dT; + ofxParameter<float> decayTime; + ofxToggle oscScale; + ofxToggle breakOsc; + ofxToggle randomOsc; + ofxFloatSlider sA; + ofxParameter<float> scaleAmplitude; + ofxFloatSlider sF; + ofxParameter<float> scaleFrequency; ofxToggle drawCloud; ofxToggle drawSkel; + float randOffs; + void resetDrawscalePressed(bool & pressed); void resetFBscalePressed(bool & pressed); diff --git a/liveengine/src/viewport.cpp b/liveengine/src/viewport.cpp index 0311d30..ddd1450 100755 --- a/liveengine/src/viewport.cpp +++ b/liveengine/src/viewport.cpp @@ -1,4 +1,4 @@ -#include "viewport.h" +#include "viewport.h"
#define DEBUG 0
//texture binding with normalised coords
@@ -76,9 +76,9 @@ void viewport::setup(int _w,int _h,int _x,int _y,float _r,int _ox,int _oy) { }
void viewport::draw(float a,unsigned char* controllers,int xshift,int yshift,playlist &list,bool transparentBlack,int note,int mode,ofColor* controller_colours,bool controlColours,float scale,float fscale,float colShift){
-
-
-
+
+
+
// test screen shape
/*
ofSetColor(255,0,0);
@@ -88,7 +88,7 @@ void viewport::draw(float a,unsigned char* controllers,int xshift,int yshift,pla ofRect(0,h/2,w/2,h/2);
ofRect(w/2,0,w/2,h/2);
*/
-
+
rb1.begin();
//can be done with texture offset?
@@ -97,7 +97,7 @@ void viewport::draw(float a,unsigned char* controllers,int xshift,int yshift,pla while (startx>0) startx-=(w*fscale);
int starty=((h-(h*fscale))/2)+yshift;
while (starty>0) starty-=(h*fscale);
-
+
for (int i=startx;i<w*2;i+=(w*fscale)) {
for (int j=starty;j<h*2;j+=(h*fscale)) {
rb2.draw(i,j,w*fscale,h*fscale);
@@ -110,7 +110,7 @@ void viewport::draw(float a,unsigned char* controllers,int xshift,int yshift,pla ofPushStyle();
if (note>0||mode==SOLID) {
- switch(mode) { + switch(mode) {
case SOLID: ofSetColor(255,0,0); ofRect(0,0,ofGetWidth(),ofGetHeight()); @@ -128,6 +128,7 @@ void viewport::draw(float a,unsigned char* controllers,int xshift,int yshift,pla ofTranslate(w/2,h/2);
ofScale(scale,scale,scale);
ofTranslate(-w/2,-h/2);
+ ofSetColor(255,255,255);
if (controlColours) list.layers[note]->draw(a,controllers,w,h,transparentBlack,colShift);
else list.layers[note]->draw(a,w,h,colShift);
ofPopMatrix();
@@ -144,7 +145,7 @@ void viewport::draw(float a,unsigned char* controllers,int xshift,int yshift,pla ofSetColor(255,255,255);
rb1.draw(0,0);
rb2.end();
-
+
ofPushMatrix();
ofTranslate(x+(w/2),y+(h/2));
ofRotate(r);
@@ -152,9 +153,9 @@ void viewport::draw(float a,unsigned char* controllers,int xshift,int yshift,pla ofTranslate(ox,oy);
rb2.draw(0,0);
-
+
ofPopStyle();
-
+
ofPopMatrix();
}
diff --git a/liveengine/src/viewport.h b/liveengine/src/viewport.h index 4e439b1..c401c17 100755 --- a/liveengine/src/viewport.h +++ b/liveengine/src/viewport.h @@ -7,19 +7,19 @@ #define NUM_NOTES 64
#define START_NOTE 36
-#define NUM_CONTROLLERS 6
+#define NUM_CONTROLLERS 26
#define START_CONTROLLER 102
#define NOTHING 0
#define BLOCKS 1
-#define LIST 2 +#define LIST 2
#define SOLID 3
void bindTexture(ofBaseHasTexture &t);
void unbindTexture(ofBaseHasTexture &t);
void bindTex(ofTexture &tex);
void unbindTex(ofTexture &tex); - +
#include "keyVar.h"
class viewport
@@ -63,7 +63,7 @@ class mappedviewport: public viewport { void mapdraw(float a,unsigned char* controllers,int xshift,int yshift,playlist &list,bool transparentBlack,int note,int mode,ofColor* controller_colours,bool controlColours,float scale,float fscale,float colShift);
ofxUserGenerator *rUser; private: - +
};
#endif // VIEWPORT_H
|
