Parhelion (2007)

a software, a spectacle

Parhelion at Montalvo

Starry Starry Night proposal:

The project is a public video projection installation during the Starry, Starry Night event using Montalvo Arts Center's architecture as backdrop/projection screen and allowing the public a glimpse into the often overlooked complex connection to the Sun, the nearest star to the Earth.

It is often mentioned that the Sun is an average star and it is easy to overlook the complexities and intimate connection of the sun to our planet. The planet Earth resides in the extended atmosphere of the Sun which both supplies the energy for life and shields the planet with the star's magnetic field; and at the same time, the Sun rains high energy particles and radiation that can shape and change the life it fosters.

EIT195 image

These phenomena, known as Space Weather, are monitored and studied by many programs interested in the day to day variation in solar influence to mitigate damage to human health, life, and technology. In addition to the ground based systems and networks of observatories, a group of solar observatory satellites in a special orbit keep the satellite pointed at the Sun with an unblinking stare 24 hours a day. One the most well known of these observatories is the SOHO (Solar and Heliospheric Observatory), a cooperative effort between NASA and the ESA. SOHO is the platform for 12 instruments including the MDI/SOI(Michelson Doppler Imager/Solar Oscillations Investigation) which has a special connection to the south Bay Area. The MDI/SOI is a joint research project between Hansen Experimental Physics Laboratory of Stanford University and the Solar and Astrophysics Laboratory of the Lockheed-Martin Advanced Technology Center.

EIT304 image

For the Starry, Starry Night program our team proposes use the Love Temple as a public 'performance' venue to project visual data from SOHO and other solar observatories of the near realtime image of our star. This near-Earth astronomy is a fascinating contra-pose to the forms of the more obvious night astronomy and becomes additionally fascinating after sunset.

The images of from EIT on SOHO provide an especially spectacular saccharine view of the Sun in the ultraviolet spectrum. The nature of these mediated images is transformative and it is a riveting spectacle. Synthetically , the images of the sun from the solar research observatories allow the viewer to do what normally would be impossible: endlessly gaze at the sun and at any time of day.

EIT171 image

The projection of the near real-time images will be cast on the ceiling of the temple structure. The image will provide a low and ambient light near and around the structure that is an easy transition for star viewing. Providing that any telescopes are separated from this projection by several yards, the ceiling projection would additionally limit down the line-of-sight light pollution that would effect star viewing.

The projection will be accompanied with audio that is generated by the radio frequencies that emanate from the sun as a low ambient soundscape for the installation. The team requests that Montalvo Arts Center provide some seating in the form of folding chairs to allow viewers a chance to rest and watch the images as well as allow the space to develop into an ad hoc social space.

MDI Continuum image

Our team will provide the technology to connect to the internet, project the image and for sound. Depending on the facilities available we will make arrangements for power as well. Upon approval of this proposal, we will promptly meet with the responsible parties at Montalvo Arts Center to discuss exact logistics of the performance. Please see the image and a sound files linked to this page to further illustrate the project.

The team would be interested in other spaces available at Montalvo Arts Center in the event that this venue is already booked.

SOUNDS FROM SOL

Team:
Thomas Asmuth
Sarah Lowe
Wayne Madsen
James Morgan

and this project also couldn't be realized without the generous support from:
Steele Hill, SOHO Media Specialist
Joseph B. GurmanFacility Scientist, Solar Data Analysis Center
Solar Oscillations Investigation (SOI) team and especially:
Philip H. Scherrer, Principal Investigator
Deborah ScherrerEducational Outreach, SOLAR Center Stanford University
courtesy of virtual solar observatory


Execution:

Rebecca and I worked on the code together, equally debugging. We started with a basic xml parsing and then had to work out most of the bugs in order to include archive footage -- limiting the live streaming, but also including more vibrant past sol images -- and to get a good time flow happening.

After the code was written, the final installation was executed on the ceiling of the Love Temple at Montalvo, surrounded by lawn chairs to experience the colors of a live sun show. These are images from the project at Montalvo.

The following is an excerpt from the main class. I have included all the .java files for downloading, as well as the .jar. You can modify the code, improve it and let me know how it turns out.

