I created an application that will call a person and make them listen to a deranged phone-consciousness.  The project is a huge deviation from what I usually do; my focus this time was on creating something that related to popular culture, specifically urban legends.

The phone has grown an awareness, and is attempting to talk to the person who has used it.  It questions if someone is there, and slowly gains awareness of its condition as a “thing in a box,” and a remembrance of the person’s apathy to it.  It cannot hear the person and continuously talks to them, demanding for the person to help them.  It blames the person, using its limited voice to make an emotional cry against its owner.

If this was to be used in “real life” (read: not-real real life), it would ideally propagate from phone to phone, one phone calling another, as the consciousness desperately tries to escape and becomes smarter and smarter as it moves from phone to phone. The phone-consciousness would then attempt to hurt and manipulate those who hear it, just as humans treat their phones as their personal slaves.

I was inspired to make this by Golan’s reference to Brian Eno who made this excellent quote.  I wanted to show how something could touch us emotionally because it failed to emulate human emotion using its voice.  Instead, it’s about the context and the story of what the phone says.

Finding the proper tools to do what I needed took quite a while.  I eventually used Twilio and AmazonS3 to send the call properly, and used Audacity to manipulate the sound file I generated using TextToSpeech’s Daisy.

Here is the Java code that calls a phone number using the Twolio API.

package caller;
// Install the Java helper library from
import com.twilio.Twilio;
import com.twilio.type.PhoneNumber;
// TWILIO: Making outbound calls:
// Thanks to TextToSpeech: using Daisy
// TwiML, Audacity, AmazonS3
public class Caller {
  // Find your Account Sid and Token at
  public static final String ACCOUNT_SID = "XXX";
  public static final String AUTH_TOKEN = "XXX";
  public static void main(String[] args) throws URISyntaxException {
    Twilio.init(ACCOUNT_SID, AUTH_TOKEN);
    Call call = Call.creator(new PhoneNumber("+XXX-XXX-XXXX"),
        new PhoneNumber("+XXX-XXX-XXXX"),
        new URI("")).create();

Here is the TwiML code-bit that gets the file from AmazonS3 to play the recording.

<?xml version="1.0" encoding="UTF-8"?>
    <Play loop="1"></Play>