this page is in progress

masterclass by David Pirrò at the Conservatory of Piacenza, Italy, 6-8 November 2019

Nowadays algorithms are often relegated to a pure instrumental role: an algorithm is a tool that solves a problem, a function that provides an answer, at the same time hiding its inner mechanics to the external user. Nevertheless, a different perspective that originates from experimental computational sciences views algorithmic processes as performative entities in perpetual and mutual interaction with their context, a world that is co-generated. From this standpoint, as it is the case, for example, in computastional physics, algorithms are processes that resonate with speculative thinking and with an enactive approach to cognition. These systems embody an idea of algorithmicity that is profoundly related both to a consturctivistic vision of cognition and to an ecologic idea to reality. 

During the course of the masterclass, algorithms were introduced from a mathematical perspective, departing from practical examples derived from the study of dynamical systmes in physics and mathematics. Some elementary algorithms, based on self regulatory processes (like auto gain control), constituted the basis to develop a shared and distributed sound installation composed of small autonomous sound agents (based on raspberry pi boards), all interacting with each other through the medium of sound (each agent was equipped with a microphone and a loudspeaker). 

Algorithmic practice was also framed in an enactive perspective that considers algorithms as agencies that are part of an ecology, entities that have a constant exchange and relationship with their environment. From this point of view, algorithms and computation are intimately entangled with their environment and cannot be considered as bounded (encapsulated) to the medium of a machine. Algorithms and Humans share an ecology, they are equally powered mutually interacting and evolving agents (Latour).


This introductory presentation focused on some aspects that are crucial when dealing with algorithms in artistic practice, and especially in sound and compositional activities. Algorithms were described as

  • having incrompressible qualities that are not  present in their formulation: algorithms exceed their function
  • entangled with thought: they enable and foster speculative thinking
  • part of an ecology: they are in an enactive relationship with their environment
  • infectors of the artistic praxis and the creative or compositional process on all levels

Wednesday 8th 


Conservatorio Nicolini, Piacenza

An entry point to the speculative and experimental use of algorithms and computers is the Fermi-Pasta-Ulam experiment from 1953. Implemented in one of the early electronic computing machines (the MANIAC I), it consisted of a one dimensional system composed of 64 particles, whose ends were fixed, and the particles were connected by a selection of forces: quadratic, cubic, and "broken"-linear. Their main finding was that there was an apparent lack of equipartition of energy amongst the available degrees of freedom, even after as many as 10,000 cycles. Furthermore, Fermi also noted that often the behaviour of the systems was quite different from what intuition would have led them to expect. The FPU experiment was a pure speculation, as no physical correlate to the system exists.

This aspect of computation, its speculative potential and its intrinsic experimental character was proposed as a ground principle of the workshop. From this perspective, 

  • There is no single solution that an algorithm produces. The experiments consists in observing a temporal behavior.

  • There is no arriving point or convergence the process has to arrive to. Given different parameters the behavior is observed and properties are inferred. 

  • The absence of an arrival point produces a dilatation of the space between start and (an arbitrary) end, and marks the essentially temporal dimension along which algorithms extend.



When algorithms and computers are approached as experimental machines, time becomes the space in which speculation and experimentation lives. The only possibility to study a speculative problem like the FPU expeirment is to simulate it. There are no analytical solutions to describe the system. The evolution of the system has to be computed, time step after time step in an approximated process called numerical integration.

Algorithms have an extension. Their extension is temporal. Their space is time.

Remaining in a speculative threshold, procrastinating a solution and lingering in a liminal state in which things are not yet said, nor intended, in which an artefact does not stand for something else, a state in which artefacts do not "represent"

Sound processes are implemented in henri, a sound synthesis and dynamical systems numerical integration environment written by David Pirrò. Here is the repository of the code used during the masterclass.


Each sound agent is composed of a raspberry pi 3 [1], an audio interface [2], a microphone [3] and a loudspeaker [4]. Through the latter, agents can be affected by (microphone) and affect (loudspeaker) all the other agents that compose the installation, thus creating an ecology of self regulating sound processes that generate complex sound forms out of a very reduced set of simple rules.

Thursday 9th 

First realisation

Conservatorio Nicolini, Piacenza

The Nicolini Conservatory is the music conservatory of Piacenza, located in the ancient Santa Franca monastery. It still retains the original cloister, with two covered walks running along the longitudinal side of the building. At the second floor, these correspond to two open arcade. The sound agents were disposed along these two arcades, at equal distance between each other (4 agents for each side of the building, with speakers facing the center, thus forming an ideal listening point in the cloister downstairs). 




. auto gain control in henri .

def sig; 
sig() = in[0]; 

def rms[2]; 
rms[0]() = 0.99*_[i] + 0.01*sig^2;  
rms[1]() = sqrt(_[0]); 

def target; 
target = 0.02;

def fac; 
fac = 20.0; 

def gain; 
gain'() = (target - rms[1])*fac;
gain() = [0.0, _][_ > 0.0]; 

def outsig;
outsig() = gain*in[0];

out[0]() = outsig; 

root mean square of the input signal implemented as a leaky integrator. In henri _[ ] is a shortcut for "self" 




the target amplitude





temporal factor for the amplitude rescaling process




gain'() is the derivative of the function gain(). It varies accordingly to the difference between the desired amplitude and the current amplitude value.

When the difference is negative, it means that the amplitude is above the desired threshold and needs to be rescaled. When the difference is positive, the signal is below the threshold can remain unaffected. 



the input is finally rescalded by the current gain

Friday 10th 

Second realisation

Ricci Oddi Modern Art Gallery, Piacenza

The outside of the contemporary art gallery has a similar architecture, with a small square garden surrounded by four covered walks.