ISO Basics

What is ISO/ISS?

ISO stands for Interactive Swarm Orchestra and emcompases a set of programming tools for anyone who's curious about the integration of artificial life simulations and computer-based sound synthesis. These tools are open source and we have created packages that enable a quick start even for users that have only a limited understanding of C++ programming.

ISS stands for Interactive Swarm Space and is the sequel to the ISO project. With ISS we thrive to achieve a holistic immersive experience by creating actual interactive spaces, evaluating different modalities of interaction and immersion.

Three ISO Engines

ISO consists of three basic engines, each of which is used totally intependant from the other two (compiled and executed separately). There are many reasons for this separation, the most prominent one being, we wanted to keep it as open and versatile as possible. More insights into this openness will be given further down this page. Let's now have a look at the basic three engines:

ISO Flock

ISO Flock enables the creation and exploration of virtual multi-agent simulations (aka Artificial Life simulations or simply virtual swarms) and features also a visualisation (OpenGL) of the created swarm(s). Agents within the swarm can have their own set of properties, behaviours and interact with other agents or hole swarms. These properties and behaviors can be freely defined to suit the user's specific vision of his swarm. An ISO Flock can be assigned to output specific data at runtime, e.g. the location of it's individual agents, their directions and velocities at each timestep. This realtime data can be used by other ISO engines or other OSC-compatible software products like Max/MSP. Vice versa, an ISO Flock can also be controlled at runtime via OSC, e.g. by sending a command to raise the number of agents in a specific swarm, change certain attributes or even change some environment parameters that influence all swarms/agents.

ISO Synth

ISO Synth is a realime synthesis engine that is especially suited for use with ISO Flock, but not exclusively. Since those two engines are completely separated from each other, ISO Synth can of course also be used for other means. If you are familiar with Music N languages and creating music by interconnecting functional units to form a signal chain, you should have no problems understanding the ways of ISO Synth. ISO Synth can of course also be controlled by external software or hardware controllers, including MIDI. ISO Synth is designed to with a low performance footprint and can output massive-multi-channel audio.

ISO Tracker

ISO Tracker is still in an early development stage. In the first part of our ISO project we experimented with a variety of cameras and software components to track the users movements (location, direction and velocity). In ISS we are building upon our experiences with ISO Tracker and thrive for a sequel that can be more widely used. ISO Tracker sends it's movement evaluation data to to ISO Flock or ISO Synth using a TCP or UDP network protocol. ISO Tracker features a simple interface to observe the camera data and evaluation process in order to simplify the process of tinkering with the tracker parameters.

How do these engines communicate with each other and with the outside world?

Most internal communication is done via UDP network packets, however with ISS we have also introduced a comprehensive OSC interface (in addition to the already existing MIDI interface). More about these communication strategies can be found in the chapters "Networking" (ISO Flock) and "External Control" (ISO Synth).

Who uses ISO tools?

Well, you, hopefully ;-). As you have seen, ISO has a very open architecture. So wether you are an artificial life researcher, a computer musician who just needs a music synthesis system, a psychoacoustics reasearcher, a creator of an interactive art installation or a visual artist with a knack for generative art - you all can benefit from the ISO tool set. Knowledge of programming is benefitial. However we have made available a lot of example implementations, some of which will be explained very closely in this documentation in order to get you started.There is even a downloadable version of ISOFlock for casual users that doesn't use any of the developer's tools and can be controlled via a dedicated Max/MSP patch. The next section ("Installation") will explain the installation processes for all kinds of users from the curious casual user to the more experienced developer.

We wish you a lot of fun!

The ISS dev team

August, 2009