Control

Flexible Framework

  • Transmitters send signals into the network
  • Receivers accept signals from the network
  • Input → Transmitter → Network
  • Network → Receiver → Output
  • Both can be extended and modified
  • Flexibility allows for experimentation

Software

  • Built with Processing (+ Eclipse)
  • Can utilise other software
    • Mother (VJ software)
    • Praxis (media pipelining)
  • Transmitter can be written in almost
    any language and for almost any device
Processing logo by Woodmath under CC BY 3.0 - http://www.cc.gatech.edu/grads/w/wmanzoul/portfolio_images/ProcessingLogo.png

Hardware

  • Scalable
  • Any number of recievers
  • Any number of transmitters

Influences/Aims/Possible Uses

Experiments


/**
  * Randomly coloured audio monitor
  * Code based on example code from Minim documentation which can be found at
  * http://code.compartmental.net/minim/audioinput_class_audioinput.html
  */

import ddf.minim.*;

Minim minim;
AudioInput in;

void setup()
{
  size(displayWidth, displayHeight, P3D);

  minim = new Minim(this);
  
  // use the getLineIn method of the Minim object to get an AudioInput
  in = minim.getLineIn();
}

void draw()
{
  background(0);
  stroke(255);
  
  
  // draw the waveforms so we can see what we are monitoring
  for(int i = 0; i < in.bufferSize() - 1; i++)
  {
    float percent = (float)i / (float)in.bufferSize();
    float getLeft = in.left.get(i);
    float getRight = in.right.get(i);
    
    
    
    //stroke(random(getLeft*500), random(getLeft*500), random(getLeft*500));
    line( percent*width, height*0.25 + getLeft*400, percent*width+1, height*0.25 + getLeft*200 );
    line( percent*width, height*0.50 + getLeft*400, percent*width+1, height*0.55 + getLeft*200 );
    line( percent*width, height*0.75 + getRight*400, percent*width+1, height*0.75 + getRight*200 );
  }
  
  String monitoringState = in.isMonitoring() ? "enabled" : "disabled";
  //text( "Input monitoring is currently " + monitoringState + ".", 5, 15 );
}

void keyPressed()
{
  if ( key == 'm' || key == 'M' )
  {
    if ( in.isMonitoring() )
    {
      in.disableMonitoring();
    }
    else
    {
      in.enableMonitoring();
    }
  }
}
						

Timeline

  • September - Prototype Transmitter/Reciever
  • October - Prototype Transmitter/Reciever
  • November - Ensure extensibility
  • December - Experimentation: Transmitters (Inputs)
  • January - Experimentation: Recievers (Visuals)
  • February - Refine successful experiments
  • March - Refine
  • April - Complete