“indeterminacy” in Monteverdi
July 9, 2010 | Filed Under Blog | Leave a Comment
Monteverdi wrote instructions in his “Sfogava con le stella” indicating the singers to figure out the rhythm themselves (sort of like sprechstimme).
Interning Currents2010 (video art show) – a documentation
July 8, 2010 | Filed Under Blog, video art | Leave a Comment
A few weeks ago, I packed my car and drove from Denton, TX to Santa Fe, NM to help setup Currents2010, a video art gallery open to the public for almost 10 days (June 18-27). During its opening, 2000 people traveled through the free exhibit to see video art from the available 82 artists’ work presented.
I arrived to Santa Fe Sunday evening (June 13). Monday morning, Jordan Glazer, a colleague and fellow intern, and I met our professor, David Stout, and the other member of the Noisefold duo, Cory Metcalf, at the Center for Contemporary Arts (photo) where they rehearsed for their June 19th concert. We promptly drove to El Museo Cultural de Santa Fe to get acquainted with the volunteers setting up Currents2010 and begin work. It was apparent right off that the artists and volunteers setting up the show had an incredible work ethic and were all very friendly and courteous. I came to find out a few days later, while interviewing Mariannah Amster and Frank Ragano (the curators of Currents2010 and founders of Parallel Studios), that the kind atmosphere was not a product of chance. Frank and Mariannah explained that they did not include artists in the show solely based on their work. They received enough entries through Rhizome that they made it a point to know an artist personally, via email and Skype, before accepting them into the show. Frank and Mariannah find it very important to keep personal contact with each person involved in their projects: everyone is treated equally (volunteers, exhibit visitors, artists, etc.) which means emails, phone calls, texts, etc. are always answered immediately = everyone is important. Because Currents2010 had a very limited budget and most artists would be traveling to Santa Fe to setup their own work, Frank and Mariannah wanted to make sure everyone would get along well and have an enjoyable time together. Frank has no problem with words like “entertainment” and “fun” as other “snooty” (that was my word) artist may. The point of putting on a show like Currents2010 is to provide entertainment (a good time!) in addition to education, so people enjoy themselves while experiencing new things.
In the interview with Frank and Mariannah, we got into a conversation about the current art world. They are both interested in changing the current mentality of the stereotypical art world by providing another option. That conversation made the distinction between many of the galleries I had visited during my stay in Santa Fe. It is sad that some organizations cater to donors and put on an air of elitism. Art can easily become a privileged “object” reserved for the rich and scholarly rather than for all to experience and enjoy. I was blown off at one gallery by an artist that obviously thought I was an inferior, but I felt very welcome at other galleries (such as meow wolf) that seemed excited to have a “the public” visit their work.
I was fortunate to talk to many artists and organizers like Frank and Mariannah during my time in Santa Fe, but Monday morning (June 14) Jordan and I began to setup our own professor’s work, and installation piece by Stout and Metcalf called “iIi“. One of the best parts of my Santa Fe experience was seeing how different artists and builders displayed the work. Frank, an artist and contractor, had devised an idea of hanging projectors from the 22-foot ceiling using metal piping supported by c-clamping a mount he welded to the building’s frame. Frank generously gave Jordan and I three of the welded mounts, but we had to go to the hardware store for pipe and c-clamps. Because he specially made wooden plates to mount any projector mount on allow for the placement of a DVD player above the projector (photo), we had to come up with another solution for our projectors: a simple plastic PVC pipe adapter attached to our proprietary projector mounts (photo).
Once “iIi” was installed and VGA cable problems were troubleshot, Jordan and I began helping install other works by running power and audio cables, hanging projectors and screens, and painting walls and divisions. It was helpful to me, as someone looking toward curating one day, to see and work with many artists’ solutions to material onto which to project. Three artists chose to project onto material that could be viewed from either side, a great solution to an open space such as that of El Museo: Jim Coker’s “Kingfisher” (photo), the Vasulkas’ and Rob Shaw’s “untitled” (photo), and Carlisle’s and Hamilton’s “Displacements” (photo). Many of the artists’ work were projected onto gator board (a thick, very reflective foam core board), which could be cut to fit most of the artists’ needs (here is an example: Hisao Ihara’s “Continuum” during installation). One of the most interesting materials on which an artist projected was glass. Robert Campbell projected onto five glass circles hung in a row with matte rings forming what looked like a target (photo of installing the work, photo with projections). Campbell’s work was very compelling and memorizing to watch. One needs to get a full explanation of the work from Campbell’s point of view in order to fully realize it (it has to do with genetics and yellow florescent proteins). Another interesting method of projection was seen in Robert Drummond’s work “Projection Anaphoric” in which he projected from the ceiling (photo) onto the floor (photo). What the viewer sees is a morphed video on the floor corrected visually by a cylindrical mirror (photo).
Overall, I was able to see a larger variety of video art than I had ever seen before. Frank and Mariannah expressed to me that they consciously decided not to give Currents2010 a theme so they could present a large variety of works. I would have liked to have seen more interactive works; the two Currents2010 did have, Dr. Whoohoo!‘s “Walking Threw Dandelions” (photo) and the Vasulka’s “untitled” (photo), were great pieces and the virtual graffiti (photo) outside was a great touch though. One could spend hours in the Currents2010 exhibit trying to view all the works. Not only were there a few projectors showing more than one work such as Hillerbrand+Magsamen’s “Four Place Setting” (photo), but there were screening rooms (photo) showing single channel works ranging from those of high school students to those of professional video artists. The unique and inspiring ideas, such as Novakova’s prisms (photo) and David Webber’s cathode ray four channel piece (photo), provided an additional angle to video art to soak in.
If you want to get a better feel for what Currents2010 was like, go through my flickr album embedded above. I included the map of the exhibit and reference the letter labels on the map in my descriptions below each picture when applicable.
For my own record and further study: Some artists I talked to during my stay told me to look up the following = Gary Hill (video artist), David Jones (video synth), Janet Cardiff (sound installation), artbots (art robot competition), Koyaanisqatsi (Philip Glass film), Joanne Lefrak (scratched glass), Douglas Henderson (sound artist), Michael Snow (tracking shot), Patrick Wilkanowski (longue ???), and David Lynch (specifically Mulholland Drive).
My next project
April 2, 2010 | Filed Under Blog | Leave a Comment
I think I am going to make a video switcher for composite video. I want to switch between multiple video cameras that have composite outputs (using an arduino) and send their signals to my computer so I can manipulate them live with Isadora. Here is the IC I think I’m going the try – the circuit looks simple:

