Serial Quicktime Movie Controller

This Processing sketch controls the playback of a Quicktime movie using serial data. To use it, send a serial value from 0 – 255. The movie position will be set based on that value. 0 = beginning of movie, 255 = end of movie. It doesn’t matter what’s sending the serial data, as long as the value is between 0 and 255.

 Serial Movie controller 
 Language: Processing
 Reads a value from 0 - 255 from the serial port.  Then uses that 
 value to control playback of a quicktime movie.
 by Tom Igoe
 Created 8 Oct. 2006

import processing.serial.*;

Serial myPort;        // The serial port
int sensorValue;      // value of the byte received

Movie myMovie;        // variable to store an instance of the movie library
float movieDuration;  // duration of the movie you're using

void setup() {
  // set the window size:

  // List all the available serial ports

  // I know that the first port in the serial list on my mac
  // is always my  Arduino module, so I open Serial.list()[0].
  // Change the 0 to the appropriate number of the serial port
  // that your microcontroller is attached to.
  myPort = new Serial(this, Serial.list()[0], 9600);

  // set the framerate for this sketch:

  // fill in your own movie here.  Place it in a folder called "Data"
  // inside your sketch folder:
  myMovie = new Movie(this, "");
  // get the movie duration:
  movieDuration = myMovie.duration();

void draw() {

  // if there's a movie to read, read it:
  if(myMovie.available()) {;

  // calculate the movie position based on the value from the sensor.
  // the sensor value can range from 0 - 255, so dividing the sensorValue
  // by 255 and multiplying by the duration always gives some fraction of
  // the total movie duration:
  float moviePosition = ((float)sensorValue / (float)255) * movieDuration;

  // jump to the calculated movie position:

  // draw the movie:
  image(myMovie, 0, 0);

// serialEvent  method is run automatically by the Processing applet
// whenever the buffer reaches the  byte value set in the bufferUntil() 
// method in the setup():

void serialEvent(Serial myPort) { 
  // read the serial buffer:
  sensorValue =;

Here’s a simple Wiring/Arduino program to send data to this Processing program. Attach a potentiometer or other analog sensoe to analog input 0:

void setup() {
   // open the serial port at 9600 bits per second:

void loop() {
   // read the potentiometer, reduce the range to 0 - 255 by dividing by 4:
   int analogValue = analogIn(0) /4;

   // send the value out the serial port:
   Serial.print(analogValue, BYTE);
   // delay 10 milliseconds so the analog to digital converter settles: