cerberus-kinect

This commit is contained in:
gbrochar 2021-01-03 12:41:06 +01:00
parent 5181c26289
commit 0ab81136c3
1 changed files with 68 additions and 0 deletions

View File

@ -0,0 +1,68 @@
import org.openkinect.processing.*;
import processing.sound.*;
SinOsc sinex;
SinOsc siney;
SinOsc sinez;
float freqx;
float freqy;
float freqz;
float amp = 1;
Kinect kinect;
void setup()
{
size(640,480);
kinect = new Kinect(this);
kinect.initDepth();
kinect.initVideo();
kinect.enableIR(false);
textSize(32);
sinex = new SinOsc(this);
siney = new SinOsc(this);
sinez = new SinOsc(this);
}
void draw()
{
background(0);
int[] depth = kinect.getRawDepth();
int step = 1;
int point_count = 0;
float depth_avg = 0;
float x_avg = 0;
float y_avg = 0;
noStroke();
loadPixels();
for (int x = 0; x < 640; x+=step)
for (int y = 0; y < 480; y+=step)
{
int c = (depth[x + y * 640] / 4);
if (depth[x + y * 640] > 0 && depth[x + y * 640] < 900)
{
point_count++;
depth_avg += depth[x + y * 640];
x_avg += x;
y_avg += y;
}
else
c = 0;
pixels[x + y * 640] = color(c,0,0);
}
if (point_count > 3000)
{
depth_avg /= point_count;
x_avg /= point_count;
y_avg /= point_count;
amp = 1;
freqx = (1 - (x_avg / 640)) * (62 - 28.5) + 28.5;
freqy = (1 - (y_avg / 240)) * (62 - 28.5) + 28.5;
freqz = map(constrain(depth_avg / 900, 0, 1), 0, 1, 30, 60);
}
else
amp = 0;
sinex.play(freqx, amp, 0, -1);
siney.play(freqy, amp, 0, -1);
sinez.play(freqz, amp, 0, -1);
updatePixels();
}