Hi, guys I'm new on the forum, Im trying to figure out how to change the delay time as a variable that is controllable and changeable live.
Above is an art work I did and trying to improve. The next step would be to take a external input(sonic rangefinder) to control the delay time. Hence I am looking for some pointer as to where to begin the process.
Thank you guys! Below is the original code I used and found on the previous processing forum.
Original code by rrrufusss, modified by Henrik G. Sundt.
- import processing.video.*;
- Capture maCam;
- VideoBuffer monBuff;
- int display_xsize = 1440; // display size
- int display_ysize = 900;
- int capture_xsize = 320; // capture size
- int capture_ysize = 240;
- int delay_time = 30; // delay in seconds
- int capture_frames = 30; // capture frames per second
- void setup() {
- size(display_xsize,display_ysize, P3D);
- // Warning: VideoBuffer must be initiated BEFORE capture- or movie-events start
- monBuff = new VideoBuffer(delay_time*capture_frames, capture_xsize,capture_ysize);
- maCam = new Capture(this, capture_xsize, capture_ysize, capture_frames);
- }
- void captureEvent(Capture maCam) {
- maCam.read();
- monBuff.addFrame( maCam );
- }
- void draw() {
- PImage bufimg = monBuff.getFrame();
- PImage tmpimg = createImage(bufimg.width,bufimg.height,RGB);
- tmpimg.copy(bufimg,0,0,bufimg.width,bufimg.height,0,0,bufimg.width,bufimg.height);
- tmpimg.resize(display_xsize,display_ysize);
- image( tmpimg, 0, 0 );
- }
- class VideoBuffer
- {
- PImage[] buffer;
- int inputFrame = 0;
- int outputFrame = 0;
- int frameWidth = 0;
- int frameHeight = 0;
- /*
- parameters:
- frames - the number of frames in the buffer (fps * duration)
- width - the width of the video
- height - the height of the video
- */
- VideoBuffer( int frames, int width, int height )
- {
- buffer = new PImage[frames];
- for(int i = 0; i < frames; i++)
- {
- this.buffer[i] = new PImage(width, height);
- }
- this.inputFrame = frames - 1;
- this.outputFrame = 0;
- this.frameWidth = width;
- this.frameHeight = height;
- }
- // return the current "playback" frame.
- PImage getFrame()
- {
- int frr;
- if(this.outputFrame>=this.buffer.length)
- frr = 0;
- else
- frr = this.outputFrame;
- return this.buffer[frr];
- }
- // Add a new frame to the buffer.
- void addFrame( PImage frame )
- {
- // copy the new frame into the buffer.
- System.arraycopy(frame.pixels, 0, this.buffer[this.inputFrame].pixels, 0, this.frameWidth * this.frameHeight);
- // advance the input and output indexes
- this.inputFrame++;
- this.outputFrame++;
- // wrap the values..
- if(this.inputFrame >= this.buffer.length)
- {
- this.inputFrame = 0;
- }
- if(this.outputFrame >= this.buffer.length)
- {
- this.outputFrame = 0;
- }
- }
- }
1