IF3Si/pde/IF3Si/IF3Si.pde

275 lines
7.0 KiB
Plaintext

/*
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.
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
IF3Si.pde
*/
// undecorate window (remove window borders etc) - - - - - - - - - - - - - - -
public void init() { frame.removeNotify(); frame.setUndecorated(true);
frame.addNotify(); super.init(); }
// load libs
import oscP5.*; // Open Sound Control
import netP5.*;
// declarations - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// declare OSC object
OscP5 oscP5;
// IMAGE POOL, a 2D array
PImage[][] imgPool;
// texture (tiles)
float texX = 0;
float texY = 0;
// generate an array of random numbers
int[] rands = new int[500];
IntList randz; // arrayList
// for draw cube
int cubesnum = 20;
PGraphics[] cubes = new PGraphics[cubesnum];
PShader blur;
PGraphics bpass1, bpass2;
// spheres
int ptsW, ptsH;
int numPointsW;
int numPointsH_2pi;
int numPointsH;
float[] coorX;
float[] coorY;
float[] coorZ;
float[] multXZ;
PGraphics sphere;
// tiles
boolean drawTilesToggle;
int tilesBgHue, tilesBgSat, tilesBgBri, tilesHue, tilesSat, tilesBri;
int tilesNumX, tilesNumY, tilesTexBank, tilesTexId;
float tilesTexSpeedX, tilesTexSpeedY, tilesOverlap;
// testPicture
boolean testPictureToggle = false;
PFont testFont;
// testPattern
boolean testPatternToggle = false;
int testPatternTexBank, testPatternTexId, testPatternTexAlpha;
// fps
PFont fpsFont;
// siLines
ArrayList<FloatList> siLinesData;
// screenClean
float screenCleanHue, screenCleanSaturation, screenCleanBrightness,
screenCleanAlpha, screenCleanFlickrAmount, screenCleanFlickrSpeed;
// drawSpectrum
boolean drawSpectrumToggle;
float drawSpectrumAFactor;
int drawSpectrumThreshold;
int drawSpectrumHeight;
int drawSpectrumWidth;
float drawSpectrumAwidth;
float drawSpectrumSaturation;
///////////////////////////////////////////////////////////////////////////////
void setup() { // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
float sizefactor = 1; // define the size of the screen, 1 = 1080p
size( int( 1920 * sizefactor ),
int( 1080 * sizefactor ),
P3D ); // renderer
// framerate
frameRate(60);
smooth(32); // 32??
noCursor();
background(0);
println("\n\n~~~ Hello. Starting Interface Fractures III - SILICON." +
" - - - - - - - - - - - - - - - - - - - - - -\n");
// open sound control
oscP5 = new OscP5(this,12000); // listening at port 12000
println("~~~ starting oscP5 ...");
oscP5.plug(this,"ctlin","/ctlin"); // osc from Renoise/Midi (via SC) -> function 'ctlin'
oscP5.plug(this,"scosc","/sc"); // osc from SuperCollider -> function 'scosc'
// get all textures into an image pool
println("\n\n~~~ loading textures into image pool ...\n");
imgPool = getImages("/images/");
// ----------------------------------------------------------------------
println("~~~ getting and processing lines data ...");
//siLinesData = new ArrayList<FloatList>();
siLinesData = getLinesData(); // function, returns an ArrayList
//printArray(siLinesData);
// ----------------------------------------------------------------------
// create an array of random value between -50 and 50
for (int i=0; i < 500; i++) { rands[i] = i-250; }
shuffle(rands);
// drawCube ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `
// an array of PGraphics
for (int i = 0; i < cubesnum; i++) {
cubes[i] = createGraphics(width, height, P3D);
}
blur = loadShader("blur.glsl");
bpass1 = createGraphics(width, height, P3D);
bpass1.smooth();
bpass2 = createGraphics(width, height, P3D);
bpass2.smooth();
randz = new IntList(width);
for (int i=0; i < width; i++) {
randz.set(i, i);
}
randz.shuffle();
//println(randz);
// spheres
ptsW=30;
ptsH=30;
initializeSphere(ptsW, ptsH); // number of vertices around the width and height
sphere = createGraphics(width, height, P3D);
// for testPicture
//String[] fontList = PFont.list();
//printArray(fontList);
testFont = createFont("Oliver's Barney", 50);
// fps
fpsFont = createFont("Ubuntu Mono", 16);
}
//////////////////////////////////////////////////////////////////////////////
void draw() { // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// SCENENGINES / / / / / / / / / / / / / / / / / / / / / / / / / / |
// clean screen ````````````````````````````````````````````````````|
blendMode(BLEND);
screenClean(screenCleanHue,
screenCleanSaturation,
screenCleanBrightness,
screenCleanAlpha,
screenCleanFlickrAmount,
screenCleanFlickrSpeed);
// drawSpectrum
drawSpectrum(drawSpectrumToggle,
siLinesData, // ArrayList<FloatList> 2D data
drawSpectrumThreshold, // threshold 0-1000 (1000 = nothing)
drawSpectrumAFactor, // alpha factor (58 = 1)
drawSpectrumHeight, // line height
drawSpectrumWidth, // line height
drawSpectrumAwidth, // alpha->width amp
drawSpectrumSaturation // saturation
);
// draw tiles `````````````````````````````````````````````````````|
tiles(drawTilesToggle, // render on/off
tilesBgHue, tilesBgSat, tilesBgBri, tilesHue, tilesSat, tilesBri,
//color(0, 0, 0, 80), // background color (HSBA)
// color(80, 70, 20, 100), // tile color
20, // tile hue distance
0, // blendMode
tilesNumX, // number of tiles on X axis
tilesNumY, // number of tiles on Y axis
tilesTexBank, // texture bank number
tilesTexId, // texture number/id
tilesTexSpeedX, // texture speed X
tilesTexSpeedY, // texture speed Y
tilesOverlap // overlap. 127 = 300%
);
// draw spheress```````````````````````````````````````````````````|
drawSpheres(boolean(0)
);
// draw cubes `````````````````````````````````````````````````````|
drawCube(boolean(0), cubes,
100, height/2, -100,
400, 300, 300,
radians(frameCount), radians(frameCount*0.7), PI/2,
0);
// test pattern```````````````````````````````````````````````````|
testPattern(testPatternToggle, // boolean(0), // on/off
testPatternTexBank, testPatternTexId,
testPatternTexAlpha, // image alpha
10, // number of horizontal 'lanes'
10, // density
4, // stroke width
255, // stroke alpha
2 // speed
);
// debug `````````````````````````````````````````````````````````|
// draw test picture
testPicture(testPictureToggle);
// frames per second
displayFps(false);
// document
autoSnap(false);
} // --------------------------------------------------------------------------