expo-processing
This commit is contained in:
parent
5577300dd0
commit
9ea4c0bc7a
|
@ -0,0 +1,12 @@
|
||||||
|
int []quadraticBezier(int p0_x, int p0_y, int p1_x, int p1_y, int p2_x, int p2_y, float t)
|
||||||
|
{
|
||||||
|
int []pf = { int(pow(1 - t, 2) * p0_x + (1 - t) * 2 * t * p1_x + t * t * p2_x),
|
||||||
|
int(pow(1 - t, 2) * p0_y + (1 - t) * 2 * t * p1_y + t * t * p2_y) };
|
||||||
|
return (pf);
|
||||||
|
}
|
||||||
|
|
||||||
|
C_point cubicBezier(C_point p0, C_point p1, C_point p2, C_point p3, float t)
|
||||||
|
{
|
||||||
|
return(new C_point(pow(1 - t, 3) * p0.x + pow(1 - t, 2) * 3 * t * p1.x + (1 - t) * 3 * t * t * p2.x + t * t * t * p3.x,
|
||||||
|
pow(1 - t, 3) * p0.y + pow(1 - t, 2) * 3 * t * p1.y + (1 - t) * 3 * t * t * p2.y + t * t * t * p3.y));
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
class C_point
|
||||||
|
{
|
||||||
|
public float x;
|
||||||
|
public float y;
|
||||||
|
public float z;
|
||||||
|
|
||||||
|
public C_point(float px, float py)
|
||||||
|
{
|
||||||
|
x = px;
|
||||||
|
y = py;
|
||||||
|
}
|
||||||
|
|
||||||
|
public C_point(float px, float py, float pz)
|
||||||
|
{
|
||||||
|
x = px;
|
||||||
|
y = py;
|
||||||
|
z = pz;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,93 @@
|
||||||
|
class Star {
|
||||||
|
float x;
|
||||||
|
float y;
|
||||||
|
float z;
|
||||||
|
|
||||||
|
float pz;
|
||||||
|
int c;
|
||||||
|
Star()
|
||||||
|
{
|
||||||
|
x = random(-width, width);
|
||||||
|
y = random(-height, height * 2);
|
||||||
|
z = random(width);
|
||||||
|
pz = z;
|
||||||
|
c = int(random(20));
|
||||||
|
}
|
||||||
|
|
||||||
|
void update()
|
||||||
|
{
|
||||||
|
z -= tg_starfield_speed;
|
||||||
|
if (z < 1)
|
||||||
|
{
|
||||||
|
z = width;
|
||||||
|
x = random(-width / 2, width / 2);
|
||||||
|
y = random(-height / 2, height / 2);
|
||||||
|
pz = z;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void render()
|
||||||
|
{
|
||||||
|
if (c == 0)
|
||||||
|
fill(255,210,125);
|
||||||
|
if (c == 1)
|
||||||
|
fill(255,163,113);
|
||||||
|
if (c == 2)
|
||||||
|
fill(166,168,255);
|
||||||
|
if (c == 3)
|
||||||
|
fill(255,250,134);
|
||||||
|
if (c == 4)
|
||||||
|
fill(168,123,255);
|
||||||
|
if (c > 4)
|
||||||
|
fill(255, 255, 255);
|
||||||
|
noStroke();
|
||||||
|
pushMatrix();
|
||||||
|
translate(width / 2, height / 2, -1000);
|
||||||
|
float sx = map(x / z, 0, 1, 0, width);
|
||||||
|
float sy = map(y / z, 0, 1, 0, height);
|
||||||
|
|
||||||
|
float r = map(z, 0, width, 16, 0);
|
||||||
|
|
||||||
|
float px = map(x / pz, 0, 1, 0, width);
|
||||||
|
float py = map(y / pz, 0, 1, 0, height);
|
||||||
|
|
||||||
|
ellipse(sx, sy, r, r);
|
||||||
|
if (c == 0)
|
||||||
|
stroke(255,210,125);
|
||||||
|
if (c == 1)
|
||||||
|
stroke(255,163,113);
|
||||||
|
if (c == 2)
|
||||||
|
stroke(166,168,255);
|
||||||
|
if (c == 3)
|
||||||
|
stroke(255,250,134);
|
||||||
|
if (c == 4)
|
||||||
|
stroke(168,123,255);
|
||||||
|
if (c > 4)
|
||||||
|
stroke(255, 255, 255);
|
||||||
|
strokeWeight(1);
|
||||||
|
beginShape();
|
||||||
|
vertex(sx, sy - r / 4);
|
||||||
|
vertex(sx + r * 1.5, sy);
|
||||||
|
vertex(sx, sy + r / 4);
|
||||||
|
endShape();
|
||||||
|
beginShape();
|
||||||
|
vertex(sx, sy - r / 4);
|
||||||
|
vertex(sx - r * 1.5, sy);
|
||||||
|
vertex(sx, sy + r / 4);
|
||||||
|
endShape();
|
||||||
|
beginShape();
|
||||||
|
vertex(sx - r / 4, sy);
|
||||||
|
vertex(sx, sy + r * 1.5);
|
||||||
|
vertex(sx + r / 4, sy);
|
||||||
|
endShape();
|
||||||
|
beginShape();
|
||||||
|
vertex(sx - r / 4, sy);
|
||||||
|
vertex(sx, sy - r * 1.5);
|
||||||
|
vertex(sx + r / 4, sy);
|
||||||
|
endShape();
|
||||||
|
strokeWeight(r / 2);
|
||||||
|
line(px, py, sx, sy);
|
||||||
|
popMatrix();
|
||||||
|
pz = z;
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 1.8 MiB |
Binary file not shown.
After Width: | Height: | Size: 242 KiB |
|
@ -0,0 +1,124 @@
|
||||||
|
#ifdef GL_ES
|
||||||
|
precision mediump float;
|
||||||
|
precision mediump int;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// From Processing 2.1 and up, this line is optional
|
||||||
|
#define PROCESSING_COLOR_SHADER
|
||||||
|
|
||||||
|
// if you are using the filter() function, replace the above with
|
||||||
|
// #define PROCESSING_TEXTURE_SHADER
|
||||||
|
|
||||||
|
// ----------------------
|
||||||
|
// SHADERTOY UNIFORMS -
|
||||||
|
// ----------------------
|
||||||
|
|
||||||
|
uniform vec3 iResolution; // viewport resolution (in pixels)
|
||||||
|
uniform float iTime; // shader playback time (in seconds) (replaces iGlobalTime which is now obsolete)
|
||||||
|
uniform float iTimeDelta; // render time (in seconds)
|
||||||
|
uniform int iFrame; // shader playback frame
|
||||||
|
|
||||||
|
uniform vec4 iMouse; // mouse pixel coords. xy: current (if MLB down), zw: click
|
||||||
|
uniform vec4 iDate; // (year, month, day, time in seconds)
|
||||||
|
|
||||||
|
//uniform float iChannelTime[2];
|
||||||
|
//uniform vec3 iChannelResolution[2];
|
||||||
|
|
||||||
|
|
||||||
|
// Channels can be either 2D maps or Cubemaps.
|
||||||
|
// Pick the ones you need and uncomment them.
|
||||||
|
|
||||||
|
|
||||||
|
// uniform float iChannelTime[1..4]; // channel playback time (in seconds)
|
||||||
|
// uniform vec3 iChannelResolution[1..4]; // channel resolution (in pixels)
|
||||||
|
|
||||||
|
/*
|
||||||
|
uniform sampler2D iChannel0;
|
||||||
|
uniform sampler2D iChannel1;
|
||||||
|
uniform sampler2D iChannel2;
|
||||||
|
uniform sampler2D iChannel3;
|
||||||
|
uniform samplerCube iChannel0;
|
||||||
|
uniform samplerCube iChannel1;
|
||||||
|
uniform samplerCube iChannel2;
|
||||||
|
uniform samplerCube iChannel3;
|
||||||
|
uniform vec3 iChannelResolution[4]; // channel resolution (in pixels)
|
||||||
|
uniform float iChannelTime[4]; // Channel playback time (in seconds)
|
||||||
|
*/
|
||||||
|
|
||||||
|
void mainImage( out vec4 fragColor, in vec2 fragCoord );
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
mainImage(gl_FragColor,gl_FragCoord.xy);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------
|
||||||
|
// SHADERTOY CODE BEGINS HERE -
|
||||||
|
// ------------------------------
|
||||||
|
|
||||||
|
vec2 cinv(in vec2 z)
|
||||||
|
{
|
||||||
|
return (vec2(z.x, -z.y) / dot(z, z));
|
||||||
|
}
|
||||||
|
|
||||||
|
vec2 cmul(in vec2 z1, in vec2 z2)
|
||||||
|
{
|
||||||
|
return(vec2(z1.x * z2.x - z1.y * z2.y, z1.x * z2.y + z1.y * z2.x));
|
||||||
|
}
|
||||||
|
|
||||||
|
vec2 cdiv(in vec2 z1, in vec2 z2)
|
||||||
|
{
|
||||||
|
return (cmul(z1, cinv(z2)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void mainImage( out vec4 fragColor, in vec2 fragCoord )
|
||||||
|
{
|
||||||
|
float myTime = iTime * 0.03;
|
||||||
|
|
||||||
|
vec2 a0 = vec2(sin(16 * myTime) * 1.0 + 5, 0);
|
||||||
|
vec2 a1 = vec2(sin(17 * myTime) * 2.0, 0);
|
||||||
|
vec2 a2 = vec2(sin(18 * myTime) * 3.0, 0);
|
||||||
|
vec2 a3 = vec2(sin(19 * myTime) * 4.0, 0);
|
||||||
|
vec2 a4 = vec2(sin(1.1 * myTime) * 5.0, 0);
|
||||||
|
vec2 a5 = vec2(sin(1.2 * myTime) * 6.0, 0);
|
||||||
|
vec2 a6 = vec2(sin(1.3 * myTime) * 7.0, 0);
|
||||||
|
vec2 a7 = vec2(sin(1.4 * myTime) * 8.0, 0);
|
||||||
|
vec2 a8 = vec2(sin(15 * myTime) * 9.0, 0);
|
||||||
|
vec2 a9 = vec2(sin(16 * myTime) * 10.0, sin(iTime));
|
||||||
|
vec2 a10 = vec2(sin(17 * myTime) * 11.0,1 + sin(myTime) * 0.2);
|
||||||
|
|
||||||
|
vec2 a = vec2(1.0, 1 + sin(0.16 * myTime) * 0.002);
|
||||||
|
vec2 c = vec2(0.01, sin(iTime) / 10);
|
||||||
|
// Normalized pixel coordinates (from 0 to 1)
|
||||||
|
vec2 z = cmul((fragCoord/iResolution.xy - 0.5), vec2(4,0));
|
||||||
|
vec2 init_z = z;
|
||||||
|
z.x = abs(z.x);
|
||||||
|
z.y = abs(z.y);
|
||||||
|
vec2 old_z = z;
|
||||||
|
float i_backup;
|
||||||
|
for (float i = 0.0; i < 16.0; i++)
|
||||||
|
{
|
||||||
|
z = z - cmul(a, cdiv(a0 + cmul(z, a1 + cmul(z, a2 + cmul(z, a3 + cmul(z, a4 + cmul(z, a5
|
||||||
|
+ cmul(z, a6 + cmul(z, a7 + cmul(z, a8 + cmul(z, a9 + cmul(a10, z)))))))))),
|
||||||
|
a1 + cmul(z, cmul(a2, vec2(2, 0)) + cmul(z, cmul(a3, vec2(3, 0))
|
||||||
|
+ cmul(z, cmul(a4, vec2(4, 0)) + cmul(z, cmul(a5, vec2(5, 0))
|
||||||
|
+ cmul(z, cmul(a6, vec2(6, 0)) + cmul(z, cmul(a7, vec2(7, 0))
|
||||||
|
+ cmul(z, cmul(a8, vec2(8, 0)) + cmul(z, cmul(a9, vec2(9, 0))
|
||||||
|
+ cmul(cmul(a10, vec2(10, 0)), z))))))))))) + c;
|
||||||
|
|
||||||
|
if (old_z.x * old_z.x + old_z.y * old_z.y < z.x * z.x + z.y * z.y + 0.001
|
||||||
|
&& old_z.x * old_z.x + old_z.y * old_z.y > z.x * z.x + z.y * z.y - 0.001)
|
||||||
|
{
|
||||||
|
i_backup = i / 16.0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
old_z = z;
|
||||||
|
}
|
||||||
|
if (dot(init_z, init_z) > log(10) - log(10 - iTime) && iTime < 10)
|
||||||
|
fragColor = vec4(0,0,0,1);
|
||||||
|
else
|
||||||
|
fragColor = vec4(z.x, z.y, i_backup, 1.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----------------------------
|
||||||
|
// SHADERTOY CODE ENDS HERE -
|
||||||
|
// ----------------------------
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,5 @@
|
||||||
|
void draw_end()
|
||||||
|
{
|
||||||
|
background(0);
|
||||||
|
image(movie, 0, 0);
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,200 @@
|
||||||
|
// minim is required to generate audio
|
||||||
|
import ddf.minim.*;
|
||||||
|
import ddf.minim.analysis.*;
|
||||||
|
import ddf.minim.effects.*;
|
||||||
|
import ddf.minim.signals.*;
|
||||||
|
import ddf.minim.spi.*;
|
||||||
|
import ddf.minim.ugens.*;
|
||||||
|
|
||||||
|
import processing.video.*;
|
||||||
|
|
||||||
|
|
||||||
|
// import XYscope
|
||||||
|
import xyscope.*;
|
||||||
|
|
||||||
|
import themidibus.*;
|
||||||
|
MidiBus bus;
|
||||||
|
|
||||||
|
int master_control = 0;
|
||||||
|
boolean accueil_loaded = false;
|
||||||
|
boolean decollage_loaded = false;
|
||||||
|
boolean dimension_warp_loaded = false;
|
||||||
|
boolean pause_loaded = false;
|
||||||
|
boolean radar_loaded = false;
|
||||||
|
boolean fin_loaded = false;
|
||||||
|
float myTime;
|
||||||
|
|
||||||
|
Minim minim;
|
||||||
|
AudioPlayer player;
|
||||||
|
AudioPlayer player2;
|
||||||
|
|
||||||
|
int bruitage_count = 0;
|
||||||
|
boolean intro = true;
|
||||||
|
|
||||||
|
Movie movie;
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
size(1280, 720, P3D);
|
||||||
|
bus.list();
|
||||||
|
bus = new MidiBus(this, 1, 0);
|
||||||
|
minim = new Minim(this);
|
||||||
|
player = minim.loadFile("accueil.mp3");
|
||||||
|
player.loop();
|
||||||
|
player2 = minim.loadFile("decollage_bruitage.mp3");
|
||||||
|
|
||||||
|
setup_terrain_generation();
|
||||||
|
setup_polyphonic_synth();
|
||||||
|
setup_monophonic_synth();
|
||||||
|
setup_newton_fractal();
|
||||||
|
setup_radar();
|
||||||
|
|
||||||
|
movie = new Movie(this, "video_terre.m4v");
|
||||||
|
}
|
||||||
|
|
||||||
|
void movieEvent(Movie m) {
|
||||||
|
m.read();
|
||||||
|
}
|
||||||
|
|
||||||
|
void draw()
|
||||||
|
{
|
||||||
|
background(0);
|
||||||
|
if (intro)
|
||||||
|
{
|
||||||
|
if (master_control == 0)
|
||||||
|
{
|
||||||
|
if (!accueil_loaded)
|
||||||
|
{
|
||||||
|
player.pause();
|
||||||
|
player = minim.loadFile("accueil.mp3");
|
||||||
|
player.loop();
|
||||||
|
player.setGain(-3);
|
||||||
|
accueil_loaded = true;
|
||||||
|
decollage_loaded = false;
|
||||||
|
dimension_warp_loaded = false;
|
||||||
|
pause_loaded = false;
|
||||||
|
radar_loaded = false;
|
||||||
|
fin_loaded = false;
|
||||||
|
}
|
||||||
|
draw_terrain_generation();
|
||||||
|
}
|
||||||
|
if (master_control == 1)
|
||||||
|
{
|
||||||
|
if (!decollage_loaded)
|
||||||
|
{
|
||||||
|
player.pause();
|
||||||
|
player = minim.loadFile("decollage.mp3");
|
||||||
|
player.loop();
|
||||||
|
accueil_loaded = false;
|
||||||
|
decollage_loaded = true;
|
||||||
|
dimension_warp_loaded = false;
|
||||||
|
pause_loaded = false;
|
||||||
|
radar_loaded = false;
|
||||||
|
fin_loaded = false;
|
||||||
|
}
|
||||||
|
draw_terrain_generation();
|
||||||
|
}
|
||||||
|
if (master_control == 2)
|
||||||
|
{
|
||||||
|
if (!decollage_loaded)
|
||||||
|
{
|
||||||
|
player.pause();
|
||||||
|
player = minim.loadFile("decollage.mp3");
|
||||||
|
player.loop();
|
||||||
|
accueil_loaded = false;
|
||||||
|
decollage_loaded = true;
|
||||||
|
dimension_warp_loaded = false;
|
||||||
|
pause_loaded = false;
|
||||||
|
radar_loaded = false;
|
||||||
|
fin_loaded = false;
|
||||||
|
}
|
||||||
|
draw_polyphonic_synth();
|
||||||
|
}
|
||||||
|
if (master_control == 3)
|
||||||
|
{
|
||||||
|
if (!pause_loaded)
|
||||||
|
{
|
||||||
|
player.pause();
|
||||||
|
accueil_loaded = false;
|
||||||
|
decollage_loaded = false;
|
||||||
|
dimension_warp_loaded = false;
|
||||||
|
pause_loaded = true;
|
||||||
|
radar_loaded = false;
|
||||||
|
fin_loaded = false;
|
||||||
|
}
|
||||||
|
draw_monophonic_synth();
|
||||||
|
}
|
||||||
|
if (master_control == 4)
|
||||||
|
{
|
||||||
|
if (!dimension_warp_loaded)
|
||||||
|
{
|
||||||
|
player.pause();
|
||||||
|
player = minim.loadFile("dimension_warp.mp3");
|
||||||
|
player.play();
|
||||||
|
player.setGain(-9);
|
||||||
|
accueil_loaded = false;
|
||||||
|
decollage_loaded = false;
|
||||||
|
dimension_warp_loaded = true;
|
||||||
|
pause_loaded = false;
|
||||||
|
radar_loaded = false;
|
||||||
|
fin_loaded = false;
|
||||||
|
myTime = millis() / float(1000);
|
||||||
|
}
|
||||||
|
draw_newton_fractal();
|
||||||
|
}
|
||||||
|
if (master_control == 5)
|
||||||
|
{
|
||||||
|
if (!radar_loaded)
|
||||||
|
{
|
||||||
|
player.pause();
|
||||||
|
player = minim.loadFile("radar_bruitage.mp3");
|
||||||
|
player.play();
|
||||||
|
accueil_loaded = false;
|
||||||
|
decollage_loaded = false;
|
||||||
|
dimension_warp_loaded = false;
|
||||||
|
pause_loaded = false;
|
||||||
|
radar_loaded = true;
|
||||||
|
fin_loaded = false;
|
||||||
|
myTime = millis();
|
||||||
|
}
|
||||||
|
draw_radar();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (master_control == 0)
|
||||||
|
{
|
||||||
|
if (!decollage_loaded)
|
||||||
|
{
|
||||||
|
player.pause();
|
||||||
|
player = minim.loadFile("decollage.mp3");
|
||||||
|
player.loop();
|
||||||
|
accueil_loaded = false;
|
||||||
|
decollage_loaded = true;
|
||||||
|
dimension_warp_loaded = false;
|
||||||
|
pause_loaded = false;
|
||||||
|
radar_loaded = false;
|
||||||
|
fin_loaded = false;
|
||||||
|
}
|
||||||
|
draw_terrain_generation();
|
||||||
|
}
|
||||||
|
if (master_control == 1)
|
||||||
|
{
|
||||||
|
if (!fin_loaded)
|
||||||
|
{
|
||||||
|
player.pause();
|
||||||
|
player = minim.loadFile("video_terre.mp3");
|
||||||
|
movie.play();
|
||||||
|
player.play();
|
||||||
|
player.setGain(0);
|
||||||
|
accueil_loaded = false;
|
||||||
|
decollage_loaded = false;
|
||||||
|
dimension_warp_loaded = false;
|
||||||
|
pause_loaded = false;
|
||||||
|
radar_loaded = false;
|
||||||
|
fin_loaded = true;
|
||||||
|
}
|
||||||
|
draw_end();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
void tg_setup_star()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < tg_stars.length; i++)
|
||||||
|
tg_stars[i] = new Star();
|
||||||
|
}
|
||||||
|
|
||||||
|
void tg_manage_star()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < tg_stars.length; i++)
|
||||||
|
{
|
||||||
|
tg_stars[i].update();
|
||||||
|
tg_stars[i].render();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup_star()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < stars.length; i++)
|
||||||
|
stars[i] = new Star();
|
||||||
|
}
|
||||||
|
|
||||||
|
void manage_star()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < stars.length; i++)
|
||||||
|
{
|
||||||
|
stars[i].update();
|
||||||
|
stars[i].render();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ms_setup_star()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < ms_stars.length; i++)
|
||||||
|
ms_stars[i] = new Star();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ms_manage_star()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < ms_stars.length; i++)
|
||||||
|
{
|
||||||
|
ms_stars[i].update();
|
||||||
|
ms_stars[i].render();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,144 @@
|
||||||
|
/*
|
||||||
|
basic_drawing
|
||||||
|
You can draw by simply adding points directly or converted
|
||||||
|
cc teddavis.org 2017/18
|
||||||
|
*/
|
||||||
|
|
||||||
|
// import and create instance of XYscope
|
||||||
|
XYscope ms_xy;
|
||||||
|
|
||||||
|
int ms_n_point = 30;
|
||||||
|
float ms_t;
|
||||||
|
float ms_x[] = new float[2000];
|
||||||
|
float ms_y[] = new float[2000];
|
||||||
|
float ms_rx[] = new float[2000];
|
||||||
|
float ms_ry[] = new float[2000];
|
||||||
|
float []ms_channel = new float[128];
|
||||||
|
float []ms_channel_amp = new float[128];
|
||||||
|
int []ms_chan_index = new int [121];
|
||||||
|
int ms_period = 0;
|
||||||
|
int ms_activated_channels = 0;
|
||||||
|
int ms_rect_circle = 0;
|
||||||
|
|
||||||
|
Star[] ms_stars = new Star[500];
|
||||||
|
|
||||||
|
void midi_monophonic_synth(int status, int chan, int value)
|
||||||
|
{
|
||||||
|
boolean swapped = false;
|
||||||
|
|
||||||
|
if (status == -112)
|
||||||
|
{
|
||||||
|
//channel = (12f*(log((pow(2, (chan - 69f)/12))/440f)/log(2)) + 69f);
|
||||||
|
for (int i = 0; i < 121; i++)
|
||||||
|
{
|
||||||
|
if (ms_channel[i] < 1)
|
||||||
|
{
|
||||||
|
ms_channel[i] = pow(2, (chan - 69f) / 12) * 440;
|
||||||
|
ms_channel_amp[i] = map(value, 0, 127, 0, 1);
|
||||||
|
ms_chan_index[i] = chan;
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ms_activated_channels++;
|
||||||
|
}
|
||||||
|
if (status == -128)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 121; i++)
|
||||||
|
{
|
||||||
|
if(ms_chan_index[i] == chan && swapped == false)
|
||||||
|
{
|
||||||
|
ms_channel[i] = 0;
|
||||||
|
ms_channel_amp[i] = 0;
|
||||||
|
ms_chan_index[i] = 0;
|
||||||
|
swapped = true;
|
||||||
|
}
|
||||||
|
if (swapped == true)
|
||||||
|
{
|
||||||
|
ms_channel[i] = ms_channel[i + 1];
|
||||||
|
ms_channel_amp[i] = ms_channel_amp[i + 1];
|
||||||
|
ms_chan_index[i] = ms_chan_index[i+1];
|
||||||
|
if (ms_channel[i] < 1)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ms_activated_channels--;
|
||||||
|
}
|
||||||
|
if (chan == 7 && status == -80)
|
||||||
|
ms_n_point = value * 2;
|
||||||
|
if (chan == 7 && status == -79)
|
||||||
|
ms_rect_circle = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup_monophonic_synth() {
|
||||||
|
for (int i = 0; i < 2000; i++)
|
||||||
|
{
|
||||||
|
ms_rx[i] = random(-2000, 1000) / 1000.0;
|
||||||
|
ms_ry[i] = random(-1000, 1000) / 1000.0;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < 128; i++)
|
||||||
|
{
|
||||||
|
ms_channel[i] = 0;
|
||||||
|
ms_channel_amp[i] = 0;
|
||||||
|
}
|
||||||
|
background(0);
|
||||||
|
// initialize XYscope with default sound out
|
||||||
|
ms_xy = new XYscope(this);
|
||||||
|
//xy.getMixerInfo();
|
||||||
|
ms_setup_star();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void draw_monophonic_synth() {
|
||||||
|
strokeWeight(2);
|
||||||
|
background(0);
|
||||||
|
ms_xy.clearWaves();
|
||||||
|
ms_t = millis() / 1000.0;
|
||||||
|
ms_t = 1;
|
||||||
|
//loadPixels();
|
||||||
|
if (ms_activated_channels > 0)
|
||||||
|
{
|
||||||
|
ms_xy.freq(ms_channel[ms_period % ms_activated_channels]);
|
||||||
|
ms_xy.amp(ms_channel_amp[ms_period % ms_activated_channels]);
|
||||||
|
} else
|
||||||
|
ms_xy.freq(0);
|
||||||
|
for (int i = 0; i < ms_n_point; i++)
|
||||||
|
{
|
||||||
|
ms_x[i] = (-ms_rx[i] * ms_rx[i] + ms_rx[i] + ms_ry[i]) * (cos(ms_t) * 500) + width/2;
|
||||||
|
ms_y[i] = (ms_rx[i] * (ms_rx[i] - ms_ry[i]) * ms_ry[i] - ms_rx[i] * ms_ry[i] + ms_ry[i]) * (sin(ms_t) * 500) * (cos(ms_rx[i]) * ms_rx[i]) + ms_ry[i] + height/2;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < ms_activated_channels; i++)
|
||||||
|
{
|
||||||
|
for (int j = 127; j > 127 - ms_n_point; j--)
|
||||||
|
{
|
||||||
|
ms_xy.ellipse(map(ms_chan_index[i], 0, 120, 0, width), height / 2, j, j);
|
||||||
|
ms_xy.ellipse(map(ms_chan_index[i], 0, 120, 0, width), map(ms_chan_index[i], 0, 120, 0, height), j, j);
|
||||||
|
if (ms_rect_circle > 84)
|
||||||
|
{
|
||||||
|
ms_xy.rect(map(ms_chan_index[i], 0, 120, 0, width), 0, j / 2, j / 2);
|
||||||
|
ms_xy.ellipse(map(ms_chan_index[i], 0, 120, 0, width), 0.66f * height, j / 2, j / 2);
|
||||||
|
}
|
||||||
|
else if (ms_rect_circle > 42)
|
||||||
|
ms_xy.rect(map(ms_chan_index[i], 0, 120, 0, width), height/ 2, j / 2, j / 2);
|
||||||
|
else
|
||||||
|
ms_xy.ellipse(map(ms_chan_index[i], 0, 120, 0, width), height /2, j / 2, j / 2);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//updatePixels();
|
||||||
|
// build audio from shapes
|
||||||
|
ms_xy.buildWaves();
|
||||||
|
|
||||||
|
// draw all analytics
|
||||||
|
ms_xy.drawAll();
|
||||||
|
ms_period++;
|
||||||
|
ms_manage_star();
|
||||||
|
}
|
||||||
|
|
||||||
|
void keyPressed() {
|
||||||
|
if (keyCode == DOWN) { // DELETE
|
||||||
|
ms_xy.clearWaves();
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,64 @@
|
||||||
|
// newton fractal globals
|
||||||
|
|
||||||
|
PShader nf_myShader;
|
||||||
|
float nf_previousTime = 0.0;
|
||||||
|
boolean nf_mouseDragged = false;
|
||||||
|
PVector nf_lastMousePosition;
|
||||||
|
float nf_mouseClickState = 0.0;
|
||||||
|
|
||||||
|
void setup_newton_fractal()
|
||||||
|
{
|
||||||
|
// Load the shader file from the "data" folder
|
||||||
|
nf_myShader = loadShader("defaultShader.cpp");
|
||||||
|
|
||||||
|
// We assume the dimension of the window will not change over time,
|
||||||
|
// therefore we can pass its values in the setup() function
|
||||||
|
nf_myShader.set("iResolution", float(width), float(height), 0.0);
|
||||||
|
|
||||||
|
nf_lastMousePosition = new PVector(float(mouseX),float(mouseY));
|
||||||
|
|
||||||
|
// needed cuz noFill means no shader
|
||||||
|
fill(255);
|
||||||
|
noStroke();
|
||||||
|
}
|
||||||
|
|
||||||
|
void draw_newton_fractal()
|
||||||
|
{
|
||||||
|
// shader playback time (in seconds)
|
||||||
|
float currentTime = millis()/1000.0 - myTime;
|
||||||
|
nf_myShader.set("iTime", currentTime);
|
||||||
|
|
||||||
|
// render time (in seconds)
|
||||||
|
float timeDelta = currentTime - nf_previousTime;
|
||||||
|
nf_previousTime = currentTime;
|
||||||
|
nf_myShader.set("iDeltaTime", timeDelta);
|
||||||
|
|
||||||
|
// shader playback frame
|
||||||
|
nf_myShader.set("iFrame", frameCount);
|
||||||
|
|
||||||
|
// mouse pixel coords. xy: current (if MLB down), zw: click
|
||||||
|
if(mousePressed) {
|
||||||
|
nf_lastMousePosition.set(float(mouseX),float(mouseY));
|
||||||
|
nf_mouseClickState = 1.0;
|
||||||
|
} else {
|
||||||
|
nf_mouseClickState = 0.0;
|
||||||
|
}
|
||||||
|
nf_myShader.set( "iMouse", nf_lastMousePosition.x, nf_lastMousePosition.y, nf_mouseClickState, nf_mouseClickState);
|
||||||
|
|
||||||
|
// Set the date
|
||||||
|
// Note that iDate.y and iDate.z contain month-1 and day-1 respectively,
|
||||||
|
// while x does contain the year (see: https://www.shadertoy.com/view/ldKGRR)
|
||||||
|
float timeInSeconds = hour()*3600 + minute()*60 + second();
|
||||||
|
nf_myShader.set("iDate", year(), month()-1, day()-1, timeInSeconds );
|
||||||
|
|
||||||
|
// This uniform is undocumented so I have no idea what the range is
|
||||||
|
nf_myShader.set("iFrameRate", frameRate);
|
||||||
|
|
||||||
|
// Apply the specified shader to any geometry drawn from this point
|
||||||
|
shader(nf_myShader);
|
||||||
|
// Draw the output of the shader onto a rectangle that covers the whole viewport.
|
||||||
|
fill(255);
|
||||||
|
rect(0, 0, width, height);
|
||||||
|
|
||||||
|
resetShader();
|
||||||
|
}
|
|
@ -0,0 +1,189 @@
|
||||||
|
|
||||||
|
XYscope []xy = new XYscope[49];
|
||||||
|
|
||||||
|
|
||||||
|
float []channel = new float[49];
|
||||||
|
float []channel_amp = new float[49];
|
||||||
|
int []chan_index = new int [49];
|
||||||
|
int []adsr_t = new int[49];
|
||||||
|
int []t = new int[49];
|
||||||
|
float attack;
|
||||||
|
float decay;
|
||||||
|
float sustain;
|
||||||
|
float release;
|
||||||
|
|
||||||
|
int activated_channels = 0;
|
||||||
|
int timbre = 0;
|
||||||
|
int filling = 0;
|
||||||
|
|
||||||
|
Star[] stars = new Star[500];
|
||||||
|
|
||||||
|
// noise related
|
||||||
|
float[] yWave;
|
||||||
|
float[] xWave;
|
||||||
|
|
||||||
|
C c = new C();
|
||||||
|
C_sharp c_sharp = new C_sharp();
|
||||||
|
D d = new D();
|
||||||
|
D_sharp d_sharp = new D_sharp();
|
||||||
|
E e = new E();
|
||||||
|
F f = new F();
|
||||||
|
F_sharp f_sharp = new F_sharp();
|
||||||
|
G g = new G();
|
||||||
|
G_sharp g_sharp = new G_sharp();
|
||||||
|
A a = new A();
|
||||||
|
A_sharp a_sharp = new A_sharp();
|
||||||
|
B b = new B();
|
||||||
|
|
||||||
|
Draw_notes[] draw_notes_array = new Draw_notes[] {
|
||||||
|
new Draw_notes() { public void draw_(XYscope xy, int i) { c.draw_C(xy, i); } },
|
||||||
|
new Draw_notes() { public void draw_(XYscope xy, int i) { c_sharp.draw_C_sharp(xy, i); } },
|
||||||
|
new Draw_notes() { public void draw_(XYscope xy, int i) { d.draw_D(xy, i); } },
|
||||||
|
new Draw_notes() { public void draw_(XYscope xy, int i) { d_sharp.draw_D_sharp(xy, i); } },
|
||||||
|
new Draw_notes() { public void draw_(XYscope xy, int i) { e.draw_E(xy, i); } },
|
||||||
|
new Draw_notes() { public void draw_(XYscope xy, int i) { f.draw_F(xy, i); } },
|
||||||
|
new Draw_notes() { public void draw_(XYscope xy, int i) { f_sharp.draw_F_sharp(xy, i); } },
|
||||||
|
new Draw_notes() { public void draw_(XYscope xy, int i) { g.draw_G(xy, i); } },
|
||||||
|
new Draw_notes() { public void draw_(XYscope xy, int i) { g_sharp.draw_G_sharp(xy, i); } },
|
||||||
|
new Draw_notes() { public void draw_(XYscope xy, int i) { a.draw_A(xy, i); } },
|
||||||
|
new Draw_notes() { public void draw_(XYscope xy, int i) { a_sharp.draw_A_sharp(xy, i); } },
|
||||||
|
new Draw_notes() { public void draw_(XYscope xy, int i) { b.draw_B(xy, i); } },
|
||||||
|
};
|
||||||
|
|
||||||
|
int n_point = 30;
|
||||||
|
float x[] = new float[n_point];
|
||||||
|
float y[] = new float[n_point];
|
||||||
|
float rx[] = new float[n_point];
|
||||||
|
float ry[] = new float[n_point];
|
||||||
|
|
||||||
|
void midi_polyphonic_synth(int status, int chan, int value)
|
||||||
|
{
|
||||||
|
boolean swapped = false;
|
||||||
|
|
||||||
|
if (status == -112)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 49; i++)
|
||||||
|
{
|
||||||
|
if (channel[i] < 10)
|
||||||
|
{
|
||||||
|
channel[i] = pow(2, (chan - 69f) / 12) * 440;
|
||||||
|
channel_amp[i] = map(value, 0, 127, 0, 1);
|
||||||
|
channel_amp[i] = 1;
|
||||||
|
adsr_t[i] = 0;
|
||||||
|
t[i] = 0;
|
||||||
|
chan_index[i] = chan;
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
activated_channels++;
|
||||||
|
}
|
||||||
|
if (status == -128)
|
||||||
|
{
|
||||||
|
|
||||||
|
for (int i = 0; i < 49; i++)
|
||||||
|
{
|
||||||
|
if(chan_index[i] == chan && swapped == false)
|
||||||
|
{
|
||||||
|
channel[i] = 0;
|
||||||
|
channel_amp[i] = 0;
|
||||||
|
chan_index[i] = 0;
|
||||||
|
swapped = true;
|
||||||
|
}
|
||||||
|
if (swapped == true)
|
||||||
|
{
|
||||||
|
channel[i] = channel[i + 1];
|
||||||
|
channel_amp[i] = channel_amp[i + 1];
|
||||||
|
chan_index[i] = chan_index[i+1];
|
||||||
|
adsr_t[i] = adsr_t[i + 1];
|
||||||
|
t[i] = t[i + 1];
|
||||||
|
if (channel[i] < 1)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} activated_channels--;
|
||||||
|
}
|
||||||
|
if (status == -80 && chan == 7)
|
||||||
|
{
|
||||||
|
timbre = round(map(value, 1, 128, 0, 4));
|
||||||
|
}
|
||||||
|
if (status == -79 && chan == 7)
|
||||||
|
{
|
||||||
|
filling = int(value * 1.5f);
|
||||||
|
}
|
||||||
|
if (status == -76 && chan == 7)
|
||||||
|
{
|
||||||
|
attack = value;
|
||||||
|
}
|
||||||
|
if (status == -75 && chan == 7)
|
||||||
|
{
|
||||||
|
decay = value;
|
||||||
|
}
|
||||||
|
if (status == -74 && chan == 7)
|
||||||
|
{
|
||||||
|
sustain = log(map(value, 0 , 127, 1, 2.718));
|
||||||
|
}
|
||||||
|
if (status == -73 && chan == 7)
|
||||||
|
{
|
||||||
|
release = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup_polyphonic_synth() {
|
||||||
|
for (int i = 0; i < 49; i++)
|
||||||
|
{
|
||||||
|
channel[i] = 0;
|
||||||
|
channel_amp[i] = 0;
|
||||||
|
chan_index[i] = 0;
|
||||||
|
adsr_t[i] = 0;
|
||||||
|
t[i] = 0;
|
||||||
|
// initialize XYscope with default sound out
|
||||||
|
xy[i] = new XYscope(this);
|
||||||
|
xy[i].freq(0);
|
||||||
|
xy[i].amp(0);
|
||||||
|
xy[i].ellipseDetail(300);
|
||||||
|
genNoiseWave(xy[i]);
|
||||||
|
}
|
||||||
|
for (int i = 0; i < n_point; i++)
|
||||||
|
{
|
||||||
|
rx[i] = random(-200, 100) / 100.0;
|
||||||
|
ry[i] = random(-100, 100) / 100.0;
|
||||||
|
}
|
||||||
|
background(0);
|
||||||
|
setup_star();
|
||||||
|
}
|
||||||
|
|
||||||
|
void draw_polyphonic_synth() {
|
||||||
|
background(0);
|
||||||
|
strokeWeight(2);
|
||||||
|
for (int i = 0; i < activated_channels; i++)
|
||||||
|
{
|
||||||
|
|
||||||
|
xy[i].clearWaves();
|
||||||
|
|
||||||
|
xy[i].freq(channel[i]);
|
||||||
|
if(adsr_t[i] < attack)
|
||||||
|
{
|
||||||
|
xy[i].amp(adsr_t[i] / attack);
|
||||||
|
adsr_t[i]++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
channel_amp[i] = 1f - min((float(adsr_t[i]) - attack) / decay, 1) * (1f - sustain);
|
||||||
|
xy[i].amp(channel_amp[i]);
|
||||||
|
if (min((float(adsr_t[i]) - attack) / decay, 1) < 1)
|
||||||
|
adsr_t[i]++;
|
||||||
|
}
|
||||||
|
t[i]++;
|
||||||
|
draw_notes_array[chan_index[i] % 12].draw_(xy[i], i);
|
||||||
|
xy[i].buildWaves();
|
||||||
|
xy[i].drawAll();
|
||||||
|
}
|
||||||
|
for (int i = activated_channels; i < 49; i++)
|
||||||
|
{
|
||||||
|
adsr_t[i] = 0;
|
||||||
|
xy[i].clearWaves();
|
||||||
|
xy[i].amp(0);
|
||||||
|
xy[i].freq(0);
|
||||||
|
}
|
||||||
|
manage_star();
|
||||||
|
}
|
|
@ -0,0 +1,150 @@
|
||||||
|
void genNoiseWave(XYscope xy) {
|
||||||
|
// set new noiseSeed
|
||||||
|
|
||||||
|
noiseSeed(frameCount);
|
||||||
|
|
||||||
|
// get bufferSize() of output
|
||||||
|
// initialize array for storing values
|
||||||
|
yWave = new float[xy.waveSize()];
|
||||||
|
xWave = new float[xy.waveSize()];
|
||||||
|
float nx = random(1);
|
||||||
|
float ny = random(1);
|
||||||
|
|
||||||
|
// add noise walker to waveform
|
||||||
|
for (int i=0; i<yWave.length; i++) {
|
||||||
|
xWave[i] = noise(nx)*1;
|
||||||
|
yWave[i] = noise(ny)*1;
|
||||||
|
nx+=.01;
|
||||||
|
ny+=.01;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void draw_shape(XYscope xy, int note, int i)
|
||||||
|
{
|
||||||
|
if (timbre == 0)
|
||||||
|
{
|
||||||
|
xy.ellipse(map(note, 0, 11, 2 * width / 15, 13 * width / 15), height / 2, height/5, height/5);
|
||||||
|
for (int j = height / 5; j > filling; j--)
|
||||||
|
{
|
||||||
|
xy.ellipse(map(note, 0, 11, 2 * width / 15, 13 * width / 15), height / 2, j, j);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (timbre == 1)
|
||||||
|
{
|
||||||
|
C_point p0 = new C_point(map(note, 0, 11, 2 * width / 15, 13 * width / 15), height / 2);
|
||||||
|
C_point p1 = new C_point(map(note, 0, 11, 2 * width / 15, 13 * width / 15) + cos(t[i] / 1f) + 150 + noise(t[i] / 100f) * 100f, + sin(t[i] / 1f) + height / 2 + noise(t[i] / 10f) * 100f );
|
||||||
|
C_point p2 = new C_point(map(note, 0, 11, 2 * width / 15, 13 * width / 15) - cos(t[i] / 1f) + 150 * 2, - sin(t[i] / 10f) + 200 + height / 2 + noise(t[i] / 1f) * 100f);
|
||||||
|
C_point p3 = new C_point(map(note, 0, 11, 2 * width / 15, 13 * width / 15), height / 2);
|
||||||
|
|
||||||
|
C_point p4 = new C_point(map(note, 0, 11, 2 * width / 15, 13 * width / 15), height / 2);
|
||||||
|
C_point p5 = new C_point(map(note, 0, 11, 2 * width / 15, 13 * width / 15) - cos(t[i] / 1f) - 150 - noise(t[i] / 100f) * 100f, - sin(t[i] / 1f) + height / 2 - noise(t[i] / 10f) * 100f );
|
||||||
|
C_point p6 = new C_point(map(note, 0, 11, 2 * width / 15, 13 * width / 15) + cos(t[i] / 1f) - 150 * 2, + sin(t[i] / 10f) - 200 + height / 2 - noise(t[i] / 1f) * 100f);
|
||||||
|
C_point p7 = new C_point(map(note, 0, 11, 2 * width / 15, 13 * width / 15), height / 2);
|
||||||
|
xy.beginShape();
|
||||||
|
for (float tt = 0; tt < 1; tt+= 0.01)
|
||||||
|
{
|
||||||
|
C_point pFinal = cubicBezier(p0, p1, p2, p3, tt);
|
||||||
|
C_point pFinal2 = cubicBezier(p4, p5, p6, p7, tt);
|
||||||
|
xy.vertex(pFinal.x, pFinal.y);
|
||||||
|
}
|
||||||
|
xy.endShape();
|
||||||
|
|
||||||
|
xy.beginShape();
|
||||||
|
for (float tt = 0; tt < 1; tt+= 0.01)
|
||||||
|
{
|
||||||
|
C_point pFinal = cubicBezier(p4, p5, p6, p7, tt);
|
||||||
|
xy.vertex(pFinal.x, pFinal.y);
|
||||||
|
}
|
||||||
|
xy.endShape();
|
||||||
|
for (int j = -3; j < 4; j++)
|
||||||
|
{
|
||||||
|
xy.line(map(note, 0, 11, 2 * width / 15, 13 * width / 15)- 200 +j, height / 2 + 200+j, map(note, 0, 11, 2 * width / 15, 13 * width / 15) + 50+j, height / 2 - 50+j);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (timbre == 2)
|
||||||
|
{
|
||||||
|
xy.beginShape();
|
||||||
|
xy.vertex(map(note, 0, 11, 2 * width / 15, 13 * width / 15), height / 2 - height / 4);
|
||||||
|
xy.vertex(map(note, 0, 11, 2 * width / 15, 13 * width / 15), height / 2 + height / 4);
|
||||||
|
xy.vertex(map(note, 0, 11, 2 * width / 15, 13 * width / 15) + height / 2, height / 2 - height / 4);
|
||||||
|
xy.vertex(map(note, 0, 11, 2 * width / 15, 13 * width / 15), height / 2 - height / 4);
|
||||||
|
xy.endShape();;
|
||||||
|
}
|
||||||
|
if (timbre == 3)
|
||||||
|
{
|
||||||
|
xy.ellipse(map(note, 0, 11, 2 * width / 15, 13 * width / 15) + t[i], height / 4, height/10, height/10);
|
||||||
|
xy.beginShape();
|
||||||
|
xy.vertex(map(note, 0, 11, 2 * width / 15, 13 * width / 15) + t[i], height / 4 + height/10);
|
||||||
|
xy.vertex(map(note, 0, 11, 2 * width / 15, 13 * width / 15) + t[i], height / 4 + 2 * height / 6);
|
||||||
|
xy.vertex(map(note, 0, 11, 2 * width / 15, 13 * width / 15) + t[i] + height / 6, height / 4 + height / 2);
|
||||||
|
xy.vertex(map(note, 0, 11, 2 * width / 15, 13 * width / 15) + t[i], height / 4 + 2 * height / 6);
|
||||||
|
xy.vertex(map(note, 0, 11, 2 * width / 15, 13 * width / 15) + t[i] - height / 6, height / 4 + height / 2);
|
||||||
|
xy.vertex(map(note, 0, 11, 2 * width / 15, 13 * width / 15) + t[i], height / 4 + 2 * height / 6);
|
||||||
|
xy.vertex(map(note, 0, 11, 2 * width / 15, 13 * width / 15) + t[i], height / 4 + 1 * height / 6);
|
||||||
|
xy.vertex(map(note, 0, 11, 2 * width / 15, 13 * width / 15) + t[i] + height / 6, height / 4 + 1 * height / 6);
|
||||||
|
xy.vertex(map(note, 0, 11, 2 * width / 15, 13 * width / 15) + t[i], height / 4 + 1 * height / 6);
|
||||||
|
xy.vertex(map(note, 0, 11, 2 * width / 15, 13 * width / 15) + t[i] - height / 6, height / 4 + 1 * height / 6);
|
||||||
|
xy.endShape();
|
||||||
|
}
|
||||||
|
if (timbre == 4)
|
||||||
|
{
|
||||||
|
xy.rect(map(note, 0, 11, 2 * width / 15, 13 * width / 15) - height / 10, height / 2 - height / 10, height/5, height/5);
|
||||||
|
|
||||||
|
for (int j = height / 5; j > filling; j--)
|
||||||
|
{
|
||||||
|
xy.rect(map(note, 0, 11, 2 * width / 15, 13 * width / 15) + filling - j, height / 2 + filling - j, j, j);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface Draw_notes {
|
||||||
|
void draw_(XYscope xy, int i);
|
||||||
|
}
|
||||||
|
|
||||||
|
class C {
|
||||||
|
void draw_C(XYscope xy, int i) { draw_shape(xy, 0, i); }
|
||||||
|
}
|
||||||
|
|
||||||
|
class C_sharp {
|
||||||
|
void draw_C_sharp(XYscope xy, int i) { draw_shape(xy, 1, i); }
|
||||||
|
}
|
||||||
|
|
||||||
|
class D {
|
||||||
|
void draw_D(XYscope xy, int i) { draw_shape(xy, 2, i); }
|
||||||
|
}
|
||||||
|
|
||||||
|
class D_sharp {
|
||||||
|
void draw_D_sharp(XYscope xy, int i) { draw_shape(xy, 3, i); }
|
||||||
|
}
|
||||||
|
|
||||||
|
class E {
|
||||||
|
void draw_E(XYscope xy, int i) { draw_shape(xy, 4, i); }
|
||||||
|
}
|
||||||
|
|
||||||
|
class F {
|
||||||
|
void draw_F(XYscope xy, int i) { draw_shape(xy, 5, i); }
|
||||||
|
}
|
||||||
|
|
||||||
|
class F_sharp {
|
||||||
|
void draw_F_sharp(XYscope xy, int i) { draw_shape(xy, 6, i); }
|
||||||
|
}
|
||||||
|
|
||||||
|
class G {
|
||||||
|
void draw_G(XYscope xy, int i) { draw_shape(xy, 7, i); }
|
||||||
|
}
|
||||||
|
|
||||||
|
class G_sharp {
|
||||||
|
void draw_G_sharp(XYscope xy, int i) { draw_shape(xy, 8, i); }
|
||||||
|
}
|
||||||
|
|
||||||
|
class A {
|
||||||
|
void draw_A(XYscope xy, int i) { draw_shape(xy, 9, i); }
|
||||||
|
}
|
||||||
|
|
||||||
|
class A_sharp {
|
||||||
|
void draw_A_sharp(XYscope xy, int i) { draw_shape(xy, 10, i); }
|
||||||
|
}
|
||||||
|
|
||||||
|
class B {
|
||||||
|
void draw_B(XYscope xy, int i) { draw_shape(xy, 11, i); }
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
PImage carte;
|
||||||
|
|
||||||
|
void setup_radar()
|
||||||
|
{
|
||||||
|
carte = loadImage("carte_size.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
void draw_radar()
|
||||||
|
{
|
||||||
|
int deltaTime = millis() - int(myTime);
|
||||||
|
if (deltaTime < 24000)
|
||||||
|
{
|
||||||
|
strokeWeight(1);
|
||||||
|
noFill();
|
||||||
|
pushMatrix();
|
||||||
|
translate(width / 2, height / 2);
|
||||||
|
float angle = (deltaTime % 62831) / 1000.0;
|
||||||
|
for (int i = 0; i < 600; i++)
|
||||||
|
{
|
||||||
|
stroke(0, 255 * (600 - i) / 600.0, 0);
|
||||||
|
line(0, 0, cos(angle - i / 1000.0) * 300.0, sin(angle - i / 1000.0) * 300.0);
|
||||||
|
}
|
||||||
|
stroke(0, 255, 0);
|
||||||
|
line(0, 0, cos(0) * 300.0, sin(0) * 300.0);
|
||||||
|
line(0, 0, cos(PI / 6) * 300.0, sin(PI / 6) * 300.0);
|
||||||
|
line(0, 0, cos(PI / 3) * 300.0, sin(PI / 3) * 300.0);
|
||||||
|
line(0, 0, cos(PI / 2) * 300.0, sin(PI / 2) * 300.0);
|
||||||
|
line(0, 0, cos(2 * PI / 3) * 300.0, sin(2 * PI / 3) * 300.0);
|
||||||
|
line(0, 0, cos(5 * PI / 6) * 300.0, sin(5 * PI / 6) * 300.0);
|
||||||
|
line(0, 0, cos(PI + 0) * 300.0, sin(PI + 0) * 300.0);
|
||||||
|
line(0, 0, cos(PI + PI / 6) * 300.0, sin(PI + PI / 6) * 300.0);
|
||||||
|
line(0, 0, cos(PI + PI / 3) * 300.0, sin(PI + PI / 3) * 300.0);
|
||||||
|
line(0, 0, cos(PI + PI / 2) * 300.0, sin(PI + PI / 2) * 300.0);
|
||||||
|
line(0, 0, cos(PI + 2 * PI / 3) * 300.0, sin(PI + 2 * PI / 3) * 300.0);
|
||||||
|
line(0, 0, cos(PI + 5 * PI / 6) * 300.0, sin(PI + 5 * PI / 6) * 300.0);
|
||||||
|
circle(0, 0, 600);
|
||||||
|
circle(0, 0, 500);
|
||||||
|
circle(0, 0, 400);
|
||||||
|
circle(0, 0, 300);
|
||||||
|
circle(0, 0, 200);
|
||||||
|
circle(0, 0, 100);
|
||||||
|
popMatrix();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
background(255);
|
||||||
|
image(carte, 130, 0);
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,59 @@
|
||||||
|
// You can also use rawMidi(byte[] data, String bus_name)
|
||||||
|
|
||||||
|
void rawMidi(byte[] data)
|
||||||
|
{
|
||||||
|
int status, chan, value;
|
||||||
|
|
||||||
|
println(data.length + " ");
|
||||||
|
if (data.length == 3)
|
||||||
|
{
|
||||||
|
status = data[0];
|
||||||
|
chan = data[1];
|
||||||
|
value = data[2];
|
||||||
|
if (status == -80 && chan == 64)
|
||||||
|
master_control = 0;
|
||||||
|
if (status == -79 && chan == 64)
|
||||||
|
master_control = 1;
|
||||||
|
if (status == -78 && chan == 64)
|
||||||
|
master_control = 2;
|
||||||
|
if (status == -77 && chan == 64)
|
||||||
|
master_control = 3;
|
||||||
|
if (status == -76 && chan == 64)
|
||||||
|
master_control = 4;
|
||||||
|
if (status == -75 && chan == 64)
|
||||||
|
master_control = 5;
|
||||||
|
if (status == -74 && chan == 64)
|
||||||
|
intro = !intro;
|
||||||
|
if (status == -73 && chan == 64)
|
||||||
|
{
|
||||||
|
player2.play();
|
||||||
|
bruitage_count++;
|
||||||
|
if (bruitage_count % 3 == 0)
|
||||||
|
{
|
||||||
|
player2 = minim.loadFile("decollage_bruitage.mp3");
|
||||||
|
player2.setGain(0);
|
||||||
|
}
|
||||||
|
if (bruitage_count % 3 == 1)
|
||||||
|
{
|
||||||
|
player2 = minim.loadFile("hypervitesse_bruitage.mp3");
|
||||||
|
player2.setGain(-6);
|
||||||
|
}
|
||||||
|
if (bruitage_count % 3 == 2)
|
||||||
|
{
|
||||||
|
player2 = minim.loadFile("moteur_shutdown_bruitage.mp3");
|
||||||
|
player2.setGain(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//if (master_control == 0 || master_control == 1)
|
||||||
|
midi_terrain_generation(status, chan, value);
|
||||||
|
//if (master_control == 2)
|
||||||
|
midi_polyphonic_synth(status, chan, value);
|
||||||
|
//if (master_control == 3)
|
||||||
|
midi_monophonic_synth(status, chan, value);
|
||||||
|
//if (master_control == 3)
|
||||||
|
// midi_newton_fractal(status, chan, value);
|
||||||
|
|
||||||
|
println("status " + status + " chan " + chan + " value " + value);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,81 @@
|
||||||
|
// terrain generation globals
|
||||||
|
|
||||||
|
int tg_cols, tg_rows;
|
||||||
|
int tg_scale = 40;
|
||||||
|
float tg_t = 0;
|
||||||
|
float[][] tg_grid;
|
||||||
|
float tg_speed;
|
||||||
|
float tg_height;
|
||||||
|
Star[] tg_stars = new Star[500];
|
||||||
|
int tg_starfield_speed = 1;
|
||||||
|
|
||||||
|
void midi_terrain_generation(int status, int chan, int value)
|
||||||
|
{
|
||||||
|
if (status == -80 && chan == 7)
|
||||||
|
tg_speed = float(value) / float(10);
|
||||||
|
if (status == -79 && chan == 7)
|
||||||
|
tg_height = (log(128) - log(128 - value)) * float(1000);
|
||||||
|
if (status == -78 && chan == 7)
|
||||||
|
tg_starfield_speed = 1 + value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup_terrain_generation()
|
||||||
|
{
|
||||||
|
tg_cols = width / tg_scale;
|
||||||
|
tg_rows = height / tg_scale;
|
||||||
|
tg_grid = new float[tg_cols + 200][tg_rows + 100];
|
||||||
|
for (int y = -100; y < tg_rows; y++)
|
||||||
|
for (int x = -100; x < tg_cols + 100; x++)
|
||||||
|
{
|
||||||
|
if (x < width/2 - 100 || x > width / 2 + 100)
|
||||||
|
tg_grid[x + 100][y + 100] = noise(float(x) / 5, float(y) / 5) * 1000;
|
||||||
|
else
|
||||||
|
tg_grid[x + 100][y + 100] = 0;
|
||||||
|
}
|
||||||
|
tg_setup_star();
|
||||||
|
}
|
||||||
|
|
||||||
|
void draw_terrain_generation()
|
||||||
|
{
|
||||||
|
background(0);
|
||||||
|
stroke(255, 0, 128);
|
||||||
|
fill(255, 0, 128);
|
||||||
|
noFill();
|
||||||
|
pushMatrix();
|
||||||
|
translate(0, height /2 + tg_height);
|
||||||
|
|
||||||
|
if (tg_height < 4000)
|
||||||
|
{
|
||||||
|
pushMatrix();
|
||||||
|
rotateX(PI / 3);
|
||||||
|
for (int y = -100; y < tg_rows - 1; y++)
|
||||||
|
{
|
||||||
|
beginShape(TRIANGLE_STRIP);
|
||||||
|
for (int x = -100; x < tg_cols + 100; x++)
|
||||||
|
{
|
||||||
|
strokeWeight(1);
|
||||||
|
if ((x < tg_cols/2 - 4 || x > tg_cols / 2 + 4))
|
||||||
|
{
|
||||||
|
stroke(100 * 255 / tg_grid[x + 100][y + 100], 0, 100 * 128 / tg_grid[x + 100][y + 100] + abs(tg_t % 512 - 255));
|
||||||
|
vertex(x * tg_scale, y * tg_scale, tg_grid[x + 100][y + 100]);
|
||||||
|
stroke(100 * 255 / tg_grid[x + 100][y + 100], 0, 100 * 128 / tg_grid[x + 100][y + 1 + 100] + abs(tg_t % 512 - 255));
|
||||||
|
vertex(x * tg_scale,(y + 1) * tg_scale, tg_grid[x + 100][y + 1 + 100]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stroke(0, 100 * 255 / tg_grid[x + 100][y + 100], 100 * 128 / tg_grid[x + 100][y + 100] + abs(tg_t % 512 - 255));
|
||||||
|
vertex(x * tg_scale, y * tg_scale, 0);
|
||||||
|
stroke(0, 100 * 255 / tg_grid[x + 100][y + 100], 100 * 128 / tg_grid[x + 100][y + 1 + 100] + abs(tg_t % 512 - 255));
|
||||||
|
vertex(x * tg_scale,(y + 1) * tg_scale, 0);
|
||||||
|
}
|
||||||
|
tg_grid[x + 100][y + 100] = noise((float(x)) / 5, (y + tg_t) / 5) * 300;
|
||||||
|
}
|
||||||
|
endShape();
|
||||||
|
}
|
||||||
|
popMatrix();
|
||||||
|
}
|
||||||
|
translate(0, -height * 7.5);
|
||||||
|
tg_manage_star();
|
||||||
|
popMatrix();
|
||||||
|
tg_t -= tg_speed;
|
||||||
|
}
|
Binary file not shown.
Loading…
Reference in New Issue