Thursday
The Day Before
The Build
I have, therefore, started to build and intend to test after this.
I spent a few days in the workshop building pillars for the loop to run off and also building mounts for the servo's to be placed on. They are all fairly simple and I tried to create them with a 'rough and ready' aesthetic, appropriate to my installation.




Tape Loop
This might be a bit of a problem in terms of pulling and putting too much strain on the tape, causing it to distort or become jammed in the tape head. Instead of using a four corner square, which I originally intended to do, I will now loop it as demonstrated in the sketch below:
With this shape, it will hopefully give the tape more support and avoid any nasty accidents!
Here is a video of the tape loop running, in J1.17 using pillars of wood with reels attached to them.
I am pleased with the overall aesthetic of the loop however, there is something almost theatrical about the movement of it, adding another dimension to the sound, an ability to view it as a material object. This is often what fascinates me about older technology, they are extremely hands on and allow for all sorts of experimentation.
Tape recording
Here is the tape player in action (but with some tape I bought from a car boot sale):
Final Sound Piece
I am also particularly pleased with the Lo-Fi effect that recording the final line on a dictaphone creates, it feels seperate to the conversation, as if it were a personal note, something he wanted to hide as his own secret. This blurs the line between the actuality of the event and the mentality and perspective of the character.
This can be played below:
Final Code
#include
Servo myservo; // create servo object to control a servo
// a maximum of eight servo objects can be created
int pos = 0;
int pos2 = 90; // variable to store the servo position
void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop()
{
for(pos = 0; pos < 180; pos += 3) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15);
}
{
delay (2170); // waits 15ms for the servo to reach the position
}
for(pos = 180; pos>=1; pos-=3) // goes from 180 degrees to 0 degrees
{
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
{
delay(6250);
}
for(pos = 0; pos < 180; pos += 3) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15);
}
{
delay (1183); // waits 15ms for the servo to reach the position
}
for(pos = 180; pos>=1; pos-=3) // goes from 180 degrees to 0 degrees
{
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
{
delay(3156);
}
for(pos = 0; pos < 180; pos += 3) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15);
}
{
delay (908); // waits 15ms for the servo to reach the position
}
for(pos = 180; pos>=1; pos-=3) // goes from 180 degrees to 0 degrees
{
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
{
delay(7279);
}
for(pos = 0; pos < 180; pos += 3) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15);
}
{
delay (532); // waits 15ms for the servo to reach the position
}
for(pos = 180; pos>=1; pos-=3) // goes from 180 degrees to 0 degrees
{
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
{
delay(15314);
}
for(pos = 0; pos < 180; pos += 3) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15);
}
{
delay (2436); // waits 15ms for the servo to reach the position
}
for(pos = 180; pos>=1; pos-=3) // goes from 180 degrees to 0 degrees
{
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
{
delay(26211);
}
for(pos = 0; pos < 180; pos += 3) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15);
}
{
delay (3951); // waits 15ms for the servo to reach the position
}
for(pos = 180; pos>=1; pos-=3) // goes from 180 degrees to 0 degrees
{
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
{
delay(625);
}
for(pos = 0; pos < 180; pos += 3) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15);
}
{
delay (3419); // waits 15ms for the servo to reach the position
}
for(pos = 180; pos>=1; pos-=3) // goes from 180 degrees to 0 degrees
{
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
{
delay(28230);
}
for(pos = 0; pos < 180; pos += 3) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15);
}
{
delay (1006); // waits 15ms for the servo to reach the position
}
for(pos = 180; pos>=0; pos-=3) // goes from 180 degrees to 0 degrees
{
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
{
delay(29512);
}
for(pos = 0; pos < 90; pos += 3) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15);
}
{
delay (24588); // waits 15ms for the servo to reach the position
}
}
The final code for the Lights is as follows:
#include
Servo servo;
Servo servo2;// create servo object to control a servo
// a maximum of eight servo objects can be created
int pos = 0;
int pos2 = 0; // variable to store the servo position
void setup()
{
servo.attach(9);
servo2.attach(10);// attaches the servo on pin 9 to the servo object
}
void loop()
{
{servo.write(pos);
servo2.write(pos);
}
for(pos = 0; pos < 90; pos += 1); // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
servo.write(pos); // tell servo to go to position in variable 'pos'
delay(10); // waits 15ms for the servo to reach the position
}
for(pos = 90; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
{
servo.write(pos); // tell servo to go to position in variable 'pos'
delay(20); // waits 15ms for the servo to reach the position
}
{
for(pos = 0; pos < 90; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
servo2.write(pos); // tell servo to go to position in variable 'pos'
delay(50); // waits 15ms for the servo to reach the position
}
for(pos = 90; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
{
servo2.write(pos); // tell servo to go to position in variable 'pos'
delay(20); // waits 15ms for the servo to reach the position
}
for(pos = 0; pos < 90; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
servo.write(pos); // tell servo to go to position in variable 'pos'
delay(20); // waits 15ms for the servo to reach the position
}
for(pos = 90; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
{
servo.write(pos); // tell servo to go to position in variable 'pos'
delay(20); // waits 15ms for the servo to reach the position
}
for(pos = 0; pos < 90; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
servo2.write(pos); // tell servo to go to position in variable 'pos'
delay(30); // waits 15ms for the servo to reach the position
}
for(pos = 90; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
{
servo2.write(pos); // tell servo to go to position in variable 'pos'
delay(10); // waits 15ms for the servo to reach the position
}
for(pos = 0; pos < 90; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
servo.write(pos); // tell servo to go to position in variable 'pos'
delay(10); // waits 15ms for the servo to reach the position
}
for(pos = 90; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
{
servo.write(pos); // tell servo to go to position in variable 'pos'
delay(10); // waits 15ms for the servo to reach the position
}
for(pos = 0; pos < 90; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
servo2.write(pos); // tell servo to go to position in variable 'pos'
delay(60); // waits 15ms for the servo to reach the position
}
for(pos = 90; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
{
servo2.write(pos); // tell servo to go to position in variable 'pos'
delay(20); // waits 15ms for the servo to reach the position
}
{
delay(70);
}
for(pos = 0; pos < 90; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
servo.write(pos); // tell servo to go to position in variable 'pos'
delay(10); // waits 15ms for the servo to reach the position
}
for(pos = 90; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
{
servo.write(pos); // tell servo to go to position in variable 'pos'
delay(10); // waits 15ms for the servo to reach the position
}
for(pos = 0; pos < 90; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
servo2.write(pos); // tell servo to go to position in variable 'pos'
delay(150); // waits 15ms for the servo to reach the position
}
for(pos = 90; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
{
servo2.write(pos); // tell servo to go to position in variable 'pos'
delay(20); // waits 15ms for the servo to reach the position
}
{delay (70);
}
for(pos = 0; pos < 90; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
servo.write(pos); // tell servo to go to position in variable 'pos'
delay(20); // waits 15ms for the servo to reach the position
}
for(pos = 90; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
{
servo.write(pos); // tell servo to go to position in variable 'pos'
delay(20); // waits 15ms for the servo to reach the position
}
for(pos = 0; pos < 90; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
servo2.write(pos); // tell servo to go to position in variable 'pos'
delay(290); // waits 15ms for the servo to reach the position
}
for(pos = 90; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
{
servo2.write(pos); // tell servo to go to position in variable 'pos'
delay(20); // waits 15ms for the servo to reach the position
}
for(pos = 0; pos < 90; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
servo.write(pos); // tell servo to go to position in variable 'pos'
delay(20); // waits 15ms for the servo to reach the position
}
for(pos = 90; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
{
servo.write(pos); // tell servo to go to position in variable 'pos'
delay(20); // waits 15ms for the servo to reach the position
}
for(pos = 0; pos < 90; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
servo2.write(pos); // tell servo to go to position in variable 'pos'
delay(10); // waits 15ms for the servo to reach the position
}
for(pos = 90; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
{
servo2.write(pos); // tell servo to go to position in variable 'pos'
delay(10); // waits 15ms for the servo to reach the position
}
for(pos = 0; pos < 90; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
servo.write(pos); // tell servo to go to position in variable 'pos'
delay(20); // waits 15ms for the servo to reach the position
}
for(pos = 90; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
{
servo.write(pos); // tell servo to go to position in variable 'pos'
delay(20); // waits 15ms for the servo to reach the position
}
for(pos = 0; pos < 90; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
servo2.write(pos); // tell servo to go to position in variable 'pos'
delay(290); // waits 15ms for the servo to reach the position
}
for(pos = 90; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
{
servo2.write(pos); // tell servo to go to position in variable 'pos'
delay(20); // waits 15ms for the servo to reach the position
}
for(pos = 0; pos < 90; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
servo.write(pos); // tell servo to go to position in variable 'pos'
delay(20); // waits 15ms for the servo to reach the position
}
for(pos = 90; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
{
servo.write(pos); // tell servo to go to position in variable 'pos'
delay(20); // waits 15ms for the servo to reach the position
}
for(pos = 0; pos < 90; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
servo2.write(pos); // tell servo to go to position in variable 'pos'
delay(290); // waits 15ms for the servo to reach the position
}
for(pos = 90; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
{
servo2.write(pos); // tell servo to go to position in variable 'pos'
delay(20); // waits 15ms for the servo to reach the position
}
{
delay(29000);
}
}
}
these both sync to the sound although I have not tried them together, or with the tape loop....which is yet to come
Amplifier Motor
This works well, although due to time and space constraints I have not been able to yet test it using a tape loop. I am still, in fact, unsure how to record to magnetic tape but intend to seek help from Dennis (the electrical technician) and Gary (the radio technician).
Below is a video of it working, it rotates fully in one direction, pauses while the audio plays, and then rotates in the other direction.
( the video does not include the audio )
Monday
Speakers
They are made by Dynatron, so are of solid build and are reliable.
Rough edit
Sound Bite
I could maybe incorporate it into my piece somehow, as it relates to the script's content.
Here is the announcement:
"To get back to the warning that I received. You may take it with however many grains of salt that you wish. That the brown acid that is circulating around us isn't too good. It is suggested that you stay away from that. Of course it's your own trip. So be my guest, but please be advised that there is a warning on that one, ok?"
Code
Arduino 1 will be controlling the speaker balance. I will attach a servo to the balance pot on an amplifier. For this I will need to use careful timing that is relevant to the soundtrack to flip the balance from left to right at the suitable moment.
The preliminary code, which I have tested, and works, is as follows:
#include
Servo myservo; // create servo
int pos = 0; // variable to store the servo position
void setup()
{
myservo.attach(9); // attaches the servo to pin 9
}
void loop()
{
for(pos = 0; pos < 180; pos += 3) // goes from 0 degrees to 180 degrees
{ // in steps of 3 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(5); // takes 5ms to get there
}
{
delay (5000); // waits 5 seconds (this will be altered accordingly)
}
for(pos = 180; pos>=1; pos-=3) // goes from 180 degrees to 0 degrees
{
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(5); // waits 5ms to get there
}
{
delay(5000); // waits 5 seconds (this will be altered accordingly)
}
}
This code can obviously be altered to match the timing of the soundtrack on the reel to reel player.
Arduino 2
Frieze Art Fair
Wednesday
Lighting Control
I will be doing this by using servo's attached to dimmer switches. This will require the same code as the reel to reel players, so it should be a fairly simple task.
I have found a product which enables the dimming of any lamp, perhaps I could use vintage lamps to reinforce the idea that the installation was once a living space (until it exploded). The product is pictured below:
Script
Tuesday
Stereo Speakers Not Available
At this stage I have decided that I should be focusing my thoughts on creating the work and not obtaining tape machine (which are surprisingly hard to find at reasonable prices in working order!). For this reason, I will be using only two machines attached to separate amps, manipulating the balance.
Monday
Doseone
"anticon is a collectively owned record label dedicated to scrounging up quiet ideas and tiny epiphanies wherever they might be found. To this end, we make up poems, sing raps, lift drums, and invent albums. So that we might do the impossible and make a living out of following our curiosities, we mass produce our music, pin price tags to its shrink-wrapped surface, and float it out into the world." - Taken from www.anticon.com
An MP3 from The Pelt can be played on the player below:
Friday
Tape Player number 1
Narrative
I have developed a script for this (which I will include later in this blog).
The story will correlate with the layout of the installation. I will scatter burnt wood, photographs magazines etc to create a rubble which resembles the aftermath of an explosion. These will be referenced to in the dialogue itself. The relevance of reel-to-reel technology will also be referenced as the story is set in the 1960's where this technology was prominent in the domestic environment.
Another relevant concept in terms of reel to reel tape is the fact that it is an extinct media (outside of the professional studio world). The notion that the man 'cheated death' by not attending the fatal fireworks display is mirrored in the idea that perhaps the technology itself has cheated death by appearing once more in a gallery space, celebrated for it's nostalgic quality, instead of ending up being discarded.
The old man is based on a photograph I found at a car boot sale. I bought it because it intrigued me that something so personal could be sold for so little (50p!).
Postmodernism and Consumer Society
He explores postmodern aesthetics as an 'erosion of the older distinction between high culture and so-called mass or popular culture' [p.112]. This applies to my use of consumer grade tape machines in my project and how I will be using them to create a commentary on the 'death' of analogue and mono recording. It will evoke a feeling of a time passed, a previous event that is now redundant.
Also, Jameson describes the use of older styles and form as 'Pastiche' [p.195]. His explanation of the term is that it is
Wolf Vostell
New/Original Idea
Experiments - BAD NEWS!
After persistence and testing I have been unsuccessful in creating any audible sound from cassette or reel to reel tape using an extracted tape head. I was able to make noises from magnetic strips from credit cards, although from audio tape it was quiet and no recognisable sounds were being produced.
This has lead me to, unfortunately, postpone this project to a later date. I will now be returning to my original idea, which I will explain in the next Blog entry!
Saturday
Friday
Janet Cardiff and George Bures Miller
Schedule
Week 1 (26/10/09-01/11/09)
Monday:
Design Circuits
Research
Tuesday:
Work on aesthetics, design.
Wednesday:
Build first circuit (if parts have arrived in post!) and build a mock up - Test
Thursday:
Work
Friday:
Calculate length of tape that will fit into printer track and how long this is in seconds.
Saturday:
Work
Sunday:
Brick Lane market: look for tape-based products and printers.
Week 2 (2/11/09 - 8/11/09)
Monday:
Record Sound
Tuesday:
Measure tape and cut into strips or mark to be cut
Wednesday:
Build further mechanisms/circuits
Thursday:
Work
Friday:
Build further mechanisms/circuits
Saturday:
Work
Sunday:
Junk shop in Nottingham
Week 3 (9/11/09 - 15/11/09)
Monday:
Junk shop in Derby
Tuesday:
Finish aesthetic design and scout out relevant materials
Wednesday:
Scout out relevant materials
Thursday:
Work
Friday:
Finish mechanisms/circuits (depending on materials gathered)
Saturday:
Work
Sunday:
Brick Lane market: look for tape-based products and printers.
Week 4 (16/11/09 - 22/11/09)
Monday:
Build installation
Tuesday:
Build installation
Wednesday:
Build installation
Thursday:
Work
Friday:
Build installation
Saturday:
Work
Sunday:
Brick Lane Market: Final visit to get any more needed objects
Week 5: (23/11/09 - 27/11/09)
Building and testing up to deadline (27/11/09)
Preliminary Sketches/ Statement of Intent
Over the summer break I have developed an interest in using magnetic tape, I have always fancied creating something sound-based as most of my work to date has involved moving image.
Here are some pages from my sketchbook:



STATEMENT OF INTENT
For my minor project I will be exploring physical computing through the use of Arduino technology and/or basic electronic mechanisms. My project will consist of a sound-based installation utilising the qualities of magnetic audio tape. I desire to use this medium because of its potential to be used experimentally, taking advantage of it's aesthetic, physicality and manipulability. I will be mostly experimenting with how magnetic tape can be played back using unconventional means, extracting a tape head from an already existing audio product and utilising it in a creative and experimental manner.
My installation will contain a series of motor's and track's (taken from disused printers) mounted on a panel in front of the spectator. Within the print head I will install a tape head and on the track, a strip of tape. The tape head's will be taken from various tape-based technologies, such as cassette players, answering machines, dictaphones and reel to reel players. I will use the lo-fi acoustics of the different machines to emphasise the fact that this technology, which was once universal, is now rapidly becoming obsolete in a digital era of crystal-clear sound.
The tape that I choose will be segments of a recorded short narrative or poem. The spectator will be able to control the movement of the tape head's across the strips of tape by controlling the motors using a panel of buttons, switchers and/or potentiometers. The separation of the narrative will encourage the spectator to create cohesion by controlling the motor's in the correct order. This references the idea that a machine is only as cohesive as it's creator makes it, and these technologies, which are designed to play a consistent replica of a message or piece of music can be broken down and deconstructed due to their vulnerability as a physical object, however, questioning whether this is any different to the vulnerability of modern day audio files which can just as easily become corrupted, remixed or deleted.
Points of Reference:
Janet Cardiff & George Bures Miller
Theory:
The theory I will be referring to and in which my piece will belong is postmodernism, particularly the use of old and new, high and low.
Jameson - 'postmodernism & consumerist society' in The Anti-Aesthetic
Jenkins - Convergence Culture: Where Old and new media collide








