A Collaborative Project with Michael J Junokas, Johan Oskar Kasperi, and Qiuailin Bai
Through the initial tests with audio and chaos control, we wanted to extend the biological metaphor of species interactions to a larger scale of ecologies. The initial thought was to create several separate ecologies of different audio species that would interact within a virtual environment. At a micro level, each ecology would consist of a set of species circuits, with each species being a unique individual. These individuals, depending on their components would interact with the physical environment through sensory feedback (light, sound, electro-magnetic fields, touch) and generate an audio output based on those signals.
In addition to the physical micro-ecology, we created a virtual macro-ecology with which users and other ecologies could interact. Users are able to interact directly with the species through a mobile app interfacing with the Galileo, giving them multiple interaction points that change how the species interacts with their environment. In turn, the species are able to change the visual properties of the mobile app and communicate with separate ecologies, interpreting all factors of the environment into an analog signal read by the Galileo.
Feedback Ecology Taxonomy
In order to be designated as a member of a species, a circuit has to be made from a specific schematic/board layout with the same integrated circuit chips. Individuals within this species designation use the same passive components in the same placement of the schematic. Groups of species individuals and the interactions they have with users, software, and other elements of the artistic system that are located in the same physical space are designated as ecologies. Ecologies interacting with other ecologies and users at different locations through networks comprise the environment.
The analog circuitry consists of a single species, realized in nine individuals. The principal elements of this species include the LM386 audio amplifier circuit and an LED. By routing voltage at different rates from the output back through the input, a cheap (in the perspective of voltage) feedback circuit is created. The resulting feedback manifests in aleatoric audio that is unique to each individual. The audio is also visualized using an LED that lights with a linear relationship to the voltage. Since the voltage is directly tied to the audio, the LED acts as a sort of a visual amplitude envelope follower, matching the volume of the output (i.e. higher volume results in a brighter LED; lower volume results in a dimmer LED).
Coding of Environmental Network
In order to interact with the species circuits, a network between three components (the server, the client, and the Galileo) must be created.
The server makes sure the data is distributed to the correct agents within the system. It also tracks all connections between clients and species, assigning them data needed for functionality. For example, when a client connects to the server, the server provides a list of all connected ecologies so the client can display them in the user interface. The server acts as a hub for all communication between the agents of the network. The server is hosted on Openshift (https://www.openshift.com/), is written in Node.js (https://nodejs.org/), and uses Socket.io (http://socket.io/), Express (http://expressjs.com/) and Underscore (http://underscorejs.org/) dependencies.
Using the Paper.js library, specifically modeling an example called ‘Meta balls’ (http://paperjs.org/examples/meta-balls/), the client acts as a blank canvas, showing small dots in a unique color that represent every ecology connected to the server. A black circle represents where the user touches the canvas, following it wherever the user goes (see iPhone GUI).