recycled sound setup
March 22, 2010 | Filed Under Blog, Installation Art, Music Composition, Sound Sculpture, physical computing | Leave a Comment
[I will edit this post soon to be more detailed]
I am posting my scratchy sketch of the pitches I am using for Recycled Sound. Click on the picture to see a larger version. Branches with two notes means it will alternate between the two pitches (it should should like it is always progressing between two chords). The purple wiggly lines indicate the ratchet sound makers.

Here is a picture of the electronics and the sound makers in a very small version of the circle they will be in:

construction of sounds for Recycled Sound
March 22, 2010 | Filed Under Blog, Installation Art, Music Composition, Sound Sculpture, physical computing | Leave a Comment
Here are some pictures of the construction of the “sound makers” for Recycled Sound. I took apart an old set of student bells (used by junior high students learning to play keyboard percussion) and constructed something to hold a motor with a chain attached. When the motor turns, the chain hits the bell (it sounds like an old telephone – but specifically pitched). The other objects I made sound like a very loud ratchet. The pipe extension amplifies the sound (they do not really have any particular pitch). Other motors with chains will be mounted to the sculptures Jonathon is making – they should all sound a bit different.






new batteries!
March 9, 2010 | Filed Under Blog, Installation Art, Sound Sculpture, physical computing | Leave a Comment
I just bought 12 great batteries (Werker 12V 7.5ah) from BatteriesPlus for only $15/each — that’s over half off! Thank you BatteriesPlus! I’ll be charging the batteries in parallel using the Schumacher 2/4/6 Speed Charge. I put a picture below of how to charge in parallel (the guy at BatteriesPlus said to think of a ladder to remember it = great tip).



