add processing files and upgrade notes
							parent
							
								
									8aca939bb9
								
							
						
					
					
						commit
						dae4eef298
					
				|  | @ -2,7 +2,7 @@ | |||
| 
 | ||||
| `(maj 2023)` | ||||
| 
 | ||||
| ## general  | ||||
| ## general/jitakami | ||||
| 
 | ||||
| - jitakami/processing midi(values 0-127)->osc values (0-1000?) (one day) | ||||
| - jitakami/p5: titles in source instead of images? | ||||
|  | @ -14,7 +14,7 @@ | |||
| add: | ||||
| - bass/kick | ||||
| - percusion? | ||||
| - pads? | ||||
| - pads | ||||
| 
 | ||||
| 
 | ||||
| ## INTERRUPT  | ||||
|  |  | |||
|  | @ -0,0 +1,26 @@ | |||
| /* | ||||
| 	This file is part of "Interface Fractures IV - Q". | ||||
| 	Copyright (c) 2016 Luka Prinčič, All rights reserved. | ||||
| 	This program is free software distributed under | ||||
| 	GNU General Public Licence. See COPYING for more info. | ||||
| 	- - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
| 
 | ||||
|   autoSnap.pde | ||||
|      | ||||
|                                                                              */ | ||||
| 
 | ||||
