Tag Archives: installation

The Art of the Cron Job

Sound art installations that require digital computing, especially projects that rely on advanced software, demand added insurance of stability in order to remain up in an unattended space for extended periods of time. For exhibitions, this time period can mean a month or more with hours that vary from business hours to a taxing 24-7. One added insurance for artists relying on computers (e.g., Mac Minis) for unattended digital works is the cron job.

A cron is “a time-based job scheduler” that runs periodically (time intervals) to help “maintain software environments” (footnote 1). A software utility for Unix (read Mac), the cron automates processes and tasks, allowing the computer to be used as your personal docent to check on installation software, updating variables as part of the work or fixing issues as they crop up.

I got into cron jobs in 2014 while I was working with John Park on #Carbonfeed (URL), a multimedia installation that leverages Twitter API to transform real-time tweets into physical bubbles in tubes of water as well as a musical composition driven by behavior on Twitter (Figure 1). The piece incorporates a custom node.js script running on a Mac mini. To anticipate power failures, and to even alter hashtag sets on the LCD screens (Figure 2), I needed a way to automate software processes and failsafes. Enter the cron job.

#Carbonfeed (photo by Janelle Rodriguez)
Figure 1. #Carbonfeed (photo by Janelle Rodriguez http://janelleshootsphotos.com)
#Carbonfeed hashtags (photo by Janelle Rodriguez http://janelleshootsphotos.com)
Figure 2. #Carbonfeed hashtags (photo by Janelle Rodriguez http://janelleshootsphotos.com)

In #Carbonfeed, I used the cron to check if the software had crashed and automatically reboot, and every 8 minutes, I altered Twitter hashtag sets on the LCDs, in order to change the dynamic of the work and create new opportunities for discourse. For a how-to on the cron and cron specifics,  please jump to the bottom of this article.

Since #Carbonfeed, whenever I found myself working on a sound installation that required advanced software (e.g., Processing, Max/MSP, Logic Pro X), I inevitably involved a cron. For example, in 2017, I worked with Harmonic Laboratory (URL) on a Mozilla Gigabit Foundation Grant (URL) project called City Synth, which turned the city of Eugene, OR into a musical instrument. The piece involved taking live video feeds from Raspberry Pis (a collaboration completed by the South Eugene Robotics Team, URL) that was mangled by a Processing sketch and subsequently controlled a live synthesizer running in Logic Pro X. The work was up for a month in the Broadway Commerce Center in downtown Eugene, OR.

City Synth signal flow diagram
Figure 3. City Synth signal flow diagram

 

In 2019, my first solo exhibition at the Edith Barrett Gallery in Utica, NY (curated by Megan C. Austin and Sarisha Hogan and supported by funds from the Oregon Arts Commission) had six sound artworks running for three months. Since I was able to borrow Mac minis for the exhibition, I incorporated cron jobs and scripts to transform Mac minis into glorified audio players for two of the works. Sound Memorial for the Veteran of the Vietnam War (URL), ran an Automator script upon startup that opened iTunes and played a playlist holding the six-hour-long work (Figure 4). I mixed the 8-channel work down to a stereo headphone mix in order to account for the bleed of other works inside the space. Relay of Memory (URL) used the same script to output computer audio to an FM transmitter, which played the work through nine radios hung on a wall (Figure 5). Cron jobs checked the status of running software.

