Wave consists of many different hardware and software technologies all working together to create a final product. Many different students and faculty members contributed to the final project. Below is a summary of the components I worked on.
First is a very brief video showing highlights from a portion of Wave’s development. View the full clips on YouTube.
The WaveArt.ca web app is the gateway to interaction.
When tapping on the “Interact” action item after scanning the QR code on-screen, they are taken to a grid of thumbnails representing the grid of cameras waveboard display. These thumbnails resize to fit the user’s device, and add labels if screen real estate permits. When tapping on the thumbnails, a request is sent to the server to “play back” the webcam on the waveboard. Should the webcams change, as they do every few minutes, the thumbnails automatically reload on the device to remain consistant with the waveboard.
When the user scans the QR code on-screen, a waveling ID and color, which is always visible at the top of the device, is assigned. Their session times out after a period of time to reduce conflicts. It is based off WebApp.net, a framework for developing mobile web applications.
On the Wave Mac Pro (Wave-1), the webcams and poetry are rendered using the 8-core processor coupled with two high performance graphics cards. Quartz Composer is a visual development environment that allows complex graphical operations to be created without the need for traditional code. Despite the visual programming environment, Quartz Composer uses the same native graphics libraries in Mac OS X, which is entirely hardware accelerated.
The first composition polls a script on the local machine to generate the webcams, their names, and a word cloud related to the webcam. A MySQL database, stored on an external web server, serves as the central repository and communication between Web App, Quartz Composition, and the Wave Admin interface.
Real-time actions, such as a user tapping on a thumbnail or scanning a QR code, is activated by using the OSC patch in QC. When the user taps on their smartphone, a request is sent to a remote server, which checks the status of Wave-1, then relays the webcam request to Wave-1’s built-in web server. A PHP script on Wave-1 uses an OSC library to send out the message to the QC composition, and “playback” of the webcam is initiated. Despite the numerous “hops” needed to achieve this operation, interaction is very responsive.
In order to maintain state and store complex information about the 500+ webcam collection, an external MySQL database manages most of the data associated with the webcam composition. Scripts on Wave-1 poll all webcams worldwide every 20 minutes, downloading and storing their full size images, and generating appropriate thumbnails for the Quartz composition and web app. Each webcam’s status is verified, and cross-checked with their predecessors to ensure that the webcam is not dormant. If the webcam has not been updated in a significant amount of time, it is suspended and not checked for 24 hours to reduce bandwidth and polling time. Suspended cameras are pulled out of circulation so they do not appear on the waveboard.
Wave downloads about 1000 images a day, or about 1 gigabyte of data to keep its information current, and emails the creators when it goes offline or has an error. Wave changes colour throughout the day, and turns off automatically at night to save energy.
All of this information can be managed from the Wave Admin web interface.
Two 60″ LCD displays are used in Wave, connected to the Mac Pro via HDMI. A Mac Mini powers a third, smaller display, which provides patrons with facts and information about the installation. Finally, a fourth monitor is setup inside for administering Wave both locally and remotely.
A private Wireless LAN is used to join the two Macs and allow administration. If one computer has become disconnected from UWS, the other one can be used to reinitialize its WiFi connection.