This chapter introduces a number of embedded systems and creative uses of these systems.

Throughout this chapter, we will refer to two actors - the artist and the audience. These roles are roughly equivalent to what more traditional texts might refer to as the developer and the user. We make the distinction here as, for the purposes of this text, the task of the artist does not necessarily align with the tasks of a developer. Whereas a developer will typically create a system and deploy it into the world, the types of systems we will examine here may not follow the same scalable distribution strategy.

As an example, we investigate the practice of live coding in the Generative Art module, which is an artistic practice requiring constant code modification from the artist to produce content for the audience. In contrast, a typical system built by the more traditional concept of developer would not require real-time code modification to deliver a service to users.

Modules will be released as we come to them in the course.

System configuration

In this section, we introduce increasingly complex types of embedded systems. In order to organize the evolution of the complexity of these systems, We introduce a notation to describe system configurations. A system configuration defines, at a high level, the ‘‘interface’’ of the embedded system to the artist and audience. Each system configuration describes a ‘‘template’’ for an embedded system.

Writing down the system configuration is a kind of documentation - it helps others to reproduce the system or gain a more direct understanding of the system, so that they can adapt ideas to their own systems. To make the definition of a system configuration concrete, we introduce the following notation:

A system configuration is a graph of nodes and edges, expressed as a tuple (N,E). The set of nodes N consist of devices D, inputs I, outputs O, while the edges E:N1 x N2 x T are the connections between two inputs, devices, and outputs N1 and N2, as well as a label T that denotes the type of the edge (data, power, wired/wireless, etc).

The set of devices will primarily be composed of the computational units described in Hardware (ie microprocessors, microcontrollers, circuits). However, the set of devices does not need to be restricted to these devices - including further types of nodes will give a more detailed picture of the systems. For example, including power sources (eg outlets, battery packs) or data sources/sinks (eg databases, web services) in the set of nodes may be necessary for some systems to ensure the system configuration is complete enough to be reproduced.

We partition the inputs, I, and outputs, O, into two sets - digital and analog. We consider digital inputs and outputs (Din and Dout respectively), and analog inputs and outputs (Ain and Aout respectively). We draw the distinction between digital and analog from the perspective of the device designer. From the perspective of the viewer, as the viewer processes all media with their physical senses, all inputs and outputs to a system might be considered analog. while a fair argument, this is not a useful distinction for the purposes of this text.

The set of edges indicate how the various devices of the system are connected. Generally, we take the edges to be undirected, as it will generally be clear from the type T of the wire (data can flow in both directions over a wire, but power is directed). However, as with devices, these are only guidelines, and we may choose to add more details to a system configuration as appropriate. For example, when pulling a datastream from the internet, it may be clarifying to include a note on the order.

As a system configuration is simply a labeled graph, for convenience, we will render system configurations as diagrams. In this text, we use the system diagram notation only for documentation - thus we will not need a more rigorous presentation of system configurations.