MainCode (){
//        1. Create the frame.
        super("FrameDemo");
        this.setPreferredSize(new Dimension (800,600));
        this.setBackground(Color.BLACK);
        this.setUndecorated(true);
       
//        2. Optional: What happens when the frame closes?
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//        3. Create components and put them in the frame.
        // ---------------------------------------------------------------------
        // Get the image from the URL
        // ---------------------------------------------------------------------
        imagePanel = new ImagePanel();
        Container contentPane = this.getContentPane();
        contentPane.setLayout(new GridBagLayout());
        
        GridBagConstraints gc = new GridBagConstraints();
        gc.gridx = 0; gc.gridy = 0;
        gc.anchor = GridBagConstraints.CENTER;
        imagePanel.setPreferredSize(new Dimension(600,600));
        contentPane.setBackground(Color.BLACK);
        contentPane.add(imagePanel, gc);

        contentPane.setLayout(new BorderLayout());
        contentPane.add(imagePanel, BorderLayout.CENTER);
        
//        4. Size the frame.
        this.pack();
    }

    private Image makeImage(String filename) {
        BufferedImage image = null;
       
        try {
            if (filename.contains("http")) {
                URL url = new URL(filename);
                image = ImageIO.read(url);
            }
            else {
                File file = new File(filename);
                image = ImageIO.read(file);                
            }
        } catch (MalformedURLException e) {
            // count attempt stuff should go in IOException handling...*if* filename contains "http"
            // this exception just catches malformed urls, not the connection failure we saw before
            /*countAttempt++;
            System.err.println(filename + "; count attempt = " + countAttempt);
            if (countAttempt < 4) {
                System.err.println("retry this url");
                return makeImage(filename); // retry this url a few times...
            }
            else {
                System.err.println("try archive image instead");*/
                return makeImage(selector.requestArchiveImage()); //...but not forever. try an archive image instead
            /*}*/
            //e.printStackTrace();
        } catch (IOException e) {
            //System.err.println(filename + "; count attempt = " + countAttempt);
            //System.err.println("using different archive image");
               return makeImage(selector.requestArchiveImage()); // try a different archive image
            //e.printStackTrace();
        }
        
        //return Toolkit.getDefaultToolkit().createImage(url);
        //countAttempt = 0; //reset countAttempt if we get this far
        return image.getScaledInstance(600, 600, Image.SCALE_AREA_AVERAGING);
    }
    
    private void changeImage (ImageSelector selector){
        this.selector = selector; // remember this as a class level variable for error handling
        Image currentImage = null;
       
        while(true) {
            if (currentImage == null) {
                imagePanel.setImage1(makeImage(selector.getImageName()));
            }
            else {
                imagePanel.setImage1(currentImage);
            }
            currentImage = makeImage(selector.getNextImageName());
            imagePanel.setImage2(currentImage);

            for (int i=0; i<201; i++){
                imagePanel.setAlpha(i*0.005F); //1/200 iterations = .5% opacity
                this.repaint();

                try {
                    Thread.sleep(500); //.5 second iteration for alpha change
                } catch (InterruptedException e) {
                    // for now do nothing if sleep didn't work
                    //e.printStackTrace();
                }            
            }

            try {
                Thread.sleep(10000); // 10 seconds
            } catch (InterruptedException e) {
                // for now do nothing if sleep didn't work
                //e.printStackTrace();
            }            

        } //uncomment this and the first line, comment the last...this will switch from tail-recursion to iteration
        //changeImage(selector); //comment above line and first, uncomment this to switch to tail-recursion
    }
    
    public static void main(String[] args) {
        MainCode mainFrame = new MainCode();
        mainFrame.setVisible(true);
        
        mainFrame.changeImage(new ImageSelector());
    }
Main Class - please download all files below

Keywords: Science, software art, collaboration, astronomy, sun, star, social NASA, SOHO

download:
>>final executable jar file
>full program .java file (.zip format)

Exhibition History: Starry Starry Night, Montalvo, Saratoga, CA

>>www.waynemadsen.com<<