Program Your 808 by Rob Ricketts:
A series of informative posters detailing how some of the most notable drum sequences were programmed using the Roland TR-808 Drum Machine. Each sequence has been analyzed and represented as to allow users to re-programme each sequence, key for key.
(via trraxxx)
Here’s another entry for the bus tops project, an asteroid clone, I ran out of time to give the poor bloke in the spaceship the ability to either shoot lasers or move so he is cast adrift and doomed.
http://www.openprocessing.org/collections/?collectionID=1337
http://bus-tops.com
I suspect that there is a far more elegant way of doing this and it took me a while to work out why I kept bouncing over the array boundaries but this piece of code takes a video and splits into two separate (moving) images. Effectively it sends the data in the video file to two different parts on the screen.
import processing.video.*; Movie splitMovie; boolean newFrame = false; int window_height = 300; int window_width = 400; int video_height = 240; int video_width = 320; PImage img1 = new PImage(video_width/2, 2*video_height); PImage img2 = new PImage(video_width/2, 2*video_height); void setup() { size(window_width, window_height, P2D); background(0); //load movie splitMovie = new Movie(this, "Database1984.mp4", 30); splitMovie.loop(); } void movieEvent(Movie splitMovie) { //read next frame splitMovie.read(); newFrame = true; } void draw() { if (newFrame) { img1.loadPixels(); img2.loadPixels(); //image pixel counters int im1counter = 0; int im2counter = 0; //for each line in video for (int j = 0; j//read pixel for each first half of video for (int i = 0; i//set corresponding image pixels img1.pixels[im1counter] = splitMovie.pixels[(j*video_width)+i]; im1counter++; } } for (int j = 0; jfor (int i = video_width/2; i < video_width; i++) { img2.pixels[im2counter] = splitMovie.pixels[(j*video_width)+i]; im2counter++; } } img1.updatePixels(); img2.updatePixels(); image(img1,10,10); image(img2,15+(video_width/2),20); } }