final 0.9 beta state
parent
e4349b8b67
commit
fa5e51d9b1
|
@ -1,258 +0,0 @@
|
||||||
/*
|
|
||||||
|
|
||||||
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
|
|
||||||
int tilesOverlap;
|
|
||||||
|
|
||||||
// testPicture
|
|
||||||
boolean testPictureToggle = false;
|
|
||||||
PFont testFont;
|
|
||||||
|
|
||||||
// testPattern
|
|
||||||
boolean testPatternToggle = false;
|
|
||||||
|
|
||||||
|
|
||||||
// fps
|
|
||||||
PFont fpsFont;
|
|
||||||
|
|
||||||
|
|
||||||
// siLines
|
|
||||||
ArrayList<FloatList> siLinesData;
|
|
||||||
|
|
||||||
// drawSpectrum
|
|
||||||
float drawSpectrumAFactor;
|
|
||||||
int drawSpectrumThreshold;
|
|
||||||
int drawSpectrumHeight;
|
|
||||||
int drawSpectrumWidth;
|
|
||||||
float drawSpectrumAwidth;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
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() { // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
|
|
||||||
// clean screen ````````````````````````````````````````````````````|
|
|
||||||
//blendMode(BLEND);
|
|
||||||
screenClean(color(0));
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// SCENENGINES / / / / / / / / / / / / / / / / / / / / / / / / / / |
|
|
||||||
|
|
||||||
|
|
||||||
// drawSpectrum
|
|
||||||
drawSpectrum(boolean(1),
|
|
||||||
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
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
// draw spheress```````````````````````````````````````````````````|
|
|
||||||
drawSpheres(boolean(0)
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// draw tiles `````````````````````````````````````````````````````|
|
|
||||||
tiles(boolean(0), // render on/off
|
|
||||||
color(0, 0, 0, 80), // background color (HSBA)
|
|
||||||
color(80, 70, 20, 100), // tile color
|
|
||||||
20, // tile hue distance
|
|
||||||
0, // blendMode
|
|
||||||
6, // number of tiles on X axis
|
|
||||||
1, // number of tiles on Y axis
|
|
||||||
2, // texture bank number
|
|
||||||
0, // texture number/id
|
|
||||||
10, // texture speed X
|
|
||||||
1, // texture speed Y
|
|
||||||
tilesOverlap // overlap. 127 = 300%
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 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
|
|
||||||
2, 0, // img bank & ID
|
|
||||||
255, // 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(true);
|
|
||||||
|
|
||||||
// document
|
|
||||||
autoSnap(false);
|
|
||||||
|
|
||||||
} // --------------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -18,20 +18,23 @@ void drawSpectrum(boolean render,
|
||||||
float afactor,
|
float afactor,
|
||||||
int line_height,
|
int line_height,
|
||||||
int rect_width,
|
int rect_width,
|
||||||
float alpha_width)
|
float alpha_width,
|
||||||
|
float saturation)
|
||||||
{
|
{
|
||||||
if (render) {
|
if (render) {
|
||||||
// if((frameCount%60) < 1) { println("width: " + width); }; // DEBUG
|
// if((frameCount%60) < 1) { println("width: " + width); }; // DEBUG
|
||||||
|
|
||||||
//float afactor = float(afactor);
|
//float afactor = float(afactor);
|
||||||
afactor = map(pow(afactor, 5), 0, pow(127, 5), 0, 50 );
|
afactor = map(pow(afactor, 5), 0, pow(127, 5), 0, 50 );
|
||||||
line_height = int(map(line_height, 0, 127, 0, height/2));
|
//line_height = int(map(line_height, 0, 127, 0, height/2));
|
||||||
threshold = int(map(pow(threshold, 3), 0, pow(127, 3), 0, 1000));
|
threshold = int(map(pow(threshold, 3), 0, pow(127, 3), 0, 1000));
|
||||||
line_height = int(map(line_height, 0, 127, 0, height * 0.5));
|
//if((frameCount%60) < 1) { println("line_height: " + line_height); }; // DEBUG
|
||||||
|
line_height = int(map(pow(line_height,2), 0, pow(127,2), 0, height));
|
||||||
rect_width = int(map(rect_width, 0, 127, 1, 400));
|
rect_width = int(map(rect_width, 0, 127, 1, 400));
|
||||||
alpha_width = map(alpha_width, 0, 127, 0, 0.1);
|
alpha_width = map(alpha_width, 0, 127, 0, 0.1);
|
||||||
|
saturation = map(saturation, 0, 127, 0, 255);
|
||||||
// DEBUG:
|
// DEBUG:
|
||||||
// if((frameCount%60) < 1) { println("width: " + width); }; // DEBUG
|
//if((frameCount%60) < 1) { println("line_height: " + line_height); }; // DEBUG
|
||||||
|
|
||||||
for (int i = 0; i < siLinesData.size(); i++) {
|
for (int i = 0; i < siLinesData.size(); i++) {
|
||||||
if (siLinesData.get(i).get(1) > threshold) {
|
if (siLinesData.get(i).get(1) > threshold) {
|
||||||
|
@ -41,12 +44,18 @@ void drawSpectrum(boolean render,
|
||||||
float green = siLinesData.get(i).get(3);
|
float green = siLinesData.get(i).get(3);
|
||||||
float blue = siLinesData.get(i).get(4);
|
float blue = siLinesData.get(i).get(4);
|
||||||
float alpha = map(intensity, 0, 1000, 0, 255) * afactor;
|
float alpha = map(intensity, 0, 1000, 0, 255) * afactor;
|
||||||
|
colorMode(RGB);
|
||||||
color line_c = color(red, green, blue, alpha);
|
color line_c = color(red, green, blue, alpha);
|
||||||
|
colorMode(HSB);
|
||||||
|
float hue = hue(line_c);
|
||||||
|
float brightness = brightness(line_c);
|
||||||
|
line_c = color(hue, saturation, brightness, alpha);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fill(line_c); noStroke();
|
fill(line_c); noStroke();
|
||||||
rectMode(CENTER);
|
rectMode(CENTER);
|
||||||
rect(map(wavelength, 3950, 6741, 1, width), height / 2, rect_width + (alpha * alpha_width), line_height/2 );
|
rect(map(wavelength, 3950, 6741, 1, width), height / 2, rect_width + (alpha * alpha_width), line_height );
|
||||||
|
|
||||||
|
|
||||||
// stroke(line_c);
|
// stroke(line_c);
|
||||||
|
|
|
@ -25,8 +25,32 @@ void shuffle(int[] a)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void screenClean(color c) { // -----------------------------------------
|
// 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);
|
||||||
|
color c = color(hue, saturation, brightness, alpha);
|
||||||
|
|
||||||
// flickr? frameCount % var, amount towards black
|
// flickr? frameCount % var, amount towards black
|
||||||
|
|
||||||
fill(c);
|
fill(c);
|
||||||
noStroke();
|
noStroke();
|
||||||
rectMode(CORNER);
|
rectMode(CORNER);
|
||||||
|
@ -42,9 +66,10 @@ void displayFps(boolean render) { // -----------------------------------
|
||||||
fill(255);
|
fill(255);
|
||||||
textFont(fpsFont);
|
textFont(fpsFont);
|
||||||
textSize(16);
|
textSize(16);
|
||||||
text(int(frameRate)+"fps", width-60, 20, 5);}
|
text(round(frameRate) + "fps", width-60, 20, 5);}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void autoSnap(boolean render) { // -------------------------------------
|
void autoSnap(boolean render) { // -------------------------------------
|
||||||
if (render) {
|
if (render) {
|
||||||
// auto-save snapshots
|
// auto-save snapshots
|
||||||
|
|
|
@ -11,25 +11,31 @@
|
||||||
|
|
||||||
// loads all images into an array - - - - - - - - - - - - - - - - - - - - - - - - -
|
// loads all images into an array - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
PImage[][] getImages(String folder) {
|
PImage[][] getImages(String folder) {
|
||||||
|
//ArrayList<ArrayList> getImages(String folder) {
|
||||||
|
|
||||||
PImage[][] imgPool; // declare 2D array imgPool
|
PImage[][] imgPool; // declare 2D array imgPool
|
||||||
|
//ArrayList<ArrayList> imgPool;
|
||||||
|
|
||||||
|
|
||||||
File dir = new File(dataPath(sketchPath + folder)); // first folder
|
File dir = new File(dataPath(sketchPath + folder)); // first folder
|
||||||
String[] dirlist = dir.list(); // an array of folders (strings)
|
String[] dirlist = dir.list(); // an array of folders (strings)
|
||||||
dirlist = sort(dirlist); //
|
dirlist = sort(dirlist); //
|
||||||
imgPool = new PImage[dirlist.length][10]; // create 2d array imgPool
|
//imgPool = new ArrayList<ArrayList>();
|
||||||
|
imgPool = new PImage[dirlist.length][100]; // create 2d array imgPool
|
||||||
|
|
||||||
for (int i = 0; i < dirlist.length; i++) {
|
for (int i = 0; i < dirlist.length; i++) {
|
||||||
String fulldir = dataPath(sketchPath + folder + dirlist[i]) + "/";
|
String fulldir = dataPath(sketchPath + folder + dirlist[i]) + "/";
|
||||||
File dir2 = new File(fulldir);
|
File dir2 = new File(fulldir);
|
||||||
String[] filelist = dir2.list(); // an array of image names
|
String[] filelist = dir2.list(); // an array of image names
|
||||||
filelist = sort(filelist);
|
filelist = sort(filelist);
|
||||||
|
println("\n~~~ BANK no." + i + ": " + dirlist[i]);
|
||||||
|
|
||||||
if (filelist.length != 0) {
|
if (filelist.length != 0) {
|
||||||
|
imgPool[i] = (PImage[]) expand(imgPool[i], filelist.length);
|
||||||
|
// geez: ^^^^^^^^^^ !!!!!
|
||||||
|
|
||||||
for (int j = 0; j < filelist.length; j++) {
|
for (int j = 0; j < filelist.length; j++) {
|
||||||
println("imgPool[" + i + "][" + j + "]: " + fulldir + filelist[j]);
|
println(" imgPool[" + i + "][" + j + "]: " + dirlist[i] + " " + filelist[j]);
|
||||||
imgPool[i][j] = loadImage(fulldir + filelist[j]);
|
imgPool[i][j] = loadImage(fulldir + filelist[j]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,6 +44,8 @@ PImage[][] getImages(String folder) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
println("\n~~~ Done loading images.\n");
|
||||||
|
|
||||||
return imgPool;
|
return imgPool;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,12 +16,46 @@ void ctlin(int cc, int val) { // midi control values, from Renoise (via SC)
|
||||||
// println("### OSC: /ctlin cc:" + cc + " value:" + val);
|
// println("### OSC: /ctlin cc:" + cc + " value:" + val);
|
||||||
|
|
||||||
// patchbay
|
// patchbay
|
||||||
if (cc == 2) { tilesOverlap = val; }
|
|
||||||
|
if (cc == 3) { screenCleanHue = val; }
|
||||||
|
if (cc == 4) { screenCleanSaturation = val; }
|
||||||
|
if (cc == 5) { screenCleanBrightness = val; }
|
||||||
|
if (cc == 6) { screenCleanAlpha = val; }
|
||||||
|
if (cc == 7) { screenCleanFlickrAmount = val; }
|
||||||
|
if (cc == 8) { screenCleanFlickrSpeed = val; }
|
||||||
|
|
||||||
|
if (cc == 9) {
|
||||||
|
if (val == 0) { drawSpectrumToggle = true; }
|
||||||
|
if (val == 1) { drawSpectrumToggle = false; }
|
||||||
|
if (val == 2) { drawTilesToggle = true; }
|
||||||
|
if (val == 3) { drawTilesToggle = false; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (cc == 10) { drawSpectrumAFactor = val; }
|
if (cc == 10) { drawSpectrumAFactor = val; }
|
||||||
if (cc == 11) { drawSpectrumThreshold = val; }
|
if (cc == 11) { drawSpectrumThreshold = val; }
|
||||||
if (cc == 12) { drawSpectrumHeight = val; }
|
if (cc == 12) { drawSpectrumHeight = val; }
|
||||||
if (cc == 13) { drawSpectrumWidth = val; }
|
if (cc == 13) { drawSpectrumWidth = val; }
|
||||||
if (cc == 14) { drawSpectrumAwidth = val; }
|
if (cc == 14) { drawSpectrumAwidth = val; }
|
||||||
|
if (cc == 15) { drawSpectrumSaturation = val; }
|
||||||
|
|
||||||
|
if (cc == 16) { tilesBgHue = val; }
|
||||||
|
if (cc == 17) { tilesBgSat = val; }
|
||||||
|
if (cc == 18) { tilesBgBri = val; }
|
||||||
|
if (cc == 19) { tilesHue = val; }
|
||||||
|
if (cc == 20) { tilesSat = val; }
|
||||||
|
if (cc == 21) { tilesBri = val; }
|
||||||
|
if (cc == 22) { tilesNumX = val; }
|
||||||
|
if (cc == 23) { tilesNumY = val; }
|
||||||
|
if (cc == 24) { tilesTexBank = val; }
|
||||||
|
if (cc == 25) { tilesTexId = val; }
|
||||||
|
if (cc == 26) { tilesTexSpeedX = val; }
|
||||||
|
if (cc == 27) { tilesTexSpeedY = val; }
|
||||||
|
if (cc == 28) { tilesOverlap = val; }
|
||||||
|
|
||||||
|
//if (cc == 30) {}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,8 +67,10 @@ void scosc(String mount, int val) { // stuff coming directly from SuperCollider
|
||||||
// println("### OSC: /sc mount:" + mount + " value:" + val);
|
// println("### OSC: /sc mount:" + mount + " value:" + val);
|
||||||
|
|
||||||
// patchbay
|
// patchbay
|
||||||
if (mount.equals("testPatternToggle")) { testPatternToggle = boolean(val); }
|
if (mount.equals("testPatternToggle")) { testPatternToggle = boolean(val); println("~~~ testPatternToggle: " + val);}
|
||||||
if (mount.equals("testPictureToggle")) { testPictureToggle = boolean(val); }
|
if (mount.equals("testPictureToggle")) { testPictureToggle = boolean(val); println("~~~ testPictureToggle: " + val);}
|
||||||
|
if (mount.equals("drawSpectrumToggle")) { drawSpectrumToggle = boolean(val); println("~~~ drawSpectrumToggle: " + val);}
|
||||||
|
if (mount.equals("drawTilesToggle")) { drawTilesToggle = boolean(val); println("~~~ drawTilesToggle: " + val);}
|
||||||
|
|
||||||
|
|
||||||
} // - - - - - - - - - - - - - - - - - - - -
|
} // - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
|
@ -12,11 +12,13 @@
|
||||||
|
|
||||||
void testPicture(boolean render) {
|
void testPicture(boolean render) {
|
||||||
if (render) {
|
if (render) {
|
||||||
|
|
||||||
|
blendMode(BLEND);
|
||||||
fill(127);
|
fill(127);
|
||||||
stroke(255);
|
stroke(255);
|
||||||
strokeWeight(1);
|
strokeWeight(4);
|
||||||
|
|
||||||
|
rectMode(CORNER);
|
||||||
rect(1, 1, width-2, height-2);
|
rect(1, 1, width-2, height-2);
|
||||||
|
|
||||||
ellipse(width/2, height/2, height-4, height-4);
|
ellipse(width/2, height/2, height-4, height-4);
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// TILES - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// TILES - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
/* TODO:
|
/* TODO:
|
||||||
- different zooms (random?)
|
- different zooms (random?)
|
||||||
|
@ -24,8 +25,10 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void tiles( boolean render, // should we render or not?
|
void tiles( boolean render, // should we render or not?
|
||||||
color bgfill, // backgorund color
|
int tilesBgHue, int tilesBgSat, int tilesBgBri,
|
||||||
color tilecolor, // tile color
|
int tilesHue, int tilesSat, int tilesBri,
|
||||||
|
//color bgfill, // backgorund color
|
||||||
|
//!!color tilecolor, // tile color
|
||||||
int huedist, // tile color distance for interpolation
|
int huedist, // tile color distance for interpolation
|
||||||
int blendMode, // blending mode of tiles
|
int blendMode, // blending mode of tiles
|
||||||
int numx, // number of tiles on X
|
int numx, // number of tiles on X
|
||||||
|
@ -38,18 +41,34 @@ void tiles( boolean render, // should we render or not?
|
||||||
{
|
{
|
||||||
if (render) {
|
if (render) {
|
||||||
|
|
||||||
colorMode(HSB, 360, 100, 100, 100);
|
colorMode(HSB, 127, 127, 127, 127);
|
||||||
blendMode(BLEND);
|
blendMode(BLEND);
|
||||||
|
color bgfill = color(tilesBgHue, tilesBgSat, tilesBgBri);
|
||||||
|
color tilecolor = color(tilesHue, tilesSat, tilesBri);
|
||||||
|
|
||||||
fill(bgfill);
|
fill(bgfill);
|
||||||
noStroke();
|
noStroke();
|
||||||
rect(0, 0, width, height);
|
rect(0, 0, width, height);
|
||||||
switchBlendMode(blendMode); // blendMode function using integers
|
switchBlendMode(blendMode); // blendMode function using integers
|
||||||
|
|
||||||
|
texBank = min(texBank, imgPool.length - 1);
|
||||||
|
texNum = min(texNum, imgPool[texBank].length - 1);
|
||||||
|
|
||||||
|
// for (int i = 0; i < imgPool.length; i++) {
|
||||||
|
// if (texBank == i) {
|
||||||
|
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
texSpeedX *= 0.01;
|
texSpeedX *= 0.01;
|
||||||
texSpeedY *= 0.01;
|
texSpeedY *= 0.01;
|
||||||
texX += sq(texSpeedX);
|
texX += sq(texSpeedX);
|
||||||
texY += sq(texSpeedY);
|
texY += sq(texSpeedY);
|
||||||
|
|
||||||
|
numx = max(1, numx);
|
||||||
|
numy = max(1, numy);
|
||||||
float numxfact = 1 / float(numx);
|
float numxfact = 1 / float(numx);
|
||||||
float numyfact = 1 / float(numy);
|
float numyfact = 1 / float(numy);
|
||||||
float aspectRatio = (height / float(numy)) / (width / float(numx));
|
float aspectRatio = (height / float(numy)) / (width / float(numx));
|
||||||
|
|
|
@ -31,11 +31,11 @@ w = Window.new( name: "Interface Fractures III",
|
||||||
bounds: Rect(0, 2, ~screenWidth, ~screenHeight),
|
bounds: Rect(0, 2, ~screenWidth, ~screenHeight),
|
||||||
//bounds: w.availableBounds,
|
//bounds: w.availableBounds,
|
||||||
resizable: true,
|
resizable: true,
|
||||||
border: false,
|
border: true,
|
||||||
server: s,
|
server: s,
|
||||||
scroll: true
|
scroll: true
|
||||||
).front;
|
).front;
|
||||||
w.fullScreen;
|
//w.fullScreen;
|
||||||
postln("~~~ Created window ..." + w.bounds);
|
postln("~~~ Created window ..." + w.bounds);
|
||||||
w.background_(Color.gray(0.2));
|
w.background_(Color.gray(0.2));
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,18 @@
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
.minHeight_(70).minWidth_(70),
|
.minHeight_(70).minWidth_(70),
|
||||||
|
nil,
|
||||||
|
|
||||||
|
Button().minHeight_(70).minWidth_(70)
|
||||||
|
.states_([ ["draw Spectrum"], ["draw Spectrum", Color.gray(0.2), Color.grey(0.8)] ])
|
||||||
|
.mouseDownAction_({ | state |
|
||||||
|
switch(state.value,
|
||||||
|
0, { postln("~~~ draw Spectrum on!");
|
||||||
|
~zarquOsc.sendMsg("/sc", "drawSpectrumToggle", 1); },
|
||||||
|
1, { postln("~~~ draw Spectrum off!");
|
||||||
|
~zarquOsc.sendMsg("/sc", "drawSpectrumToggle", 0); }
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
|
||||||
Button().minHeight_(70).minWidth_(70)
|
Button().minHeight_(70).minWidth_(70)
|
||||||
.states_([ ["Test pattern"], ["Test pattern", Color.gray(0.2), Color.grey(0.8)] ])
|
.states_([ ["Test pattern"], ["Test pattern", Color.gray(0.2), Color.grey(0.8)] ])
|
||||||
|
|
|
@ -115,7 +115,7 @@ postln("~~~ function ~procLinesFunc ...");
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// process lines, store to a List
|
// evaluate: process lines, store to a List
|
||||||
postln("~~~ process lines, store to a list: ~siLinesData, sort ...");
|
postln("~~~ process lines, store to a list: ~siLinesData, sort ...");
|
||||||
~siLinesData = ~procLinesFunc.value;
|
~siLinesData = ~procLinesFunc.value;
|
||||||
|
|
||||||
|
@ -179,14 +179,18 @@ postln("~~~ function ~viewLinesFunc ...");
|
||||||
swin.refresh;
|
swin.refresh;
|
||||||
swin.front;
|
swin.front;
|
||||||
}; // end of viewLines function
|
}; // end of viewLines function
|
||||||
|
// this could be bound to a button,
|
||||||
|
// or ideally expanded to an animated timeline
|
||||||
|
// and included in main window...:
|
||||||
|
|
||||||
|
// evaluate: show a window/view with lines - score
|
||||||
|
// ~viewLinesFunc.value;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(
|
|
||||||
|
|
||||||
~postLines = { // print data in post window, NICELY!
|
~postLines = { // print data in post window, NICELY!
|
||||||
|
|
||||||
|
@ -195,49 +199,61 @@ postln("~~~ function ~viewLinesFunc ...");
|
||||||
var minutes = (item[0]/60).asInt;
|
var minutes = (item[0]/60).asInt;
|
||||||
var seconds = (item[0]%60).asInt;
|
var seconds = (item[0]%60).asInt;
|
||||||
|
|
||||||
if (item[3].asInt > 99, {
|
if (item[3].asInt > 199, {
|
||||||
|
|
||||||
// post("[");
|
// post("[");
|
||||||
// post(i.asString.padLeft(3));
|
// post(i.asString.padLeft(3));
|
||||||
// post("] ");
|
// post("] ");
|
||||||
|
|
||||||
post(item[1]);
|
// time
|
||||||
post(" ");
|
|
||||||
|
|
||||||
post(item[3].asString.padLeft(4));
|
|
||||||
post(" ");
|
|
||||||
|
|
||||||
if (minutes < 10, { minutes = "0" ++ minutes.asString;});
|
if (minutes < 10, { minutes = "0" ++ minutes.asString;});
|
||||||
post(minutes);
|
post(minutes);
|
||||||
post(":");
|
post(":");
|
||||||
if (seconds < 10, { seconds = "0" ++ seconds.asString; });
|
if (seconds < 10, { seconds = "0" ++ seconds.asString; });
|
||||||
post(seconds);
|
post(seconds);
|
||||||
//post(i);
|
post(" ");
|
||||||
|
|
||||||
|
// wavelength
|
||||||
|
post(item[2]);
|
||||||
|
post("Å ");
|
||||||
|
|
||||||
|
|
||||||
|
// layer
|
||||||
|
post(item[1]);
|
||||||
|
post(" ");
|
||||||
|
|
||||||
|
// intensity
|
||||||
|
post(item[3].asString.padLeft(4));
|
||||||
post(" ");
|
post(" ");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// frequency
|
||||||
post(item[4].asString.padLeft(5));
|
post(item[4].asString.padLeft(5));
|
||||||
post("Hz ");
|
post("Hz ");
|
||||||
post(item[5].asString.padLeft(5));
|
post(item[5].asString.padLeft(5));
|
||||||
post("Hz ");
|
post("Hz ");
|
||||||
|
|
||||||
|
// midi/tone
|
||||||
post(item[6].asString.padLeft(5)); // midi1
|
post(item[6].asString.padLeft(5)); // midi1
|
||||||
post(" ");
|
post(" ");
|
||||||
post(item[7].asString.padLeft(5)); // midi2
|
post(item[7].asString.padLeft(5)); // midi2
|
||||||
post(" | ");
|
post(" | ");
|
||||||
|
|
||||||
|
// RGB
|
||||||
post(item[8].asString.padLeft(3));
|
post(item[8].asString.padLeft(3));
|
||||||
post(" ");
|
post(" ");
|
||||||
post(item[9].asString.padLeft(3));
|
post(item[9].asString.padLeft(3));
|
||||||
post(" ");
|
post(" ");
|
||||||
post(item[10].asString.padLeft(3));
|
post(item[10].asString.padLeft(3));
|
||||||
post(" | ");
|
|
||||||
post(item[11].asString.padLeft(3));
|
// HSV/B
|
||||||
post(" ");
|
// post(" | ");
|
||||||
post(item[12].asString.padLeft(3));
|
// post(item[11].asString.padLeft(3));
|
||||||
post(" ");
|
// post(" ");
|
||||||
post(item[13].asString.padLeft(3));
|
// post(item[12].asString.padLeft(3));
|
||||||
|
// post(" ");
|
||||||
|
// post(item[13].asString.padLeft(3));
|
||||||
post(" | ");
|
post(" | ");
|
||||||
post(item[14] //.asString.padLeft(3)
|
post(item[14] //.asString.padLeft(3)
|
||||||
);
|
);
|
||||||
|
@ -257,20 +273,12 @@ postln("~~~ function ~viewLinesFunc ...");
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// evaluate function
|
||||||
~postLines.value;
|
//~postLines.value;
|
||||||
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// this could be bound to a button,
|
|
||||||
// or ideally expanded to an animated timeline
|
|
||||||
// and included in main window...:
|
|
||||||
// show a window/view with lines - score
|
|
||||||
// ~viewLinesFunc.value;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -309,7 +317,7 @@ SynthDef(\siliconSynth, { |freq = 440, amp = 0.2, attack = 1, release = 1|
|
||||||
; // -------------------------------------------------------------------------------------------
|
; // -------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
sig = sig * env; // envlope the final sound
|
sig = sig * env; // envlope the final sound
|
||||||
Out.ar(0, sig); // output
|
Out.ar(2, sig); // output
|
||||||
postln("\n~~~ adding SynthDef: siliconSynth ...");
|
postln("\n~~~ adding SynthDef: siliconSynth ...");
|
||||||
}).add;
|
}).add;
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
@ -320,7 +328,7 @@ post(" ");
|
||||||
|
|
||||||
~mainTimeline = Routine({
|
~mainTimeline = Routine({
|
||||||
|
|
||||||
arg layer = 0;
|
//arg layer = 0;
|
||||||
|
|
||||||
var delta, playhead, frequency, amp, step=0,
|
var delta, playhead, frequency, amp, step=0,
|
||||||
nextdelta, nextplayhead, nextfrequency, nextamp,
|
nextdelta, nextplayhead, nextfrequency, nextamp,
|
||||||
|
@ -333,7 +341,7 @@ post(" ");
|
||||||
while {
|
while {
|
||||||
|
|
||||||
step < siLines.size;
|
step < siLines.size;
|
||||||
layer == siLines[step]
|
//layer == siLines[step]
|
||||||
|
|
||||||
} {
|
} {
|
||||||
// exposition
|
// exposition
|
||||||
|
|
Loading…
Reference in New Issue