wireless RF Arduino with digital compass
February 6, 2010 | Filed Under Blog, Installation Art, Sound Sculpture, physical computing | Leave a Comment
I just wrote and tried out the code with hardware for wireless (RF) transmitting from an Arduino with a digital compass to other arduinos with LEDs.
Here is the code for the transmitter (sending to 3 different Arduinos). The code is set up (the x and y variables) to only send a message out for a given degree range once . . . so you must go to another degree range and come back for the message to be sent again from a given degree range. This insures that LEDs (or solenoids in the instance of my installation work) are not continuously fired when the compass is left facing one direction with no one around turning it.
#include <Wire.h>
#include <VirtualWire.h> // http://www.open.com.au/mikem/arduino/VirtualWire-1.4.zip
int HMC6352Address = 0x42;
// This is calculated in the setup() function
int slaveAddress;
int ledPin = 13;
boolean ledState = false;
byte headingData[2];
int i, headingValue;
int x = 0;
int y = 0;
void setup()
{
//digital compass setup
// Shift the device's documented slave address (0x42) 1 bit right
// This compensates for how the TWI library only wants the
// 7 most significant bits (with the high bit padded with 0)
slaveAddress = HMC6352Address >> 1; // This results in 0x21 as the address to pass to TWI
//Serial.begin(9600);
pinMode(ledPin, OUTPUT); // Set the LED pin as output
Wire.begin();
//transmitter setup
vw_setup(2000); // Bits per sec
}
void loop()
{
// Flash the LED on pin 13 just to show that something is happening
// Also serves as an indication that we're not "stuck" waiting for TWI data
ledState = !ledState;
if (ledState) {
digitalWrite(ledPin,HIGH);
}
else
{
digitalWrite(ledPin,LOW);
}
// Send a "A" command to the HMC6352
// This requests the current heading data
Wire.beginTransmission(slaveAddress);
Wire.send("A"); // The "Get Data" command
Wire.endTransmission();
delay(10); // The HMC6352 needs at least a 70us (microsecond) delay
// after this command. Using 10ms just makes it safe
// Read the 2 heading bytes, MSB first
// The resulting 16bit word is the compass heading in 10th's of a degree
// For example: a heading of 1345 would be 134.5 degrees
Wire.requestFrom(slaveAddress, 2); // Request the 2 byte heading (MSB comes first)
i = 0;
while(Wire.available() && i < 2)
{
headingData[i] = Wire.receive();
i++;
}
headingValue = headingData[0]*256 + headingData[1]; // Put the MSB and LSB together
/*
Serial.print("Current heading: ");
Serial.print(int (headingValue / 10)); // The whole number part of the heading
Serial.print(".");
Serial.print(int (headingValue % 10)); // The fractional part of the heading
Serial.println(" degrees");
*/
headingValue = (int (headingValue / 10));
//Serial.println(int (headingValue)); //debugging
const char *mymessage = "Z";
if ((headingValue >= 1) && (headingValue <= 179)){
mymessage = "A";
y = 1;
}
else if ((headingValue >= 180) && (headingValue <= 250)){
mymessage = "B";
y = 2;
}
else {
mymessage = "C";
y = 3;
}
if (x != y){
digitalWrite(13, true); // turn on LED to show transmitting
vw_send((uint8_t *)mymessage, strlen(mymessage)); // transmit message
vw_wait_tx(); // Wait until the whole message is gone
digitalWrite(13, false); // turn off LED to show transmitting is done
x = y;
//Serial.println(mymessage); //debugging
}
else{
}
delay(100); //not sure how short I can make this yet???
}
=======================================================
Here is the code for the receivers (change what is commented out, ‘A’, ‘B’, or ‘C’ message at the end, according to which of the three Arduinos you load the sketch up to):
// receiver.pde
#include <VirtualWire.h> // http://www.open.com.au/mikem/arduino/VirtualWire-1.4.zip
char inString[32];
int inCount;
void setup()
{
pinMode(9, OUTPUT); // sets the LED pin to be an output
////// serial code is commented out because this application does //////
////// not require a computer - remove comment to send to computer //////
//Serial.begin(9600);
//Serial.println("setup");
vw_setup(2000); // Bits per sec
vw_rx_start(); // Start the receiver PLL running
}
void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
inCount = 0;
if (vw_get_message(buf, &buflen)) // Non-blocking
{
int i;
digitalWrite(13, true); // turn on LED to show received good message
// Message with a good checksum received, dump it.
//Serial.print("Got: ");
for (i = 0; i < buflen; i++)
{
//Serial.print(buf[i]);
//Serial.print(" ");
inString[inCount] = buf[i];
inCount++;
}
//Serial.println("");
////// if statements comparing incoming message //////
////// comment out letters for different sculptures //////
/*
if (strcmp(inString, "A") == 0){
digitalWrite(9, true);
delay (500);
digitalWrite(9, false);
}
if (strcmp(inString, "B") == 0){
digitalWrite(9, true);
delay (500);
digitalWrite(9, false);
}
*/
if (strcmp(inString, "C") == 0){
digitalWrite(9, true);
delay (500);
digitalWrite(9, false);
}
digitalWrite(13, false); // turn off LED to show done
}
}
First draft of the installation
January 31, 2010 | Filed Under Blog, Installation Art | Leave a Comment
Jonathan just completed the first draft of what we project the installation to look like (click on the picture to see a larger version):
digital compass and arduino – HMC6352 from Sparkfun.com
January 31, 2010 | Filed Under Blog, Installation Art | Leave a Comment
I’ll clean this post up more later – I’m using it more as notes to myself right now.
I hooked up the HMC6352 digital compass from Sparkfun using a voltage divider in order to get it 3.3v from the 5v supply from the arduino. I used my multimeter and tried a number of different resistors. I came up with using the following:
5V
|
10K resistor
|
=========== about 3.3V output
|
10K resistor
5.6K resistor
5.6K resistor
|
GND
I used this great website to wire up the unit (SDA to arduino analog pin 4 and SCL to arduino analog pin 5). I used the code posted on the site and it worked great (I posted it below). Next, I will include the code in my transmitter code and translate degrees to trigger the sculptures.
#include <Wire.h>
int HMC6352Address = 0x42;
// This is calculated in the setup() function
int slaveAddress;
int ledPin = 13;
boolean ledState = false;
byte headingData[2];
int i, headingValue;
void setup()
{
// Shift the device's documented slave address (0x42) 1 bit right
// This compensates for how the TWI library only wants the
// 7 most significant bits (with the high bit padded with 0)
slaveAddress = HMC6352Address >> 1; // This results in 0x21 as the address to pass to TWI
Serial.begin(9600);
pinMode(ledPin, OUTPUT); // Set the LED pin as output
Wire.begin();
}
void loop()
{
// Flash the LED on pin 13 just to show that something is happening
// Also serves as an indication that we're not "stuck" waiting for TWI data
ledState = !ledState;
if (ledState) {
digitalWrite(ledPin,HIGH);
}
else
{
digitalWrite(ledPin,LOW);
}
// Send a "A" command to the HMC6352
// This requests the current heading data
Wire.beginTransmission(slaveAddress);
Wire.send("A"); // The "Get Data" command
Wire.endTransmission();
delay(10); // The HMC6352 needs at least a 70us (microsecond) delay
// after this command. Using 10ms just makes it safe
// Read the 2 heading bytes, MSB first
// The resulting 16bit word is the compass heading in 10th's of a degree
// For example: a heading of 1345 would be 134.5 degrees
Wire.requestFrom(slaveAddress, 2); // Request the 2 byte heading (MSB comes first)
i = 0;
while(Wire.available() && i < 2)
{
headingData[i] = Wire.receive();
i++;
}
headingValue = headingData[0]*256 + headingData[1]; // Put the MSB and LSB together
Serial.print("Current heading: ");
Serial.print(int (headingValue / 10)); // The whole number part of the heading
Serial.print(".");
Serial.print(int (headingValue % 10)); // The fractional part of the heading
Serial.println(" degrees");
delay(500);
}
cheap wireless RF communication; arduino to arduino = switch to LED
January 24, 2010 | Filed Under Blog, Installation Art | 4 Comments
A week ago, I got the cheap wireless rf transmitter / receiver pair (from sparkfun) to work very well using VirtualWire.h library (pdf). I think I got it to transmitted from one arduino to another up to about 300 feet (according to what it looked like on Google Maps).
It is very simple to wire up. The switches attached to digital pin 9 and 10 have a 220ohm resister between the digital pin and ground – then one wire from the switch goes to the digital pin and the other goes to 5V. The receiver and transmitter are wired as follows. Someone said to connect the data pins together, but it works great as shown below (I think Tom Igoe explains that the data pins are different, the one I leave untouched can be used in different applications).
Here is the code I adapted for the transmitter (from the VirtualWire.h library examples). Make sure you add a greater than < and a less than > symbol around VirtualWire.h in the beginning of the code (the plugin I’m using to display code will not let me add them ???):
// transmitter.pde
#include VirtualWire.h // http://www.open.com.au/mikem/arduino/VirtualWire-1.4.zip
int switchPin1 = 9; // switch connected to digital pin 2
int switchValue1; // a variable to keep track of when switch is pressed
int switchPin2 = 10; // switch connected to digital pin 2
int switchValue2; // a variable to keep track of when switch is pressed
void setup()
{
pinMode(switchPin1, INPUT); // sets the switchPin to be an input
digitalWrite(switchPin1, HIGH); // sets the default (unpressed) state of switchPin to HIGH
pinMode(switchPin2, INPUT); // sets the switchPin to be an input
digitalWrite(switchPin2, HIGH); // sets the default (unpressed) state of switchPin to HIGH
vw_setup(2000); // Bits per sec
}
void loop()
{
////// check switch1 //////
const char *mymessage1 = "B";
// check to see if the switch1 is pressed
switchValue1 = digitalRead(switchPin1);
if(switchValue1 == LOW) {
mymessage1 = "Y";
}
else {
mymessage1 = "N";
}
digitalWrite(13, true); // turn on LED to show transmitting
vw_send((uint8_t *)mymessage1, strlen(mymessage1)); // transmit message
vw_wait_tx(); // Wait until the whole message is gone
digitalWrite(13, false); //turn off LED to show tranmitting is done
////// check switch2 //////
const char *mymessage2 = "C";
// check to see if the switch2 is pressed
switchValue2 = digitalRead(switchPin2);
if(switchValue2 == LOW) {
mymessage2 = "Z";
}
else {
mymessage2 = "O";
}
digitalWrite(13, true); // turn on LED to show transmitting
vw_send((uint8_t *)mymessage2, strlen(mymessage2)); // transmit message
vw_wait_tx(); // Wait until the whole message is gone
digitalWrite(13, false); // turn off LED to show transmitting is done
// I still need to do some more research as to how often it can check the state
// of the switch . . . how often can it transmitt? baud rate limits?
delay(200);
}Here is the code I adapted for the reciever (from the VirtualWire.h library examples). Make sure you add a greater than < and a less than > symbol around VirtualWire.h in the beginning of the code (the plugin I’m using to display code will not let me add them ???):
// receiver.pde
#include VirtualWire.h // http://www.open.com.au/mikem/arduino/VirtualWire-1.4.zip
char inString[32];
int inCount;
void setup()
{
pinMode(9, OUTPUT); // sets the LED pin to be an output
pinMode(10, OUTPUT); // sets the LED pin to be an output
////// serial code is commented out because this application does //////
////// not require a computer - remove comment to send to computer //////
//Serial.begin(9600);
//Serial.println("setup");
vw_setup(2000); // Bits per sec
vw_rx_start(); // Start the receiver PLL running
}
void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
inCount = 0;
if (vw_get_message(buf, &buflen)) // Non-blocking
{
int i;
digitalWrite(13, true); // turn on LED to show received good message
// Message with a good checksum received, dump it.
//Serial.print("Got: ");
for (i = 0; i < buflen; i++)
{
//Serial.print(buf[i]);
//Serial.print(" ");
inString[inCount] = buf[i];
inCount++;
}
//Serial.println("");
////// if statements comparing incoming message //////
if (strcmp(inString, "N") == 0){
digitalWrite(10, true);
}
if (strcmp(inString, "Y") == 0){
digitalWrite(10, false);
}
if (strcmp(inString, "O") == 0){
digitalWrite(9, true);
}
if (strcmp(inString, "Z") == 0){
digitalWrite(9, false);
}
digitalWrite(13, false); // turn off LED to show done
}
}It is easy to get the arduinos to react differently depending on what you put in the end of the reciever code. For example, one receiver arduino could have the following code, which would light an LED on pin10 if switch1 were depressed:
////// if statements comparing incoming message //////
if (strcmp(inString, "N") == 0){
digitalWrite(10, true);
}
if (strcmp(inString, "Y") == 0){
digitalWrite(10, false);
}
digitalWrite(13, false); // turn off LED to show done
}
}The other receiver arduino could have the following code, which would light an LED on pin10 if switch2 were depressed:
////// if statements comparing incoming message //////
if (strcmp(inString, "O") == 0){
digitalWrite(10, true);
}
if (strcmp(inString, "Z") == 0){
digitalWrite(10, false);
}
digitalWrite(13, false); // turn off LED to show done
}
}The following pix show me pressing switch1 and switch2 (I’m using arduinos on breadboards and a Duemilanove):