| void autoSnap(boolean render) { // ------------------------------------- | ||||
|   if (render) { | ||||
|     // auto-save snapshots | ||||
|     if (frameCount == 1000) { | ||||
|       saveFrame("../../dev/snapshots/" | ||||
|                 + year() + nf(month(),2) | ||||
|                 + nf(day(),2) | ||||
|                 + nf(hour(),2) | ||||
|                 + nf(minute(),2) | ||||
|                 + nf(second(),2) | ||||
|                 + "_.png"); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
|  | @ -0,0 +1,27 @@ | |||
| /* | ||||
| 	This file is part of "Interface Fractures IV - Q". | ||||
| 	Copyright (c) 2016 Luka Prinčič, All rights reserved. | ||||
| 	This program is free software distributed under | ||||
| 	GNU General Public Licence. See COPYING for more info. | ||||
| 	- - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
| 
 | ||||
|   displayFps.pde | ||||
|      | ||||
|                                                                              */ | ||||
| 
 | ||||
| void displayFps(boolean render) { // ----------------------------------- | ||||
|   if (render){ | ||||
|     // Display Fps | ||||
|     rectMode(CORNER); | ||||
|     colorMode(RGB, 100, 100, 100, 100); | ||||
| 
 | ||||
|     noStroke(); | ||||
|     fill(0,0,0,100); | ||||
|     rect(2, 2, 40, 18); | ||||
| 
 | ||||
|     fill(100, 100, 100, 100);  | ||||
|     textFont(fpsFont); | ||||
|     textSize(12); | ||||
|     textAlign(LEFT); | ||||
|     text(round(frameRate) + "fps", 10, 16, 5);} | ||||
| } | ||||
|  | @ -0,0 +1,119 @@ | |||
| /* | ||||
| 	This file is part of "Interface Fractures III - Silicon". | ||||
| 	Copyright (c) 2015 Luka Prinčič, All rights reserved. | ||||
| 	This program is free software distributed under | ||||
| 	GNU General Public Licence. See COPYING for more info. | ||||
| 	- - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
| 
 | ||||
|   drawCurvesfly.pde | ||||
|      | ||||
|                                                                              */ | ||||
| 
 | ||||
| 
 | ||||
| void drawFlylines( boolean render, // should we render or not? | ||||
|                    int curvesNum, | ||||
|                    int pixBank, int pixId, | ||||
|                    float speed, float direction, float sensitivity, | ||||
|                    float brightDirection, | ||||
|                    float rotation, float brightRotation, | ||||
|                    int curveHue, int curveSatur, int curveBright, | ||||
|                    int curveAlpha, float curveBrightAlpha, | ||||
|                    int lineLength, float brightLength, int strokeWeight, | ||||
|                    int pixHue, int pixSatur, int pixBright, int pixAlpha | ||||
|                    ) | ||||
| { | ||||
|   if (render) { | ||||
| 
 | ||||
|     colorMode(HSB, 127, 127, 127, 127); | ||||
| 		blendMode(BLEND); // reset blend mode just in case | ||||
|     textureMode(IMAGE); | ||||
| 
 | ||||
|     // curvesNum = int(map(float(curvesNum), 0, 127, 0, 7000)); | ||||
|     speed = speed * 0.002; | ||||
|     brightDirection = map(brightDirection, 0, 127, -5, 5); | ||||
|     brightRotation = map(brightRotation, 0, 127, 0, 7); | ||||
|     curveBrightAlpha = map(curveBrightAlpha, 0, 127, 0, 1); | ||||
| 
 | ||||
|     pixBank = min(pixBank, imgPool.length - 1); | ||||
|     pixId = min(pixId, imgPool[pixBank].length - 1); | ||||
| 
 | ||||
|      | ||||
|     // main loop! | ||||
|     for (int i = 0; i  < curvesNum; i++) { // for each curve | ||||
| 
 | ||||
|       // is this the time of creation?  | ||||
|       if (curveX[i] == 0.0) { | ||||
|         if (curveY[i] == 0.0) { | ||||
|           curveX[i] = random(width); | ||||
|           curveY[i] = random(height); | ||||
|         } | ||||
|       } | ||||
|        | ||||
|       color curveC = imgPool[pixBank][pixId] // load only full-size HD images! | ||||
|         .get(int(curveX[i]), int(curveY[i])); // get color of the pixel | ||||
|       float curvePixBrightness = pow(brightness(curveC), 1.8) / 127.0; | ||||
|       // maximum: pow(127, 1.8) / 127 = 48.19954 | ||||
|       // if sensitivity is 0 then speedPixBrightness is a constant 48.2 / 2 | ||||
|       // speed * (curvePixBrightness * sensitivity) + ((1-sensitivity) * 25)) | ||||
| 
 | ||||
|       float curvDirection = radians(map(direction, 0, 127, 0, 360) + (curvePixBrightness * brightDirection)); | ||||
|       float cosdir = cos(curvDirection); | ||||
|       float sindir = sin(curvDirection); | ||||
|        | ||||
|       float speedPixBrightness = speed * ((curvePixBrightness * sensitivity) + ((1-sensitivity) * 25)); | ||||
| 
 | ||||
|       float lineLengthBri = pow(lineLength * 0.1, 2) * ( (curvePixBrightness * brightLength ) + ((1 - brightLength)*1 ) ); | ||||
|       //println(curvePixBrightness); | ||||
| 
 | ||||
|       curveX[i] = curveX[i] + speedPixBrightness * cosdir; | ||||
|       curveY[i] = curveY[i] + speedPixBrightness * sindir; | ||||
| 
 | ||||
|        | ||||
|       if (curveX[i] > width-1) { // if off-sceen on X-axis | ||||
|         curveX[i] = 1; // wrap back | ||||
|         curveY[i] = random(height-1); } // randomize Y-axis position | ||||
|       else if (curveX[i] < 1) { | ||||
|         curveX[i] = width-1; | ||||
|         curveY[i] = random(height-1); // randomize Y-axis position | ||||
|       } | ||||
| 
 | ||||
|       if (curveY[i] > height-1) { // if off-sceen on X-axis | ||||
|         curveY[i] = 1; // wrap back | ||||
|         curveX[i] = random(width-1); } // randomize Y-axis position | ||||
|       else if (curveY[i] < 0-1) { | ||||
|         curveY[i] = height-1; | ||||
|         curveX[i] = random(width-1);  // randomize Y-axis position | ||||
|       } | ||||
| 
 | ||||
|       float curveRotation = radians(map(rotation, 0, 127, 0, 180) + (brightRotation * curvePixBrightness) );   | ||||
| 
 | ||||
| 
 | ||||
|       // float curveBrightAlphaFact = (brightness(curveC) / 127.0) * curveBrightAlpha; | ||||
|       float curveAlphaDest = curveAlpha * (((brightness(curveC) / 127.0) | ||||
|             * curveBrightAlpha) | ||||
|            + (1 - curveBrightAlpha)); | ||||
|        | ||||
|       pushMatrix(); | ||||
|       stroke(color(curveHue, curveSatur, curveBright, curveAlphaDest)); | ||||
|       strokeWeight(strokeWeight); | ||||
|       translate(curveX[i], curveY[i]); | ||||
|       rotate(curveRotation); | ||||
|       line (0, lineLengthBri, 0, -lineLengthBri); | ||||
|       popMatrix(); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     noStroke(); | ||||
|     beginShape(); | ||||
|     texture(imgPool[pixBank][pixId]); | ||||
|     tint(pixHue, pixSatur, pixBright, pixAlpha); | ||||
|     vertex(0, 0, 0, 0); | ||||
|     vertex(width, 0, width, 0); | ||||
|     vertex(width, height, width, height); | ||||
|     vertex(0, height, 0, height); | ||||
|     endShape(); | ||||
| 
 | ||||
| 
 | ||||
|   }  | ||||
| }  | ||||
| 
 | ||||
|  | @ -0,0 +1,118 @@ | |||
| /* | ||||
| 	This file is part of "Interface Fractures III - Silicon". | ||||
| 	Copyright (c) 2015 Luka Prinčič, All rights reserved. | ||||
| 	This program is free software distributed under | ||||
| 	GNU General Public Licence. See COPYING for more info. | ||||
| 	- - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
| 
 | ||||
|   drawImageBlender.pde | ||||
|      | ||||
|                                                                              */ | ||||
| 
 | ||||
| 
 | ||||
| void drawImageBlender(boolean render, // on off | ||||
|                       int pixBank, int pixId, | ||||
|                       //                      PImage iblImg1, | ||||
|                       int iblNum, | ||||
|                       float iblX, float iblY, float iblWidth, float iblHeight, | ||||
|                       float iblRot, | ||||
|                       float iblSpeedX, float iblSpeedY, | ||||
|                       float iblSpeedXfactor, float iblSpeedYfactor, | ||||
|                       //float iblTexX, float iblTexY,  // using global array | ||||
|                       float iblTexWidth, float iblTexHeight, | ||||
|                       float iblTexSpeedX, float iblTexSpeedY, | ||||
|                       float iblTexSpeedXfactor, float iblTexSpeedYfactor, | ||||
|                       int iblH, int iblS, int iblB, int iblA, | ||||
|                       int iblBflicker, | ||||
|                       float iblItX, float iblItY, | ||||
|                       float iblItTexX, float iblItTexY, float iblItRot | ||||
|                       ) | ||||
| 
 | ||||
| {  | ||||
|   if (render) { | ||||
| 
 | ||||
| 
 | ||||
|     pixBank = min(pixBank, imgPool.length - 1); | ||||
|     pixId = min(pixId, imgPool[pixBank].length - 1); | ||||
| 
 | ||||
|     //iblRot = iblRot * 0.1; | ||||
|      | ||||
|     pushMatrix(); | ||||
| 
 | ||||
|     translate(width/2, height/2); // center coordinate system | ||||
|      | ||||
|     // autonomous movement | ||||
|     iblSpeedX = 0.1; | ||||
|     iblSpeedY = 0.1; | ||||
|     iblSpeedX *= iblSpeedXfactor; | ||||
|     iblSpeedY *= iblSpeedYfactor; | ||||
|     iblX += iblSpeedX;													 | ||||
|     iblY += iblSpeedY; | ||||
| 
 | ||||
|     if (iblX > width) { iblX = -width; } | ||||
|     if (iblX < -width) { iblX = width; } | ||||
|     if (iblY > height) { iblY = -height; } | ||||
|     if (iblY < -height) { iblY = height; } | ||||
|      | ||||
|     iblTexSpeedX = 0.1; | ||||
|     iblTexSpeedY = 0.1; | ||||
|     iblTexSpeedX *= iblTexSpeedXfactor; | ||||
|     iblTexSpeedY *= iblTexSpeedYfactor; | ||||
|     iblTexXY[0] += iblTexSpeedX; | ||||
|     iblTexXY[1] += iblTexSpeedY; | ||||
| 
 | ||||
|     int iblBflicked; | ||||
|     if (frameCount % flickCount == 1) { iblBflicked = iblB - iblBflicker; } | ||||
|     else { iblBflicked = iblB; } | ||||
| 
 | ||||
|     colorMode(HSB, 127); | ||||
| 
 | ||||
|     for (int i=0; i < iblNum; i++) { | ||||
|        | ||||
|       // draw in an independent coordinate system | ||||
|       pushMatrix(); | ||||
|      | ||||
|       // XY = translate | ||||
|       translate(iblX + i*iblItX, iblY + i*iblItY); | ||||
|       rotate(iblRot + (i*iblItRot)); | ||||
|       textureWrap(REPEAT); | ||||
|       // draw the quad | ||||
|       beginShape(); | ||||
|       tint(iblH, iblS, iblBflicked, iblA); | ||||
|       //tint(200,255,255); | ||||
|       //      texture(iblImg1); | ||||
|       textureMode(IMAGE); | ||||
|       texture(imgPool[pixBank][pixId]); | ||||
|                 | ||||
|       vertex(-iblWidth, -iblHeight, // X & Y of the vertex | ||||
|              width/2 - iblWidth + iblX + iblTexXY[0] + (i*iblItTexX) - iblTexWidth, // X of the texture | ||||
|              height/2 - iblHeight + iblY + iblTexXY[1] + (i*iblItTexY) - iblTexHeight); // Y of the texture | ||||
|       vertex(iblWidth, -iblHeight, | ||||
|              width/2 + iblWidth + iblX + iblTexXY[0] + (i*iblItTexX) + iblTexWidth, | ||||
|              height/2 - iblHeight + iblY + iblTexXY[1] + (i*iblItTexY) - iblTexHeight);  | ||||
|       vertex(iblWidth, iblHeight, | ||||
|              width/2 + iblWidth + iblX + iblTexXY[0] + (i*iblItTexX) + iblTexWidth, | ||||
|              height/2 + iblHeight + iblY + iblTexXY[1] + (i*iblItTexY) + iblTexHeight);  | ||||
|       vertex(-iblWidth, iblHeight, | ||||
|              width/2 - iblWidth + iblX + iblTexXY[0] + (i*iblItTexX) - iblTexWidth, | ||||
|              height/2 + iblHeight + iblY + iblTexXY[1] + (i*iblItTexY) + iblTexHeight); | ||||
|       endShape(); | ||||
| 
 | ||||
|       popMatrix(); // end independent coordinate system | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     popMatrix(); | ||||
|      | ||||
|     /* //** debug **************************** | ||||
|        fill(0,125); | ||||
|        rect(0, 0, 200, 30); | ||||
| 
 | ||||
|        fill(255); | ||||
|        text(iblTexSpeedXfactor, 5, 30); | ||||
| 
 | ||||
|        //text(iblSpeedXfactor, 20, 60); | ||||
|        */ | ||||
| 
 | ||||
|   } | ||||
| } | ||||
|  | @ -0,0 +1,255 @@ | |||
| /* | ||||
| 
 | ||||
| 	This file is part of "Interface Fractures III - Silicon". | ||||
| 	Copyright (c) 2015 Luka Prinčič, All rights reserved. | ||||
| 	This program is free software distributed under | ||||
| 	GNU General Public Licence. See COPYING for more info. | ||||
| 	- - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
| 
 | ||||
|   drawPlates.pde | ||||
|      | ||||
|                                                                              */ | ||||
| 
 | ||||
| void drawPlates( boolean render, // should we render or not? | ||||
|              | ||||
|             int imgAbank, int imgAid, | ||||
|             int texAspeed, int texAdirection, | ||||
|             int imgATopLeft, int imgATopRight, | ||||
|             int imgABotRight, int imgABotLeft, | ||||
|             int imgAalpha,  | ||||
|             int imgAhue, int imgAbright, | ||||
| 
 | ||||
|             int imgBbank, int imgBid, | ||||
|             int texBspeed, int texBdirection, | ||||
|             int imgBTopLeft, int imgBTopRight, | ||||
|             int imgBBotRight, int imgBBotLeft, | ||||
|             int imgBalpha,  | ||||
|             int imgBhue, int imgBbright, | ||||
| 
 | ||||
|             int imgCbank, int imgCid, | ||||
|             int texCspeed, int texCdirection, | ||||
|             int imgCTopLeft, int imgCTopRight, | ||||
|             int imgCBotRight, int imgCBotLeft, | ||||
|             int imgCalpha,  | ||||
|             int imgChue, int imgCbright, | ||||
| 
 | ||||
|             int imgBblendMode, int imgCblendMode, | ||||
|             int saturation, // common saturation for all | ||||
|             int coordError // glitch texture coordinates - amount of error 0-127 - add random | ||||
| 
 | ||||
|             ) | ||||
| { | ||||
|   if (render) { | ||||
| 
 | ||||
| 		blendMode(BLEND); // reset blend mode just in case | ||||
|     colorMode(HSB, 127, 127, 127, 127);     | ||||
|     textureWrap(REPEAT); | ||||
|     textureMode(NORMAL); | ||||
|     imgAbank = min(imgAbank, imgPool.length - 1); | ||||
|     imgBbank = min(imgBbank, imgPool.length - 1); | ||||
|     imgCbank = min(imgCbank, imgPool.length - 1); | ||||
|     imgAid = min(imgAid, imgPool[imgAbank].length - 1); | ||||
|     imgBid = min(imgBid, imgPool[imgBbank].length - 1); | ||||
|     imgCid = min(imgCid, imgPool[imgCbank].length - 1); | ||||
|      | ||||
| 
 | ||||
|     float textureError = float(coordError) * (1.0/127.0); | ||||
|     //    float textureError = 1.0/127.0; | ||||
|     textureError = textureError * rands[coordError]; //* (5.0/250.0); | ||||
|     //println(textureError); | ||||
|      | ||||
|     // imgA ---------------------------------------------- | ||||
|     // prepare coordinates of all 4 corners for midi input | ||||
|     int imgATopLeftX, imgATopLeftY; | ||||
|     if (imgATopLeft < 64) {  | ||||
|       imgATopLeftX = 0; | ||||
|       imgATopLeftY = height - int( (float(imgATopLeft) * 0.015625) * height ); } | ||||
|     else { | ||||
|       imgATopLeftX = int( ((float(imgATopLeft) - 64) * 0.015625) * width ); | ||||
|       imgATopLeftY = 0; } | ||||
| 
 | ||||
|     int imgATopRightX, imgATopRightY; | ||||
|     if (imgATopRight < 64) { | ||||
|       imgATopRightX = width; | ||||
|       imgATopRightY = height - int( (float(imgATopRight) / 64) * height ); } | ||||
|     else { | ||||
|       imgATopRightX = int( width - (((float(imgATopRight) - 64) / 64) * width) ); | ||||
|       imgATopRightY = 0; } | ||||
| 
 | ||||
|     int imgABotRightX, imgABotRightY; | ||||
|     if (imgABotRight < 64) { | ||||
|       imgABotRightX = width; | ||||
|       imgABotRightY = int( ((float(imgABotRight) / 64) * height) ); } | ||||
|     else { | ||||
|       imgABotRightX = int( width - (((float(imgABotRight) - 64) / 64) * width) ); | ||||
|       imgABotRightY = height; } | ||||
| 
 | ||||
|     int imgABotLeftX, imgABotLeftY; | ||||
|     if (imgABotLeft < 64) { | ||||
|       imgABotLeftX = 0; | ||||
|       imgABotLeftY = int( (float(imgABotLeft) / 64) * height ); } | ||||
|     else { | ||||
|       imgABotLeftX = int( ((float(imgABotLeft) - 64) / 64) * width ); | ||||
|       imgABotLeftY = height; } | ||||
| 
 | ||||
|     // prepare coordinates of texture using speed and direction | ||||
|     float imgATopLeftTexX, imgATopLeftTexY; | ||||
|     float imgATopRightTexX, imgATopRightTexY; | ||||
|     float imgABotLeftTexX, imgABotLeftTexY; | ||||
|     float imgABotRightTexX, imgABotRightTexY; | ||||
|     float imgATexSpeed = frameCount * 0.0001 * pow(texAspeed,1.5); // temp | ||||
|     float imgATexDirectionRad = radians(float(texAdirection) * 2.83464566929); | ||||
|      | ||||
|     imgATopLeftTexX = 0 + imgATexSpeed * cos(imgATexDirectionRad + textureError); // needs to be tested!! | ||||
|     imgATopLeftTexY = 0 + imgATexSpeed * sin(imgATexDirectionRad + textureError); | ||||
|     imgATopRightTexX = 1 + imgATexSpeed * cos(imgATexDirectionRad); | ||||
|     imgATopRightTexY = 0 + imgATexSpeed * sin(imgATexDirectionRad); | ||||
|     imgABotRightTexX = 1 + imgATexSpeed * cos(imgATexDirectionRad); | ||||
|     imgABotRightTexY = 1 + imgATexSpeed * sin(imgATexDirectionRad); | ||||
|     imgABotLeftTexX = 0 + imgATexSpeed * cos(imgATexDirectionRad); | ||||
|     imgABotLeftTexY = 1 + imgATexSpeed * sin(imgATexDirectionRad); | ||||
| 
 | ||||
|     // color | ||||
|     tint(imgAhue, saturation, imgAbright, imgAalpha); | ||||
|              | ||||
|     beginShape(); | ||||
|     texture(imgPool[imgAbank][imgAid]); | ||||
|     vertex(imgATopLeftX,  imgATopLeftY,  imgATopLeftTexX, imgATopLeftTexY); | ||||
|     vertex(imgATopRightX,  imgATopRightY,  imgATopRightTexX, imgATopRightTexY); | ||||
|     vertex(imgABotRightX,  imgABotRightY,  imgABotRightTexX, imgABotRightTexY); | ||||
|     vertex(imgABotLeftX,  imgABotLeftY,  imgABotLeftTexX, imgABotLeftTexY); | ||||
|     endShape(); | ||||
| 
 | ||||
|     // imgB ---------------------------------------------- | ||||
|     // prepare coordinates of all 4 corners for midi input | ||||
|     int imgBTopLeftX, imgBTopLeftY; | ||||
|     if (imgBTopLeft < 64) {  | ||||
|       imgBTopLeftX = 0; | ||||
|       imgBTopLeftY = height - int( (float(imgBTopLeft) * 0.015625) * height );  | ||||
|         } | ||||
|     else { | ||||
|       imgBTopLeftX = int( ((float(imgBTopLeft) - 64) * 0.015625) * width ); | ||||
|       imgBTopLeftY = 0; } | ||||
| 
 | ||||
|     int imgBTopRightX, imgBTopRightY; | ||||
|     if (imgBTopRight < 64) { | ||||
|       imgBTopRightX = width; | ||||
|       imgBTopRightY = height - int( (float(imgBTopRight) / 64) * height ); } | ||||
|     else { | ||||
|       imgBTopRightX = int( width - (((float(imgBTopRight) - 64) / 64) * width) ); | ||||
|       imgBTopRightY = 0; } | ||||
| 
 | ||||
|     int imgBBotRightX, imgBBotRightY; | ||||
|     if (imgBBotRight < 64) { | ||||
|       imgBBotRightX = width; | ||||
|       imgBBotRightY = int( ((float(imgBBotRight) / 64) * height) ); } | ||||
|     else { | ||||
|       imgBBotRightX = int( width - (((float(imgBBotRight) - 64) / 64) * width) ); | ||||
|       imgBBotRightY = height; } | ||||
| 
 | ||||
|     int imgBBotLeftX, imgBBotLeftY; | ||||
|     if (imgBBotLeft < 64) { | ||||
|       imgBBotLeftX = 0; | ||||
|       imgBBotLeftY = int( (float(imgBBotLeft) / 64) * height ); } | ||||
|     else { | ||||
|       imgBBotLeftX = int( ((float(imgBBotLeft) - 64) / 64) * width ); | ||||
|       imgBBotLeftY = height; } | ||||
| 
 | ||||
|     // prepare coordinates of texture using speed and direction | ||||
|     float imgBTopLeftTexX, imgBTopLeftTexY; | ||||
|     float imgBTopRightTexX, imgBTopRightTexY; | ||||
|     float imgBBotLeftTexX, imgBBotLeftTexY; | ||||
|     float imgBBotRightTexX, imgBBotRightTexY; | ||||
|     float imgBTexSpeed = frameCount * 0.0001 * pow(texBspeed,1.5); // temp | ||||
|     float imgBTexDirectionRad = radians(float(texBdirection) * 2.83464566929); | ||||
|      | ||||
|     imgBTopLeftTexX = 0 + imgBTexSpeed * cos(imgBTexDirectionRad); | ||||
|     imgBTopLeftTexY = 0 + imgBTexSpeed * sin(imgBTexDirectionRad); | ||||
|     imgBTopRightTexX = 1 + imgBTexSpeed * cos(imgBTexDirectionRad); | ||||
|     imgBTopRightTexY = 0 + imgBTexSpeed * sin(imgBTexDirectionRad); | ||||
|     imgBBotRightTexX = 1 + imgBTexSpeed * cos(imgBTexDirectionRad); | ||||
|     imgBBotRightTexY = 1 + imgBTexSpeed * sin(imgBTexDirectionRad); | ||||
|     imgBBotLeftTexX = 0 + imgBTexSpeed * cos(imgBTexDirectionRad); | ||||
|     imgBBotLeftTexY = 1 + imgBTexSpeed * sin(imgBTexDirectionRad); | ||||
| 
 | ||||
|     // color | ||||
|     tint(imgBhue, saturation, imgBbright, imgBalpha); | ||||
|     switchBlendMode(imgBblendMode); | ||||
|              | ||||
|     beginShape(); | ||||
|     texture(imgPool[imgBbank][imgBid]); | ||||
|     vertex(imgBTopLeftX,  imgBTopLeftY,  imgBTopLeftTexX, imgBTopLeftTexY); | ||||
|     vertex(imgBTopRightX,  imgBTopRightY,  imgBTopRightTexX, imgBTopRightTexY); | ||||
|     vertex(imgBBotRightX,  imgBBotRightY,  imgBBotRightTexX, imgBBotRightTexY); | ||||
|     vertex(imgBBotLeftX,  imgBBotLeftY,  imgBBotLeftTexX, imgBBotLeftTexY); | ||||
|     endShape(); | ||||
| 
 | ||||
| 
 | ||||
|     // imgC ---------------------------------------------- | ||||
|     // prepare coordinates of all 4 corners for midi input | ||||
|     int imgCTopLeftX, imgCTopLeftY; | ||||
|     if (imgCTopLeft < 64) {  | ||||
|       imgCTopLeftX = 0; | ||||
|       imgCTopLeftY = height - int( (float(imgCTopLeft) * 0.015625) * height );  | ||||
|         } | ||||
|     else { | ||||
|       imgCTopLeftX = int( ((float(imgCTopLeft) - 64) * 0.015625) * width ); | ||||
|       imgCTopLeftY = 0; } | ||||
| 
 | ||||
|     int imgCTopRightX, imgCTopRightY; | ||||
|     if (imgCTopRight < 64) { | ||||
|       imgCTopRightX = width; | ||||
|       imgCTopRightY = height - int( (float(imgCTopRight) / 64) * height ); } | ||||
|     else { | ||||
|       imgCTopRightX = int( width - (((float(imgCTopRight) - 64) / 64) * width) ); | ||||
|       imgCTopRightY = 0; } | ||||
| 
 | ||||
|     int imgCBotRightX, imgCBotRightY; | ||||
|     if (imgCBotRight < 64) { | ||||
|       imgCBotRightX = width; | ||||
|       imgCBotRightY = int( ((float(imgCBotRight) / 64) * height) ); } | ||||
|     else { | ||||
|       imgCBotRightX = int( width - (((float(imgCBotRight) - 64) / 64) * width) ); | ||||
|       imgCBotRightY = height; } | ||||
| 
 | ||||
|     int imgCBotLeftX, imgCBotLeftY; | ||||
|     if (imgCBotLeft < 64) { | ||||
|       imgCBotLeftX = 0; | ||||
|       imgCBotLeftY = int( (float(imgCBotLeft) / 64) * height ); } | ||||
|     else { | ||||
|       imgCBotLeftX = int( ((float(imgCBotLeft) - 64) / 64) * width ); | ||||
|       imgCBotLeftY = height; } | ||||
| 
 | ||||
|     // prepare coordinates of texture using speed and direction | ||||
|     float imgCTopLeftTexX, imgCTopLeftTexY; | ||||
|     float imgCTopRightTexX, imgCTopRightTexY; | ||||
|     float imgCBotLeftTexX, imgCBotLeftTexY; | ||||
|     float imgCBotRightTexX, imgCBotRightTexY; | ||||
|     float imgCTexSpeed = frameCount * 0.0001 * pow(texCspeed,1.5); // temp | ||||
|     float imgCTexDirectionRad = radians(float(texCdirection) * 2.83464566929); | ||||
|      | ||||
|     imgCTopLeftTexX = 0 + imgCTexSpeed * cos(imgCTexDirectionRad); | ||||
|     imgCTopLeftTexY = 0 + imgCTexSpeed * sin(imgCTexDirectionRad); | ||||
|     imgCTopRightTexX = 1 + imgCTexSpeed * cos(imgCTexDirectionRad); | ||||
|     imgCTopRightTexY = 0 + imgCTexSpeed * sin(imgCTexDirectionRad); | ||||
|     imgCBotRightTexX = 1 + imgCTexSpeed * cos(imgCTexDirectionRad); | ||||
|     imgCBotRightTexY = 1 + imgCTexSpeed * sin(imgCTexDirectionRad); | ||||
|     imgCBotLeftTexX = 0 + imgCTexSpeed * cos(imgCTexDirectionRad); | ||||
|     imgCBotLeftTexY = 1 + imgCTexSpeed * sin(imgCTexDirectionRad); | ||||
| 
 | ||||
|     // color | ||||
|     tint(imgChue, saturation, imgCbright, imgCalpha); | ||||
|     switchBlendMode(imgCblendMode); | ||||
|      | ||||
|     beginShape(); | ||||
|     texture(imgPool[imgCbank][imgCid]); | ||||
|     vertex(imgCTopLeftX,  imgCTopLeftY,  imgCTopLeftTexX, imgCTopLeftTexY); | ||||
|     vertex(imgCTopRightX,  imgCTopRightY,  imgCTopRightTexX, imgCTopRightTexY); | ||||
|     vertex(imgCBotRightX,  imgCBotRightY,  imgCBotRightTexX, imgCBotRightTexY); | ||||
|     vertex(imgCBotLeftX,  imgCBotLeftY,  imgCBotLeftTexX, imgCBotLeftTexY); | ||||
|     endShape(); | ||||
| 
 | ||||
|     blendMode(BLEND); | ||||
|      | ||||
|   } | ||||
| } | ||||
|  | @ -0,0 +1,105 @@ | |||
| /* | ||||
| 
 | ||||
| 	This file is part of "Interface Fractures III - Silicon". | ||||
| 	Copyright (c) 2015 Luka Prinčič, All rights reserved. | ||||
| 	This program is free software distributed under | ||||
| 	GNU General Public Licence. See COPYING for more info. | ||||
| 	- - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
| 
 | ||||
|   tiles.pde | ||||
|      | ||||
|                                                                              */ | ||||
| // TILES - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  | ||||
|   /* TODO: | ||||
|      - different zooms (random?) | ||||
|      - better rotation | ||||
|      - multiple instances of the same thing - with | ||||
|        different texture & some parameters + parameterize | ||||
| 
 | ||||
|      - zoom variations | ||||
|      - ?amount of speed variations accross tiles | ||||
|    */ | ||||
| 
 | ||||
| void drawTiles( boolean render, // should we render or not? | ||||
|             int tilesBgHue, int tilesBgSat, int tilesBgBri, | ||||
|             int tilesHue, int tilesSat, int tilesBri, | ||||
|             //color bgfill, // backgorund color | ||||
|             //!!color tilecolor, // tile color | ||||
|             int huedist, // tile color distance for interpolation | ||||
|             int blendMode, // blending mode of tiles | ||||
|             int numx, // number of tiles on X | ||||
|             int numy, // number of tiles on Y | ||||
|             int texBank, | ||||
|             int texNum, | ||||
|             float texSpeedX, | ||||
|             float texSpeedY, | ||||
|             float overlap ) | ||||
| { | ||||
|   if (render) { | ||||
| 
 | ||||
|     colorMode(HSB, 127, 127, 127, 127); | ||||
|     blendMode(BLEND); | ||||
|     color bgfill = color(tilesBgHue, tilesBgSat, tilesBgBri); | ||||
|     color tilecolor = color(tilesHue, tilesSat, tilesBri); | ||||
|      | ||||
|     fill(bgfill); | ||||
|     noStroke(); | ||||
|     rectMode(CORNER);     | ||||
|     rect(0, 0, width, height); | ||||
|     switchBlendMode(blendMode); // blendMode function using integers | ||||
| 
 | ||||
|     texBank = min(texBank, imgPool.length - 1); | ||||
|     texNum = min(texNum, imgPool[texBank].length - 1); | ||||
| 
 | ||||
|     texSpeedX *= 0.01; | ||||
|     texSpeedY *= 0.01; | ||||
|     texX += sq(sq(texSpeedX));  | ||||
|     texY += sq(sq(texSpeedY));  | ||||
| 
 | ||||
|     numx = max(1, numx); | ||||
|     numy = max(1, numy); | ||||
|     float numxfact = 1 / float(numx); | ||||
|     float numyfact = 1 / float(numy); | ||||
|     float aspectRatio = (height / float(numy)) / (width / float(numx)); | ||||
|   | ||||
|     float offsetPerc = overlap * (300/127); | ||||
| 
 | ||||
|     float uniZoom = numxfact * (float(width)/1024); | ||||
|    | ||||
|     float offsetX = width * numxfact * offsetPerc * 0.01; | ||||
|     float offsetY = height * numyfact * offsetPerc * 0.01; | ||||
|     float texoffsetX =   1 + 0.01 * offsetPerc ; | ||||
|     float texoffsetY =  texoffsetX; | ||||
| 
 | ||||
|     float huefactor = float(huedist) / (numx * numy); | ||||
| 
 | ||||
|     for (int nx=0; nx < numx; nx++) { | ||||
| 
 | ||||
|       for (int ny=0; ny < numy; ny++) { | ||||
| 
 | ||||
|         int tileID = nx * numy + ny; | ||||
|         float randX = rands[ (tileID % rands.length) ] * 0.01; | ||||
|         float randY = rands[ ((tileID + 50) % rands.length) ] * 0.01; | ||||
|         float newhue = hue(tilecolor) + huefactor * tileID; | ||||
|         tint(newhue, saturation(tilecolor), brightness(tilecolor), alpha(tilecolor)); | ||||
|         textureWrap(REPEAT); | ||||
|         textureMode(NORMAL); | ||||
| 
 | ||||
|         beginShape(); | ||||
|        | ||||
|         texture(imgPool[texBank][texNum]); | ||||
|         vertex(width * numxfact *  nx      - offsetX, height * numyfact *  ny      - offsetY, 0                        + texX * randX, 0                                  + texY * randY); | ||||
|         vertex(width * numxfact * (nx + 1) + offsetX, height * numyfact *  ny      - offsetY, 1 * uniZoom * texoffsetX + texX * randX, 0                                  + texY * randY); | ||||
|         vertex(width * numxfact * (nx + 1) + offsetX, height * numyfact * (ny + 1) + offsetY, 1 * uniZoom * texoffsetX + texX * randX, aspectRatio * uniZoom * texoffsetY + texY * randY); | ||||
|         vertex(width * numxfact *  nx      - offsetX, height * numyfact * (ny + 1) + offsetY, 0                        + texX * randX, aspectRatio * uniZoom * texoffsetY + texY * randY); | ||||
| 
 | ||||
|         endShape(); | ||||
| 
 | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | @ -0,0 +1,51 @@ | |||
| /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * | ||||
| 
 | ||||
| 	This file is part of "Interface Fractures III - Silicon". | ||||
| 	Copyright (c) 2015 Luka Prinčič, All rights reserved. | ||||
| 	This program is free software distributed under | ||||
| 	GNU General Public Licence. See COPYING for more info. | ||||
| 	- - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
| 
 | ||||
|   getImages.pde | ||||
|                                                                              */ | ||||
| 
 | ||||
| // loads all images into an array - - - - - - - - - - - - - - - - - - - - - - - - -  | ||||
| PImage[][] getImages(String folder) { | ||||
| //ArrayList<ArrayList> getImages(String folder) { | ||||
| 
 | ||||
|   PImage[][] imgPool; // declare 2D array imgPool | ||||
|   //ArrayList<ArrayList>  imgPool; | ||||
| 
 | ||||
|    | ||||
|   File dir = new File(dataPath(sketchPath() + folder)); // first folder | ||||
|   String[] dirlist = dir.list(); // an array of folders (strings) | ||||
|   dirlist = sort(dirlist); // | ||||
|   //imgPool = new ArrayList<ArrayList>(); | ||||
|   imgPool = new PImage[dirlist.length][100]; // create 2d array imgPool | ||||
|    | ||||
|   for (int i = 0; i < dirlist.length; i++) { | ||||
|     String fulldir = dataPath(sketchPath() + folder + dirlist[i]) + "/"; | ||||
|     File dir2 = new File(fulldir); | ||||
|     String[] filelist = dir2.list(); // an array of image names | ||||
|     filelist = sort(filelist); | ||||
|     println("\n~~~ IMAGE BANK no." + i + ": " + dirlist[i]); | ||||
|      | ||||
|     if (filelist.length != 0) { | ||||
|       imgPool[i] = (PImage[]) expand(imgPool[i], filelist.length); | ||||
|       //     geez: ^^^^^^^^^^ !!!!! | ||||
| 
 | ||||
|       for (int j = 0; j < filelist.length; j++) { | ||||
|         println("    imgPool[" + i + "][" + j + "]: " + dirlist[i] + " " + filelist[j]); | ||||
|         imgPool[i][j] = loadImage(fulldir + filelist[j]); | ||||
|       } | ||||
|        | ||||
|     } else { | ||||
|       println("No files in this folder: " + fulldir); | ||||
|     }     | ||||
|   } | ||||
| 
 | ||||
|   println("\n~~~ Done loading images.\n"); | ||||
| 
 | ||||
|   return imgPool; | ||||
|    | ||||
| } | ||||
|  | @ -0,0 +1,68 @@ | |||
| /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * | ||||
| 
 | ||||
| 	This file is part of "Interface Fractures III - Silicon". | ||||
| 	Copyright (c) 2015 Luka Prinčič, All rights reserved. | ||||
| 	This program is free software distributed under | ||||
| 	GNU General Public Licence. See COPYING for more info. | ||||
| 	- - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
| 
 | ||||
|   getVideos.pde | ||||
|                                                                              */ | ||||
| 
 | ||||
| Movie[][] getVideos(String folder) { | ||||
| 
 | ||||
|   Movie[][] vidPool; | ||||
| 
 | ||||
|    | ||||
|   File dir = new File(dataPath(sketchPath() + folder)); // first folder | ||||
|   String[] dirlist = dir.list(); // an array of folders (strings) | ||||
|   dirlist = sort(dirlist); // | ||||
| 
 | ||||
|   //println("... dirlist array:"); | ||||
|   //  printArray(dirlist); | ||||
|   //println("    from: "  + dir); | ||||
| 
 | ||||
|   //vidPool = new ArrayList<ArrayList>(); | ||||
| 
 | ||||
|   vidPool = new Movie[dirlist.length][100]; // create 2d array imgPool | ||||
| 
 | ||||
|   for (int i = 0; i < dirlist.length; i++) { | ||||
|     //println("here" + dirlist); | ||||
|     String fulldir = dataPath(sketchPath() + folder + dirlist[i]) + "/"; | ||||
|     File dir2 = new File(fulldir); | ||||
|     String[] filelist = dir2.list(); // an array of image names | ||||
|     filelist = sort(filelist); | ||||
|     println("\n~~~ VIDEO BANK no." + i + ": " + dirlist[i]); | ||||
|      | ||||
|     if (filelist.length != 0) { | ||||
|       vidPool[i] = (Movie[]) expand(vidPool[i], filelist.length); | ||||
|       //     geez: ^^^^^^^^^^ !!!!! | ||||
| 
 | ||||
|       for (int j = 0; j < filelist.length; j++) { | ||||
|         println("___ vidPool[" + i + "][" + j + "]: " + dirlist[i] + " " + filelist[j]); | ||||
|         vidPool[i][j] = new Movie(this, fulldir + filelist[j]); | ||||
|          | ||||
|         delay(40); | ||||
|       } | ||||
|       println(""); | ||||
|       delay(400); | ||||
|        | ||||
|     } else { | ||||
|       println("No files in this folder: " + fulldir); | ||||
|     }     | ||||
|   } | ||||
| 
 | ||||
|   println("\n~~~ Done loading videos.\n"); | ||||
| 
 | ||||
|   return vidPool; | ||||
|    | ||||
| 
 | ||||
| /* // in setup: | ||||
| 
 | ||||
| video = new GLMovie(this, "stuffloor2.mov"); | ||||
| video.loop(); | ||||
| 
 | ||||
| */ | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
|  | @ -0,0 +1,318 @@ | |||
| /* | ||||
| 	Copyright (c) 2016 Luka Prinčič, All rights reserved. | ||||
| 	This program is free software distributed under | ||||
| 	GNU General Public Licence. See COPYING for more info. | ||||
| 	- - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
| 
 | ||||
|   jitakami.pde | ||||
|      | ||||
|                                                                              */ | ||||
| 
 | ||||
| 
 | ||||
| // basic screen settings | ||||
| void settings() { | ||||
|   fullScreen(P3D, 2); | ||||
|   //size(1280, 720, P3D); | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| // load libs | ||||
| import oscP5.*; // Open Sound Control | ||||
| import netP5.*; | ||||
| import processing.video.*; | ||||
| //import gohai.glvideo.*; | ||||
| 
 | ||||
| // DECLARATIONS --------------- // | ||||
| 
 | ||||
| // OSC object | ||||
| OscP5 oscP5; | ||||
| 
 | ||||
| String oscVal1; | ||||
| float oscVal2; | ||||
| // temporary | ||||
| float ampColor; | ||||
| 
 | ||||
| 
 | ||||
| // image pool, a 2D array | ||||
| PImage[][] imgPool; | ||||
| 
 | ||||
| 
 | ||||
| // video pool, a 2D array | ||||
| Movie[][] vidPool; | ||||
| 
 | ||||
| 
 | ||||
| // screenClean | ||||
| float screenCleanHue, screenCleanSaturation, screenCleanBrightness, | ||||
|   screenCleanAlpha, screenCleanFlickrAmount, screenCleanFlickrSpeed; | ||||
| 
 | ||||
| 
 | ||||
| // drawFlylinesfly | ||||
| boolean drawFlylinesflyToggle = false; | ||||
| int drawFlylinesflyCurvesNumInit = 7000, // init  | ||||
|     drawFlylinesflyCurvesNum = 127, // dynamic | ||||
|     drawFlylinesflyPixBank = 0, drawFlylinesflyPixId = 1; | ||||
| float drawFlylinesflySpeed = 20, drawFlylinesflyDirection = 0, drawFlylinesSensitivity = 1, | ||||
|   drawFlylinesflyBrightDirection = 64, // 0-64-127 | ||||
|   drawFlylinesflyRotation = 0, drawFlylinesflyBrightRotation = 0; | ||||
| 
 | ||||
| int drawFlylinesHue = 0, drawFlylinesSatur = 0, drawFlylinesBright = 127, drawFlylinesAlpha = 27; | ||||
| float drawFlylinesBrightAlpha = 127; | ||||
| int drawFlylinesLineLength = 20; | ||||
| float drawFlylinesBrightLength = 0; | ||||
| int drawFlylinesStrokeWeight = 2; | ||||
| int drawFlylinesPixHue = 127, drawFlylinesPixSatur = 127, | ||||
|   drawFlylinesPixBright = 127, drawFlylinesPixAlpha = 10; | ||||
| float[] curveX = new float[drawFlylinesflyCurvesNumInit]; | ||||
| float[] curveY = new float[drawFlylinesflyCurvesNumInit]; | ||||
| 
 | ||||
| 
 | ||||
| // drawPlates | ||||
| boolean drawPlatesToggle = false; | ||||
| 
 | ||||
| int drawPlatesimgAbank = 0, drawPlatesimgAid = 9; | ||||
| int drawPlatesTexAspeed = 1, drawPlatesTexAdirection = 16; | ||||
| int drawPlatesimgATopLeft = 64, drawPlatesimgATopRight = 64, | ||||
|   	drawPlatesimgABotRight = 64, drawPlatesimgABotleft = 64; | ||||
| 
 | ||||
| int drawPlatesimgAalpha = 127, drawPlatesimgAhue = 0, drawPlatesimgAbright = 127; | ||||
| int drawPlatesimgBbank = 0, drawPlatesimgBid = 1; | ||||
| int drawPlatesTexBspeed = 1, drawPlatesTexBdirection = 0; | ||||
| int drawPlatesimgBTopLeft = 64, drawPlatesimgBTopRight = 64, | ||||
| 	  drawPlatesimgBBotRight = 64, drawPlatesimgBBotleft = 64; | ||||
| 
 | ||||
| int drawPlatesimgBalpha = 64, drawPlatesimgBhue = 64, drawPlatesimgBbright = 127; | ||||
| int drawPlatesimgCbank = 0, drawPlatesimgCid = 2;  | ||||
| int drawPlatesTexCspeed = 1, drawPlatesTexCdirection = 96; | ||||
| int drawPlatesimgCTopLeft = 64, drawPlatesimgCTopRight = 64, | ||||
| 	  drawPlatesimgCBotRight = 64, drawPlatesimgCBotleft = 64; | ||||
| 
 | ||||
| int drawPlatesimgCalpha = 64, drawPlatesimgChue = 0, drawPlatesimgCbright = 127; | ||||
| int drawPlatesimgBblendMode = 8, drawPlatesimgCblendMode = 8; | ||||
| 
 | ||||
| int drawPlatesSaturation = 0; | ||||
| int drawPlatesCoordError = 0; | ||||
| 
 | ||||
| 
 | ||||
| // tiles | ||||
| boolean drawTilesToggle = false; | ||||
| int drawTilesBgHue, drawTilesBgSat, drawTilesBgBri = 64, drawTilesHue, drawTilesSat, drawTilesBri = 64; | ||||
| int drawTilesHueDistance = 20, drawTilesBlendMode = 0; | ||||
| int drawTilesNumX = 3, drawTilesNumY = 3, drawTilesTexBank = 0, drawTilesTexId = 1; | ||||
| float drawTilesTexSpeedX = 10, drawTilesTexSpeedY = 10, drawTilesOverlap = 10; | ||||
| float texX = 0; // globals? | ||||
| float texY = 0; | ||||
| 
 | ||||
| 
 | ||||
| // image blender | ||||
| boolean drawImageBlenderToggle = false; | ||||
| int drawImageBlenderBank = 0, drawImageBlenderID = 2, iblNum = 1; | ||||
| float iblX = 0, iblY = 0, iblWidth = 600, iblHeight = 100; | ||||
| float iblRot; // radians need a float | ||||
| float iblSpeedX, iblSpeedY; | ||||
| float iblSpeedXfactor = 0, iblSpeedYfactor = 0; | ||||
| float[] iblTexXY = new float[2]; // global object for texture coordinates | ||||
| float iblTexWidth, iblTexHeight; | ||||
| float iblTexSpeedX, iblTexSpeedY; | ||||
| float iblTexSpeedXfactor, iblTexSpeedYfactor; | ||||
| int iblH, iblS = 0, iblB = 100, iblA = 255; // stroke color / tint | ||||
| int iblBflicker = 0; // flicker (Brightness) | ||||
| float iblItX = 0, iblItY = 0, iblItTexX = 0, iblItTexY = 0, iblItRot; | ||||
| 
 | ||||
| 
 | ||||
| // video player | ||||
| boolean playVideoToggle = false; | ||||
| boolean playVideoPausePlay = true; | ||||
| boolean playVideoLoop = false; | ||||
| int playVideoBank = 0, playVideoID = 0; | ||||
| int playVideoHue, playVideoSaturation, playVideoBrightness, | ||||
|   playVideoAlpha, playVideoJump; | ||||
| int playVideoSpeed; | ||||
| //float playVideoPosition = 0; | ||||
| 
 | ||||
| 
 | ||||
| // ? | ||||
| int flickCount = 2; // 2,3,4 or 5 | ||||
| 
 | ||||
| // generate an array of random numbers | ||||
| int[] rands = new int[500]; | ||||
| 
 | ||||
| // testPicture | ||||
| boolean testPictureToggle = false; | ||||
| PFont testFont; | ||||
| 
 | ||||
| // fps | ||||
| boolean displayFpsToggle = false; | ||||
| PFont fpsFont; | ||||
| 
 | ||||
| // regular snapshots / improve: snap when buttonPress(SC-GUI) | ||||
| boolean autoSnapToggle = false; | ||||
| 
 | ||||
| 
 | ||||
| /////////////////////////////////////////////////////////////////////////////// | ||||
| void setup() { // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
|    | ||||
|   // framerate | ||||
|   //frameRate(60); // looks like 60fps by default, see displayFps function | ||||
|   //smooth(32); | ||||
| 
 | ||||
|   noCursor(); | ||||
|   background(0); | ||||
|    | ||||
|   // setup open sound control | ||||
|   println("~~~ starting oscP5 ..."); | ||||
|   oscP5 = new OscP5(this,12000); // listening at port 12000 | ||||
|   //oscP5.plug(this,"hhosc","/highhat"); // osc from SuperCollider -> function 'scosc' | ||||
| 
 | ||||
|   // get all textures into an image pool | ||||
|   println("\n\n~~~ loading textures into image pool ...\n"); | ||||
|   imgPool = getImages("/images/"); | ||||
| 
 | ||||
|   // get all videos into an video pool | ||||
|   println("\n\n~~~ loading videos into videos pool ...\n"); | ||||
|   vidPool = getVideos("/videos/"); | ||||
| 
 | ||||
|   // create an array of random value between -250 and 250 | ||||
|   for (int i=0; i < 500; i++) { rands[i] = i-250; } | ||||
|   shuffle(rands);  | ||||
| 
 | ||||
|   // testPicture font | ||||
| 	testFont = createFont("Oliver's Barney", 50); | ||||
|    | ||||
|   // fps | ||||
|   fpsFont = createFont("Ubuntu Mono", 12); | ||||
| 
 | ||||
| 
 | ||||
|   println("~~~ setup() finished. now to the draw() ..."); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ////////////////////////////////////////////////////////////////////////////// | ||||
| void draw() { // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
| 
 | ||||
| 
 | ||||
|   // clean screen | ||||
|   blendMode(BLEND); | ||||
|   screenClean | ||||
|     ( screenCleanHue, | ||||
|       screenCleanSaturation, | ||||
|       screenCleanBrightness, | ||||
|       screenCleanAlpha, | ||||
|       screenCleanFlickrAmount, | ||||
|       screenCleanFlickrSpeed ); | ||||
|    | ||||
| 
 | ||||
|   drawFlylines | ||||
|     ( drawFlylinesflyToggle, | ||||
|       drawFlylinesflyCurvesNum, | ||||
|       drawFlylinesflyPixBank, drawFlylinesflyPixId, | ||||
|       drawFlylinesflySpeed, drawFlylinesflyDirection, drawFlylinesSensitivity, | ||||
|       drawFlylinesflyBrightDirection, | ||||
|       drawFlylinesflyRotation, drawFlylinesflyBrightRotation, | ||||
|       drawFlylinesHue, drawFlylinesSatur, drawFlylinesBright, | ||||
|       drawFlylinesAlpha, drawFlylinesBrightAlpha, | ||||
|       drawFlylinesLineLength, drawFlylinesBrightLength, drawFlylinesStrokeWeight, | ||||
|       drawFlylinesPixHue, drawFlylinesPixSatur, drawFlylinesPixBright, drawFlylinesPixAlpha ); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   drawPlates | ||||
|     ( drawPlatesToggle, | ||||
|       drawPlatesimgAbank, drawPlatesimgAid, | ||||
|       drawPlatesTexAspeed, drawPlatesTexAdirection, | ||||
|       drawPlatesimgATopLeft, drawPlatesimgATopRight, | ||||
|       drawPlatesimgABotRight, drawPlatesimgABotleft, | ||||
|       drawPlatesimgAalpha, drawPlatesimgAhue, drawPlatesimgAbright, | ||||
| 
 | ||||
|       drawPlatesimgBbank, drawPlatesimgBid, | ||||
|       drawPlatesTexBspeed, drawPlatesTexBdirection, | ||||
|       drawPlatesimgBTopLeft, drawPlatesimgBTopRight, | ||||
|       drawPlatesimgBBotRight, drawPlatesimgBBotleft, | ||||
|       drawPlatesimgBalpha, drawPlatesimgBhue, drawPlatesimgBbright, | ||||
| 
 | ||||
|       drawPlatesimgCbank, drawPlatesimgCid, | ||||
|       drawPlatesTexCspeed, drawPlatesTexCdirection, | ||||
|       drawPlatesimgCTopLeft, drawPlatesimgCTopRight, | ||||
|       drawPlatesimgCBotRight, drawPlatesimgCBotleft, | ||||
|       drawPlatesimgCalpha, drawPlatesimgChue, drawPlatesimgCbright, | ||||
| 
 | ||||
|       drawPlatesimgBblendMode, drawPlatesimgCblendMode,  | ||||
|       drawPlatesSaturation, | ||||
|       drawPlatesCoordError // 0-127 | ||||
|       ); | ||||
| 
 | ||||
| 
 | ||||
|   drawTiles | ||||
|     ( drawTilesToggle, | ||||
|       drawTilesBgHue, drawTilesBgSat, drawTilesBgBri, drawTilesHue, drawTilesSat, drawTilesBri, | ||||
|       drawTilesHueDistance,                 // tile hue distance | ||||
|       drawTilesBlendMode, // blendMode | ||||
|       drawTilesNumX,                // number of drawTiles on X axis | ||||
|       drawTilesNumY, // number of drawTiles on Y axis | ||||
|       drawTilesTexBank,  // texture bank number | ||||
|       drawTilesTexId,  // texture number/id | ||||
|       drawTilesTexSpeedX, // texture speed X | ||||
|       drawTilesTexSpeedY, // texture speed Y | ||||
|       drawTilesOverlap // overlap. 127 = 300% | ||||
|       ); | ||||
| 
 | ||||
| 
 | ||||
|   drawImageBlender | ||||
|     ( drawImageBlenderToggle, | ||||
|       drawImageBlenderBank, drawImageBlenderID, | ||||
|       //     iblImg1, | ||||
|       iblNum, | ||||
|       iblX,  iblY,  iblWidth,  iblHeight, | ||||
|       iblRot, | ||||
|       iblSpeedX,  iblSpeedY, | ||||
|       iblSpeedXfactor,  iblSpeedYfactor, | ||||
|       iblTexWidth,  iblTexHeight, | ||||
|       iblTexSpeedX,  iblTexSpeedY, | ||||
|       iblTexSpeedXfactor,  iblTexSpeedYfactor, | ||||
|       iblH,  iblS,  iblB,  iblA, | ||||
|       iblBflicker, | ||||
|       iblItX,  iblItY, | ||||
|       iblItTexX,  iblItTexY,  iblItRot | ||||
|       ); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   playVideo | ||||
|     ( playVideoToggle, | ||||
|       playVideoPausePlay, | ||||
|       playVideoLoop, | ||||
|       playVideoBank, playVideoID, | ||||
|       playVideoHue, playVideoSaturation, | ||||
|       playVideoBrightness, playVideoAlpha, playVideoJump, playVideoSpeed | ||||
|       //playVideoPosition | ||||
|       ); | ||||
| 
 | ||||
|   if(playVideoJump != 1000) { | ||||
|     playVideoJump = 1000; | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   // draw test picture | ||||
|   testPicture(testPictureToggle); | ||||
| 
 | ||||
|   // frames per second | ||||
|   displayFps(displayFpsToggle); | ||||
| 
 | ||||
|   // document | ||||
|   autoSnap(autoSnapToggle); | ||||
|    | ||||
|   | ||||
| 
 | ||||
| } /////////////////////////////////////////////////////////////////////////// | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| //void mousePressed() { | ||||
| //  vidPool[0][0].jump(map(mouseX, 0, width, 0, vidPool[0][0].duration())); | ||||
| //} | ||||
|  | @ -0,0 +1,224 @@ | |||
| /* | ||||
| 	This file is part of "Interface Fractures IV - Q". | ||||
| 	Copyright (c) 2016 Luka Prinčič, All rights reserved. | ||||
| 	This program is free software distributed under | ||||
| 	GNU General Public Licence. See COPYING for more info. | ||||
| 	- - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
|   oscEvent.pde - processes incoming osc messages | ||||
|                                                                              */ | ||||
| 
 | ||||
| void oscEvent(OscMessage theOscMessage) { | ||||
| 
 | ||||
|   if(theOscMessage.checkTypetag("si")) { | ||||
|     oscVal1 = theOscMessage.get(0).stringValue(); | ||||
|     oscVal2 = float(theOscMessage.get(1).intValue()); | ||||
|   } | ||||
|   if(theOscMessage.checkTypetag("sf")) { | ||||
|     oscVal1 = theOscMessage.get(0).stringValue(); | ||||
|     oscVal2 = theOscMessage.get(1).floatValue(); | ||||
|   } | ||||
|   if(theOscMessage.checkTypetag("ii")) { | ||||
|     oscVal1 = str(theOscMessage.get(0).intValue()); | ||||
|     oscVal2 = theOscMessage.get(1).intValue(); | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
|   /* | ||||
|   // direct translation? | ||||
|   // SuperCollider direct osc paths | ||||
|   if(theOscMessage.checkAddrPattern("/var")==true) { | ||||
|     //(oscVal1[]) = oscVal2; | ||||
|   } | ||||
| 
 | ||||
|    | ||||
|   // SuperCollider direct osc paths | ||||
|   if(theOscMessage.checkAddrPattern("/highhat")==true) { | ||||
| 
 | ||||
|     if(oscVal1.equals( "amp")) { ampColor = oscVal2; println("amp:"+oscVal2); } | ||||
| 
 | ||||
|   } | ||||
|   */ | ||||
| 
 | ||||
|    | ||||
|   // OSC patchbay | ||||
| 
 | ||||
|   // /ctlin - Renoise-midi > SuperCollider-OSC | ||||
|   if(theOscMessage.checkAddrPattern("/ctlin")==true) { | ||||
| 
 | ||||
| 
 | ||||
|     // screenClean | ||||
|     if(oscVal1.equals( "/screenCleanHue" )) {  screenCleanHue = oscVal2 ; } | ||||
|     if(oscVal1.equals( "/screenCleanSaturation" )) {  screenCleanSaturation = oscVal2 ; } | ||||
|     if(oscVal1.equals( "/screenCleanBrightness" )) {  screenCleanBrightness = oscVal2 ; } | ||||
|     if(oscVal1.equals( "/screenCleanAlpha" )) {  screenCleanAlpha = oscVal2 ; } | ||||
|     if(oscVal1.equals( "/screenCleanFlickrAmount" )) {  screenCleanFlickrAmount = oscVal2 ; } | ||||
|     if(oscVal1.equals( "/screenCleanFlickrSpeed" )) {  screenCleanFlickrSpeed = oscVal2 ; } | ||||
|      | ||||
| 
 | ||||
|     // drawFlylines | ||||
|     if(oscVal1.equals( "/drawFlylinesflyToggle" )) {  drawFlylinesflyToggle  = boolean(int(oscVal2)) ;  } | ||||
|     if(oscVal1.equals( "/drawFlylinesflyCurvesNum" )) {  drawFlylinesflyCurvesNum  = int(map(oscVal2, 0, 127, 0, 7000)); } | ||||
|     if(oscVal1.equals( "/drawFlylinesflyPixBank" )) {  drawFlylinesflyPixBank = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawFlylinesflyPixId" )) {  drawFlylinesflyPixId = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawFlylinesflySpeed" )) {  drawFlylinesflySpeed = oscVal2 ; } | ||||
|     if(oscVal1.equals( "/drawFlylinesflyDirection" )) {  drawFlylinesflyDirection = oscVal2 ; } | ||||
|     if(oscVal1.equals( "/drawFlylinesSensitivity" )) {  drawFlylinesSensitivity = map(oscVal2, 0, 127, 0, 1) ; } | ||||
|     if(oscVal1.equals( "/drawFlylinesflyBrightDirection" )) {  drawFlylinesflyBrightDirection  = oscVal2 ; } | ||||
|     if(oscVal1.equals( "/drawFlylinesflyRotation" )) {  drawFlylinesflyRotation = oscVal2 ; } | ||||
|     if(oscVal1.equals( "/drawFlylinesflyBrightRotation" )) {  drawFlylinesflyBrightRotation = oscVal2 ; } | ||||
|     if(oscVal1.equals( "/drawFlylinesHue" )) {  drawFlylinesHue = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawFlylinesSatur" )) {  drawFlylinesSatur = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawFlylinesBright" )) {  drawFlylinesBright  = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawFlylinesAlpha" )) {  drawFlylinesAlpha = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawFlylinesBrightAlpha" )) {  drawFlylinesBrightAlpha = oscVal2 ; } | ||||
|     if(oscVal1.equals( "/drawFlylinesLineLength" )) {  drawFlylinesLineLength = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawFlylinesBrightLength" )) {  drawFlylinesBrightLength = map(oscVal2, 0, 127, 0, 1) ; } | ||||
|     if(oscVal1.equals( "/drawFlylinesStrokeWeight" )) {  drawFlylinesStrokeWeight = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawFlylinesPixHue" )) {  drawFlylinesPixHue = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawFlylinesPixSatur" )) {  drawFlylinesPixSatur = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawFlylinesPixBright" )) {  drawFlylinesPixBright = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawFlylinesPixAlpha" )) {  drawFlylinesPixAlpha = int(oscVal2) ; } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     // drawPlates | ||||
|     if(oscVal1.equals( "/drawPlatesToggle" )) {  drawPlatesToggle = boolean(int(oscVal2)) ; } | ||||
| 
 | ||||
|     if(oscVal1.equals( "/drawPlatesimgAbank" )) {  drawPlatesimgAbank = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesimgAid" )) {  drawPlatesimgAid = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesTexAspeed" )) {  drawPlatesTexAspeed = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesTexAdirection" )) {  drawPlatesTexAdirection = int(oscVal2) ; } | ||||
| 
 | ||||
|     if(oscVal1.equals( "/drawPlatesimgATopLeft" )) {  drawPlatesimgATopLeft = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesimgATopRight" )) {  drawPlatesimgATopRight = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesimgABotRight" )) {  drawPlatesimgABotRight = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesimgABotleft" )) {  drawPlatesimgABotleft = int(oscVal2) ; } | ||||
| 
 | ||||
|     if(oscVal1.equals( "/drawPlatesimgAalpha" )) {  drawPlatesimgAalpha = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesimgAhue" )) {  drawPlatesimgAhue = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesimgAbright" )) {  drawPlatesimgAbright = int(oscVal2) ; } | ||||
| 
 | ||||
|     if(oscVal1.equals( "/drawPlatesimgBbank" )) {  drawPlatesimgBbank = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesimgBid" )) {  drawPlatesimgBid = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesTexBspeed" )) {  drawPlatesTexBspeed = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesTexBdirection" )) {  drawPlatesTexBdirection = int(oscVal2) ; } | ||||
| 
 | ||||
|     if(oscVal1.equals( "/drawPlatesimgBTopLeft" )) {  drawPlatesimgBTopLeft = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesimgBTopRight" )) {  drawPlatesimgBTopRight = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesimgBBotRight" )) {  drawPlatesimgBBotRight = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesimgBBotleft" )) {  drawPlatesimgBBotleft = int(oscVal2) ; } | ||||
| 
 | ||||
|     if(oscVal1.equals( "/drawPlatesimgBalpha" )) {  drawPlatesimgBalpha = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesimgBhue" )) {  drawPlatesimgBhue = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesimgBbright" )) {  drawPlatesimgBbright = int(oscVal2) ; } | ||||
| 
 | ||||
|     if(oscVal1.equals( "/drawPlatesimgCbank" )) {  drawPlatesimgCbank = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesimgCid" )) {  drawPlatesimgCid = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesTexCspeed" )) {  drawPlatesTexCspeed = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesTexCdirection" )) {  drawPlatesTexCdirection = int(oscVal2) ; } | ||||
| 
 | ||||
|     if(oscVal1.equals( "/drawPlatesimgCTopLeft" )) {  drawPlatesimgCTopLeft = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesimgCTopRight" )) {  drawPlatesimgCTopRight = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesimgCBotRight" )) {  drawPlatesimgCBotRight = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesimgCBotleft" )) {  drawPlatesimgCBotleft = int(oscVal2) ; } | ||||
| 
 | ||||
|     if(oscVal1.equals( "/drawPlatesimgCalpha" )) {  drawPlatesimgCalpha = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesimgChue" )) {  drawPlatesimgChue = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesimgCbright" )) {  drawPlatesimgCbright = int(oscVal2) ; } | ||||
| 
 | ||||
|     if(oscVal1.equals( "/drawPlatesimgBblendMode" )) {  drawPlatesimgBblendMode = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesimgCblendMode" )) {  drawPlatesimgCblendMode = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesSaturation" )) {  drawPlatesSaturation = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawPlatesCoordError" )) {  drawPlatesCoordError = int(oscVal2) ; }  // 0-127 | ||||
| 
 | ||||
| 
 | ||||
|     // drawTiles | ||||
|     if(oscVal1.equals( "/drawTilesToggle" )) {  drawTilesToggle = boolean(int(oscVal2)) ; } | ||||
| 
 | ||||
|     if(oscVal1.equals( "/drawTilesBgHue" )) {  drawTilesBgHue = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawTilesBgSat" )) {  drawTilesBgSat = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawTilesBgBri" )) {  drawTilesBgBri = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawTilesHue" )) {  drawTilesHue = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawTilesSat" )) {  drawTilesSat = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawTilesBri" )) {  drawTilesBri = int(oscVal2) ; } | ||||
| 
 | ||||
|     if(oscVal1.equals( "/drawTilesHueDistance" )) {  drawTilesHueDistance = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawTilesBlendMode" )) {  drawTilesBlendMode = int(oscVal2) ; } | ||||
| 
 | ||||
|     if(oscVal1.equals( "/drawTilesNumX" )) {  drawTilesNumX = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawTilesNumY" )) {  drawTilesNumY = int(oscVal2) ; } | ||||
| 
 | ||||
|     if(oscVal1.equals( "/drawTilesTexBank" )) {  drawTilesTexBank = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawTilesTexId" )) {  drawTilesTexId = int(oscVal2) ; } | ||||
|     if(oscVal1.equals( "/drawTilesTexSpeedX" )) {  drawTilesTexSpeedX = oscVal2 ; } | ||||
|     if(oscVal1.equals( "/drawTilesTexSpeedY" )) {  drawTilesTexSpeedY = oscVal2 ; } | ||||
|     if(oscVal1.equals( "/drawTilesOverlap" )) {  drawTilesOverlap = oscVal2 ; } | ||||
| 
 | ||||
| 
 | ||||
|     // drawImageBlender | ||||
|     if(oscVal1.equals( "/drawImageBlenderToggle" )) { drawImageBlenderToggle = boolean(int(oscVal2)) ; } // 130-127 = 3 @ chan2 | ||||
| 
 | ||||
|     if(oscVal1.equals( "/drawImageBlenderBank" )) { drawImageBlenderBank = int(oscVal2) ; } // 131-127 = 4 | ||||
|     if(oscVal1.equals( "/drawImageBlenderID" )) { drawImageBlenderID = int(oscVal2) ; } //5 | ||||
| 
 | ||||
|     if(oscVal1.equals( "/iblNum" )) { iblNum = int(oscVal2) ; } // 6 | ||||
|     if(oscVal1.equals( "/iblX" )) { iblX = ((oscVal2-64) / 64.0) * width/2 ; } // 7  int( ((oscVal2-64) / 64.0) * width/2 ); } | ||||
|     if(oscVal1.equals( "/iblY" )) { iblY = ((oscVal2-64) / 64.0) * width/2 ; } // 8 | ||||
|     if(oscVal1.equals( "/iblWidth" )) { iblWidth = oscVal2 * oscVal2 * 0.2 * norm(width, 0, width) ; } // 9  int(oscVal2 * oscVal2 * 0.05 * norm(width, 0, width)); | ||||
|     if(oscVal1.equals( "/iblHeight" )) { iblHeight = oscVal2 * oscVal2 * 0.1 * norm(height, 0, height) ; } // 10 | ||||
| 
 | ||||
|     if(oscVal1.equals( "/iblRot" )) { iblRot =  radians(oscVal2 * 360 / 120) ; } // 11 | ||||
|     //if(oscVal1.equals( "139" )) { iblSpeedX = oscVal2 ; } // 12 | ||||
|     //if(oscVal1.equals( "140" )) { iblSpeedY = oscVal2 ; } // 13 | ||||
|     //if(oscVal1.equals( "141" )) { iblSpeedXfactor = ((oscVal2-64) * abs(oscVal2-64) * 0.6) ; } // 14 | ||||
|     //if(oscVal1.equals( "142" )) { iblSpeedYfactor = ((oscVal2-64) * abs(oscVal2-64) * 0.6) ; } // 15 | ||||
| 
 | ||||
|     //if(oscVal1.equals( "143" )) { iblTexX =  ((oscVal2 - 64) / 64.0) * width / 2 ; } // 16 | ||||
|     //if(oscVal1.equals( "144" )) { iblTexY =  ((oscVal2 - 64) / 64.0) * height / 2 ; } // 17 | ||||
|     if(oscVal1.equals( "/iblTexWidth" )) { iblTexWidth = (oscVal2 - 64) * oscVal2 ; } // 18 | ||||
|     if(oscVal1.equals( "/iblTexHeight" )) { iblTexHeight = (oscVal2 - 64) * oscVal2 ; } // 19 | ||||
| 
 | ||||
|     //if(oscVal1.equals( "147" )) { iblTexSpeedX = oscVal2 ; } // 20 | ||||
|     //if(oscVal1.equals( "148" )) { iblTexSpeedY = oscVal2 ; } // 21 | ||||
|     if(oscVal1.equals( "/iblTexSpeedXfactor" )) { iblTexSpeedXfactor = ((oscVal2-64) * abs(oscVal2-64) * 0.6) ; } // 22 | ||||
|     if(oscVal1.equals( "/iblTexSpeedYfactor" )) { iblTexSpeedYfactor = ((oscVal2-64) * abs(oscVal2-64) * 0.6) ; } // 23 | ||||
| 
 | ||||
|     if(oscVal1.equals( "/iblH" )) { iblH = int(oscVal2) ; } // 24 | ||||
|     if(oscVal1.equals( "/iblS" )) { iblS = int(oscVal2) ; } // 25 | ||||
|     if(oscVal1.equals( "/iblB" )) { iblB = int(oscVal2) ; } // 26 | ||||
|     if(oscVal1.equals( "/iblA" )) { iblA = int(oscVal2) ; } // 27 | ||||
|     if(oscVal1.equals( "/iblBflicker" )) { iblBflicker = int(oscVal2) ; } // 28 | ||||
| 
 | ||||
|     if(oscVal1.equals( "/iblItX" )) { iblItX = ((oscVal2-64) * abs(oscVal2-64) * 0.1) ; } // 29 | ||||
|     if(oscVal1.equals( "/iblItY" )) { iblItY = ((oscVal2-64) * abs(oscVal2-64) * 0.1) ; } // 30 | ||||
|     if(oscVal1.equals( "/iblItTexX" )) { iblItTexX = oscVal2 * 4 ; } // 31 | ||||
|     if(oscVal1.equals( "/iblItTexY" )) { iblItTexY = oscVal2 * 4; } // 32 | ||||
|     if(oscVal1.equals( "/iblItRot" )) { iblItRot = radians(oscVal2) ; } // 33 | ||||
| 
 | ||||
| 
 | ||||
|     // playVideo     | ||||
|     if(oscVal1.equals( "/playVideoToggle" )) {  playVideoToggle = boolean(int(oscVal2)); } | ||||
|     if(oscVal1.equals( "/playVideoBank" )) {  playVideoBank = int(oscVal2); } | ||||
|     if(oscVal1.equals( "/playVideoID" )) {  playVideoID = int(oscVal2); } | ||||
|     if(oscVal1.equals( "/playVideoJump" )) {  playVideoJump = int(oscVal2); } | ||||
|     if(oscVal1.equals( "/playVideoPausePlay" )) {  playVideoPausePlay = boolean(int(oscVal2)); } | ||||
|     if(oscVal1.equals( "/playVideoLoop" )) {  playVideoPausePlay = boolean(int(oscVal2)); } | ||||
|     if(oscVal1.equals( "/playVideoHue" )) {  playVideoHue = int(oscVal2); } | ||||
|     if(oscVal1.equals( "/playVideoSaturation" )) {  playVideoSaturation = int(oscVal2); } | ||||
|     if(oscVal1.equals( "/playVideoBrightness" )) {  playVideoBrightness = int(oscVal2); } | ||||
|     if(oscVal1.equals( "/playVideoAlpha" )) {  playVideoAlpha = int(oscVal2); } // | ||||
|     if(oscVal1.equals( "/playVideoSpeed" )) {  playVideoSpeed = int(oscVal2); } // | ||||
| 
 | ||||
|     // test picture | ||||
|     if(oscVal1.equals( "/testPictureToggle" )) {  testPictureToggle = boolean(int(oscVal2)); } | ||||
|   } | ||||
| 
 | ||||
|   // debug: | ||||
|   print("### OSC | typetag: " + theOscMessage.typetag() + " " + theOscMessage.addrPattern()); | ||||
|   println(" " + oscVal1 + " " + oscVal2);  | ||||
| 
 | ||||
|     return; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | @ -0,0 +1,85 @@ | |||
| /* | ||||
| 
 | ||||
| 	This file is part of "Interface Fractures III - Silicon". | ||||
| 	Copyright (c) 2015 Luka Prinčič, All rights reserved. | ||||
| 	This program is free software distributed under | ||||
| 	GNU General Public Licence. See COPYING for more info. | ||||
| 	- - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
| 
 | ||||
|   playVideo.pde | ||||
|      | ||||
|                                                                              */ | ||||
| 
 | ||||
| void playVideo( boolean render, // should we render or not? | ||||
|                 boolean pausePlay, boolean loop, | ||||
|                 int bank, int id, | ||||
|                 int hue, int saturation, int brightness, int alpha, int jump, int speed | ||||
|                 ) | ||||
| { | ||||
|   if (render) { | ||||
| 
 | ||||
|     // protect boundaries of vidPool array | ||||
|     bank = min(bank, vidPool.length - 1); | ||||
|     id = min(id, vidPool[bank].length - 1); | ||||
| 
 | ||||
|     // play/pause/loop | ||||
|     if(pausePlay == true) { | ||||
|         vidPool[bank][id].speed(float(speed) / 100); | ||||
|         //println("speed: " + speed + " " + (float(speed) /  100)); | ||||
|         if (loop == true) { | ||||
|             vidPool[bank][id].loop(); | ||||
|         } else { | ||||
|             vidPool[bank][id].play(); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     if(pausePlay == false) { | ||||
|         vidPool[bank][id].pause(); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     if (jump != 1000) { | ||||
|         println("jump: " + jump); | ||||
|         vidPool[bank][id].jump(vidPool[bank][id].duration() * (float(jump) / 100)); | ||||
|         //vidPool[bank][id].read(); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     if (vidPool[bank][id].available()) { | ||||
|         vidPool[bank][id].read(); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     // use/display/texture | ||||
|     textureMode(NORMAL); | ||||
|     colorMode(HSB, 127); | ||||
|      | ||||
|     beginShape(); | ||||
|     tint(hue, saturation, brightness, alpha); | ||||
|     texture(vidPool[bank][id]); | ||||
|     vertex(-3, -3, 1, 1); | ||||
|     vertex(width+3, -3, 0, 1); | ||||
|     vertex(width+3, height+3, 0, 0); | ||||
|     vertex(-3, height+3, 1, 0); | ||||
|     endShape(); | ||||
| 
 | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| void jumpVideo(float position, int bank, int id) { | ||||
| 
 | ||||
|     // protect boundaries of vidPool array | ||||
|     bank = min(bank, vidPool.length - 1); | ||||
|     id = min(id, vidPool[bank].length - 1); | ||||
| 
 | ||||
|     // jump to position in the video maped from 0-127 | ||||
|     vidPool[bank][id].jump(map(position, 0, 127, 0, vidPool[bank][id].duration())); | ||||
|     //vidPool[bank][id].read(); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | @ -0,0 +1,48 @@ | |||
| /* | ||||
| 	This file is part of "Interface Fractures IV - Q". | ||||
| 	Copyright (c) 2016 Luka Prinčič, All rights reserved. | ||||
| 	This program is free software distributed under | ||||
| 	GNU General Public Licence. See COPYING for more info. | ||||
| 	- - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
| 
 | ||||
|   screenClean.pde | ||||
|      | ||||
|                                                                              */ | ||||
| 
 | ||||
| 
 | ||||
| // if screenClean is supposed to "clean" the screen | ||||
| // alpha should always be to the max | ||||
| 
 | ||||
| void screenClean( float hue, | ||||
|                   float saturation, | ||||
|                   float brightness, | ||||
|                   float alpha, | ||||
|                   float flickrAmount, | ||||
|                   float flickrSpeed ) | ||||
| { | ||||
|   /* | ||||
|     hue = map(hue, 0, 127, 0, 255); | ||||
|     saturation = map(saturation, 0, 127, 0, 255); | ||||
|     brightness = map(brightness, 0, 127, 0, 255); | ||||
|     alpha = map(alpha, 0, 127, 0, 255); | ||||
|   */ | ||||
| 
 | ||||
|   flickrAmount = map(flickrAmount, 0, 127, 0, 1); | ||||
|   flickrSpeed = map(flickrSpeed, 0, 127, 1, 120); | ||||
| 
 | ||||
|   if ((frameCount % int(flickrSpeed)) == 0) { | ||||
|     brightness = brightness * flickrAmount; | ||||
|   } | ||||
| 
 | ||||
|   //println(frameCount + " " + flickrSpeed + " " + (frameCount % flickrSpeed));  | ||||
|    | ||||
|   colorMode(HSB, 127); | ||||
|   color c = color(hue, saturation, brightness, alpha); | ||||
| 
 | ||||
|   fill(c); | ||||
|   noStroke(); | ||||
|   rectMode(CORNER); | ||||
|   // rect(0, 0, width * 2, height); | ||||
|   rect(0, 0, width, height); | ||||
| 
 | ||||
| } | ||||
|  | @ -0,0 +1,13 @@ | |||
| // function to shuffle an array of integers | ||||
| void shuffle(int[] a) | ||||
| {   | ||||
|   int temp, pick; | ||||
|   | ||||
|    for(int i=0; i<a.length; i++) | ||||
|    { | ||||
|      temp = a[i]; | ||||
|      pick = (int)random(a.length); | ||||
|      a[i] = a[pick]; | ||||
|      a[pick] = temp; | ||||
|    } | ||||
| }  | ||||
|  | @ -0,0 +1,47 @@ | |||
| /* | ||||
| 
 | ||||
| 	This file is part of "Interface Fractures III - Silicon". | ||||
| 	Copyright (c) 2015 Luka Prinčič, All rights reserved. | ||||
| 	This program is free software distributed under | ||||
| 	GNU General Public Licence. See COPYING for more info. | ||||
| 	- - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
| 
 | ||||
|   switchBlendMode.pde | ||||
|                                                                              */ | ||||
| 
 | ||||
| void switchBlendMode(int blendMode)  | ||||
| { | ||||
|   switch(blendMode) { | ||||
|   case 0: | ||||
|     blendMode(ADD); // additive blending with white clip: C = min(A*factor + B, 255) | ||||
|     break; | ||||
|   case 1: | ||||
|     blendMode(SUBTRACT); // subtractive blend w/ black clip: C = max(B - A*factor, 0) | ||||
|     break; | ||||
|   case 2: | ||||
|     blendMode(LIGHTEST); // only the lightest colour succeeds: C = max(A*factor, B) | ||||
|     break; | ||||
|   case 3: | ||||
|     blendMode(DARKEST); // only the darkest colour succeeds: C = min(A*factor, B)     | ||||
|     break; | ||||
|   case 4: | ||||
|     blendMode(SCREEN); // opposite multiply, uses inverse values of the colors. | ||||
|     break; | ||||
|   case 5: | ||||
|     blendMode(MULTIPLY); // multiply the colors, result will always be darker. | ||||
|     break; | ||||
|   case 6: | ||||
|     blendMode(EXCLUSION); // similar to DIFFERENCE, but less extreme. | ||||
|     break; | ||||
|   case 7: | ||||
|     blendMode(REPLACE); // pixels entirely replace others + don't utilize alpha values | ||||
|     break; | ||||
|   case 8: | ||||
|     blendMode(BLEND); // pixels entirely replace others + don't utilize alpha values | ||||
|     break; | ||||
|   default: | ||||
|     blendMode(BLEND); // linear interp. of colours: C = A*factor + B. Default. | ||||
|     break; | ||||
|   } // DIFFERENCE: subtract colors from underlying image. NOT SUPPORTED BY P3D!!  */ | ||||
| } | ||||
| 
 | ||||
|  | @ -0,0 +1,57 @@ | |||
| /* | ||||
| 
 | ||||
| 	This file is part of "Interface Fractures III - Silicon". | ||||
| 	Copyright (c) 2015 Luka Prinčič, All rights reserved. | ||||
| 	This program is free software distributed under | ||||
| 	GNU General Public Licence. See COPYING for more info. | ||||
| 	- - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
| 
 | ||||
|   testPicture.pde | ||||
|                                                                              */ | ||||
| 
 | ||||
| 
 | ||||
| void testPicture(boolean render) { | ||||
|   if (render) { | ||||
| 
 | ||||
|     blendMode(BLEND); | ||||
|     colorMode(RGB, 255); | ||||
|     fill(127); | ||||
|     stroke(255); | ||||
|     strokeWeight(4); | ||||
| 
 | ||||
|     rectMode(CORNER); | ||||
|     rect(1, 1, width-2, height-2); | ||||
| 
 | ||||
|     ellipse(width/2, height/2, height-4, height-4); | ||||
| 
 | ||||
|     ellipse(height/4, height/4, height/2-4, height/2-4); | ||||
|     ellipse(height/4, 3*height/4, height/2-4, height/2-4); | ||||
|     ellipse(width-height/4, height/4, height/2-4, height/2-4); | ||||
|     ellipse(width-height/4, 3*height/4, height/2-4, height/2-4); | ||||
| 
 | ||||
|     line(width/2, 0, width/2, height); | ||||
|     line(0, height/2, width, height/2); | ||||
| 
 | ||||
|     fill(255); | ||||
|     rectMode(CENTER); | ||||
|     rect(width/2, height/2, width/2, height/6); | ||||
| 
 | ||||
|     fill(0); | ||||
|     textFont(testFont); | ||||
|     textSize(50); | ||||
|     textAlign(CENTER,CENTER); | ||||
| 
 | ||||
|     text("trans.fail/jitakami", width/2, height/2,4); | ||||
| 
 | ||||
|     /* more tests: | ||||
| 
 | ||||
|        - horizontal and vertical block, moving fast! | ||||
|        - flicker test, black&white, 60Hz | ||||
|        - color and gray stripes of interpolation | ||||
| 
 | ||||
| 
 | ||||
|      */ | ||||
| 
 | ||||
|   } | ||||
| } | ||||
| 
 | ||||
		Loading…
	
		Reference in New Issue