Figure 4. Sound Memorial for Veterans of the Vietnam War (photo by Janelle Rodriguez, http://janelleshootsphotos.com)
Figure 5. Relay of Memory (photo by Janelle Rodriguez, http://janelleshootsphotos.com)

The cron utility has been an amazing tool for my sound installation work. I can still recall driving home after installing Aqua•litative (URL) when I received a frantic call from the curator that there was a power outage. In the middle of the call, the power came back on, the computer turned on (setting to automatically start after power failure), and a minute later, the cron kicked in opening up all software. I didn’t need to turn around and drive back or walk the curator through how to turn on computer software. A happy moment.

I have saved countless hours that I know about, and I’m sure many other hours I won’t ever know about thanks to the cron. I even have started to implement the cron in other ways to help with basic tasks in my daily life (see below for code specifics) such that the cron has helped me get closer to what Allan Kaprow describes as the “fluid” and “indistinct” “line between art and life.” Maybe the overseer of digital automatons is what a 21st-century computing artist feels like (footnote 2).

CRON

This is a walkthrough of the crontab on Mac OS using Terminal. I’ve included some code specifics by theme below. If you use, please share your work with me and how you implemented your cron! If you like what you’ve read, sign up for my mailing list (URL), follow my music on Spotify (URL), and please share it with friends.

Setting up a cron

Googling helped me in every way possible for working with crontab, but there are three basic steps. Open up an editor via Terminal, add your cron code (requires setting a time of how often it’ll run), and then saving the file. For more on Terminal, here’s a beginner’s walkthrough, Apple’s user guide, and a command cheat sheet.

1. Open up an editor to add a cron via Terminal

 env EDITOR=nano crontab -e

2. Inside the editor add the executable file to the cron job

 *	*	*	*	*	~/Music/citysynth/cronjobs/citysynth_cron.sh

The asterisks tell how often to run the cron: Minute, Hour, Day of Month, Month, Day of Week. Straight asterisks mean “every” so this is a call to run the cron EVERY minute. The cron after the timer is a call to run a bash script called “citysynth_cron.sh”. The below cron runs every 5 minutes and closes the bash window in Terminal.

*/5	*	*	*	*	osascript -e 'tell application "Terminal" to close (every window whose name contains "bash")';

3. Save and exit the cron.

Ctrl-O, saves the file. Ctrl-X exits the file. You must save the temporary file after editing. When you are done with the cron and want to remove the cron job, follow step 1 to open, but then delete the lines (using Ctrl-K) and save the file. For reference, see
http://www.maclife.com/article/columns/terminal_101_creating_cron_jobs

4. Want to know if you have a cron on your machine? List your crons in Terminal with

crontab -l

Adding a bash script.

If you decide to run a bash script via a cron, you’ll need to make the .sh file executable, that is, give the cron the ability to run the script. In Terminal, navigate to the folder where the .sh file lives and change its permissions with

chmod +x bashfile_name

where “bashfile_name” is the name of the .sh script (make sure to include .sh in the filename).

Below is an example of a .sh script that checks to see if an app is running and if not, reopens the app. I included the initial bash line of the file in the code.

#!/usr/bin/env bash

echo "cron job";

PROCESS=api_hashtags-polyphonic
number=$(ps aux | grep $PROCESS | grep -v grep | wc -l)

if [ $number -gt 0 ]
    then
        echo Running;
else 
	echo "sound is Dead";
	# open music player application
	cd ~/Music/carbonfeed/work/sound/; 
	sleep 2;
	open api_hashtags-polyphonic.app; 
fi

Doing it all in one line of code

For recent projects, I opted to run code directly via the cron instead of relying on bash and AppleScripts. Below is code to start the Chrome web browser at a random time (to the second!) between 855-9p.

55 20 * * * perl -le 'sleep rand 300' && open -a 'Google Chrome'

Remember, the timing of the cron comes first:: Minute, Hour, Day of Month, Month, Day of Week. The cron is fired at 8:55pm, but has a random sleep time (between 0-300 seconds, read between your 8:55–9:00) and THEN opens the web browser.

Adding in an Apple Script

You can use your cron to trigger an Apple Script (.scpt file), just another way to execute commands on your Mac. Here’s an example of telling Safari to hit the spacebar (or could even be iTunes).

tell application "Safari"
	activate
end tell
delay 2
tell application "System Events"
	key code 49 -- space bar
end tell

Automator scripts (triggered by cron or system startup)

If cron and bash aren’t your thing, Apple has the Automator app that allows you to create automated processes straight from a GUI and then save out as an application (Figure 6).  You can also easily trigger the app via a cron or by system startup by going to System Prefs > Users > Login Items. Login items can be set to run Automator scripts upon computer startup, and configuring the computer to power up automatically after power failure will help ensure a work stays running.

Figure 6. Automator Script to open iTunes and play a playlist on repeat.

Hope this was helpful. Please get in touch if you have questions or want to share your work with cron in art.

Footnotes
1. Wikipidea, “Cron”. URL: https://en.wikipedia.org/wiki/Cron accessed August 27, 2020.

2.  Allan Kaprow. Essays on the Blurring Between Art and Life. University of California Press, Los Angeles. 1993. URL

Relay of Memory

The sonic impact of radio on the Americana landscape is profound. Fireside chats, Radio theatre, Payola, DJs, drive-ins, elevator Musak, waiting room noise––the vast consumerism and reach of radio continues to this day. Yet, what happens when we smash two artists (Kenny G and Nickelback) together into one spectral stretched fantasy using the transmission medium that gave life to their careers? Are we doomed to phase out our history with background noise? Or are we undulating with the beat of cultural reclamation and signification? Sending us adrift inside the electrical coils of the radio, Lying in Fireflies Besides Brown Curls and other original compositions attempt to recount a personal connection to memory, lust, and the power of radio to receive a new transmission.

Relay of Memory was exhibited at the Edith Langley Barrett Art Gallery, Utica, NY. The exhibition was supported by funds from the Oregon Arts Commission.

Wildfire

Wildfire is a 48-foot long speaker array that plays back a wave of fire sounds across its 48-foot span at speeds of actual wildfires. The sound art installation strives to have viewers embody the devastating spread of wildfires through an auditory experience.

The work was installed at the Edith Langley Barrett Art Gallery in Utica, New York. The work ran Sept. 19 – Dec. 8, 2019 as part of a solo art exhibition entitled, “Impact! works by Jon Bellona.” Wildfire was part of SPRING/BREAK Art Show in NYC March 3 – 9, 2020 curated by Megan C. Austin and Ashlie Flood.

Wildfire was made possible through the University of Oregon Center for Environmental Futures and the Andrew W. Mellon Foundation. The Impact! exhibition was supported by funds from the Oregon Arts Commission. Additional support made possible from the Edith Langley Barrett Art Gallery.

Public Final Report for University of Oregon Center for Environmental Futures.

 .     

Precipitation 3

Precipitation 3 is one of a series of musical compositions written for 26 clock chimes as part of the sound art installation, Aqua•litative. With my Precipitation series, I treat the electromechanical structure as musical instrument, navigating through sound with the syntactical construction of code. Compositions played by the sculpture evoke precipitation data of California weather stations by cycling through bits of its data. These cycles create emergent sonic patterns in a continuously evolving play between density and rhythm. Movement flows as collapsing waves, additively striking a cybernetic balance between natural order and mechanic motion.

Aqua•litative is a kinetic installation that renders multiple data sets of California’s water history into a physical experience. The work correlates natural factors contributing to California’s water shortages, outlining the serpentine narrative of water through the translation of data into kinetic movement and acoustic sound.

Aqua•litative

Aqua•litative is a kinetic installation that renders multiple data sets related to California’s water history into movement and sound. The installation displays climatological data as a chronological narrative of water in the state by transforming water data into acoustic sounds (ringing of clock chimes) and physical movement (motors moving arms of balsa wood) shown in a gallery space. Precipitation data creates sonic patterns, analogous to rain droplets, in a continuously evolving play between density and rhythm.

Aqua•litative is by Jon Bellona, John Park, and John Reagan. http://aqualitative.org The installation is part of an Environmental Resilience and Sustainability Fellowship, funded in part by the Jefferson Trust and the University of Virginia Office of Graduate and Postdoctoral Affairs.

Aqua•litative installed at the Duke Gallery in Harrisonburg, VA
Aqua•litative installed at the Duke Gallery in Harrisonburg, VA
Arduino board layout for the installation.
Arduino board layout for the installation.

Graffiti

(sub)Urban Projections Film Festival wanted to include live projection bombing in downtown Eugene, OR, and I was commissioned to create an interactive installation that allows a user to paint graffiti upon any projected surface. The human interface uses TouchOSC on an iPad or iPhone, which drives my graffiti computer software. The work was presented each night of the (sub)Urban Projections festival: Nov. 9, 16, 23; 2011, the WhiteBox gallery in Portland, OR Dec. 10, 2011, and the second (sub)Urban Projections festival: Nov. 7, 11, 14 2012.

The Goddess Re:Membered

Commissioned for the 2011 Fringe Festival, The Goddess Re:membered is a site specific work and multimedia response to The Goddess, a classic Chinese silent film from 1934. The interactive installation is for video projection, IR camera, Max/MSP and Isadora software. Through public interactions of users inside the space, clues to distant memories are revealed through the triggering of color, sound, and video masks.

Patch It In!

Patch It In! is an interactive sound installation focused on illuminating the transformations of space through human presence. The installation explores the physical and aural transformations of space through the activity of the viewer. Prerecorded sounds can be manipulated by the viewer as well as dirt rings existing inside the space. Human interaction and decision informs the work.

The viewer leaves having altered the space in some way, however big or small, whether seen or felt, and they have viewed other’s alterations of space. The installation, once defined by the artist, is ultimately transformed, being defined instead by the multiple interactions of viewers inside the work.

+ Read the entire Artist Statement.

Boxed

Boxed is a sound installation about the journeys of shipping cardboard boxes. The work includes seven vignettes, or rather “boxes,” that utilize sounds of packing & shipping cardboard freight as source material. Projected from inside a box, the work fills a perceptual empty container as one listens from within this box to other boxes undergoing various journeys.

+ Read the entire Artist Statement.