summaryrefslogtreecommitdiff
path: root/glitcher/src/ofApp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'glitcher/src/ofApp.cpp')
-rw-r--r--glitcher/src/ofApp.cpp74
1 files changed, 43 insertions, 31 deletions
diff --git a/glitcher/src/ofApp.cpp b/glitcher/src/ofApp.cpp
index 6055485..dee1e2b 100644
--- a/glitcher/src/ofApp.cpp
+++ b/glitcher/src/ofApp.cpp
@@ -10,6 +10,12 @@ void ofApp::setup() {
buffer.allocate(ofGetWidth(),ofGetHeight());
renderFBO.allocate(ofGetWidth(),ofGetHeight(),GL_RGB);
//buffer.clear();
+
+ int bufferSize= ofGetWidth(); //should be based on the size of glitch buffer
+
+ soundStream.listDevices();
+ soundStream.setup(this, 0, 2, 44100, bufferSize, 4);
+
}
//--------------------------------------------------------------
@@ -32,44 +38,40 @@ void ofApp::draw() {
ofNoFill();
+ ofPushMatrix();
ofTranslate(ofGetWidth()/2,ofGetHeight()/2);
ofRect(-20,-20,40,40);
+ ofPopMatrix();
renderFBO.end();
renderFBO.readToPixels(buffer.getPixelsRef());
buffer.flagImageChanged();
- cv::Mat buf = buffer.getCvImage();
- cv::Mat dstbuf;
-
//create low res remap target
- cv::Mat dstX(32,24,CV_32FC1);
- cv::Mat dstY(32,24,CV_32FC1);
- cv::Mat srcX(32,24,CV_32FC1);
- cv::Mat srcY(32,24,CV_32FC1);
-
- float xFactor=ofGetWidth()/dstX.rows;
- float yFactor=ofGetHeight()/dstX.cols;
- for (int i=0;i<dstX.cols;i++){
- for (int j=0;j<dstX.rows;j++){
- dstX.at<double>(i,j)=i*xFactor;
- dstY.at<double>(i,j)=j*yFactor;
+ cv::Mat dstX(16,12,CV_32FC1);
+ cv::Mat dstY(16,12,CV_32FC1);
+ cv::Mat srcX(16,12,CV_32FC1);
+ cv::Mat srcY(16,12,CV_32FC1);
+
+ float xFactor=ofGetWidth()/srcX.cols;
+ float yFactor=ofGetHeight()/srcX.rows;
+ for (int i=0;i<srcX.cols;i++){
+ for (int j=0;j<srcX.rows;j++){
+ srcX.at<float>(j,i)=i*xFactor;
+ srcY.at<float>(j,i)=j*yFactor;
}
}
//transform the low res matrix
- float tX=0; //fraction of image
- float tY=0; //fraction of image
- float oX=0; //fraction of image
- float oY=0; //fraction of image
+ float tX=-.05; //fraction of image
+ float tY=-.04; //fraction of image
+ float oX=0.5; //fraction of image
+ float oY=0.5; //fraction of image
float s=0.99;
float r=0.0;
cv::Point2f srcTri[3], dstTri[3];
- cv::Mat rot_mat(2,3,CV_32FC1);
- cv::Mat trans_mat(2,3,CV_32FC1);
- cv::Mat out_mat(3,3,CV_32FC1);
-
+
// Compute matrix by creating triangle and transforming
srcTri[0].x=0;
srcTri[0].y=0;
@@ -98,23 +100,33 @@ void ofApp::draw() {
dstTri[i].x+=(oX*dstX.cols);
dstTri[i].y+=(oY*dstX.cols);
}
- trans_mat=getAffineTransform( srcTri, dstTri );
- warpAffine( srcX, dstX, trans_mat, srcX.size(), cv::INTER_NEAREST, cv::BORDER_WRAP);
- warpAffine( srcY, dstY, trans_mat, srcX.size(), cv::INTER_NEAREST, cv::BORDER_WRAP);
+
+ cv::Mat trans_mat=getAffineTransform(srcTri,dstTri);
+ warpAffine(srcX,dstX,trans_mat, srcX.size(), cv::INTER_LINEAR, cv::BORDER_WRAP);
+ warpAffine(srcY,dstY,trans_mat, srcY.size(), cv::INTER_LINEAR, cv::BORDER_WRAP);
cv::Mat scaledstX;
cv::Mat scaledstY;
- cv::resize(dstX,scaledstX, cv::Size(ofGetWidth(),ofGetHeight()), 0, 0, cv::INTER_NEAREST);
- cv::resize(dstY,scaledstY, cv::Size(ofGetWidth(),ofGetHeight()), 0, 0, cv::INTER_NEAREST);
+ cv::resize(dstX,scaledstX, cv::Size(ofGetWidth(),ofGetHeight()), 0, 0, cv::INTER_LINEAR);
+ cv::resize(dstY,scaledstY, cv::Size(ofGetWidth(),ofGetHeight()), 0, 0, cv::INTER_LINEAR);
+
+ cv::Mat buf = buffer.getCvImage();
+ cv::Mat dstbuf;
- cv::remap(buf,dstbuf,scaledstX,scaledstY, cv::INTER_LINEAR, cv::BORDER_WRAP, cv::Scalar(0,0, 0) );
- IplImage *tmp = new IplImage(dstbuf);
+ cv::remap(buf,dstbuf,scaledstX,scaledstY, cv::INTER_NEAREST, cv::BORDER_WRAP); //, cv::Scalar(0,0, 0) );
+ tmp = IplImage(dstbuf);
- buffer=tmp;
- delete tmp;
+ //buffer=tmp;
+ //buffer.remap(scaledstX,scaledstY);
+ buffer=&tmp;
renderFBO.draw(0,0); //eventually textured into a viewport
+ //buffer.draw(0,0);
+
+}
+
+void audioIn(float * input, int bufferSize, int nChannels){
}