Technique

How was it created?

The idea underlying Renewable Rhythms was very specific: to take Terna's data and frame it within a digital canva – a “canvas” where the data can be visualised and where the user can interact with it.

The team behind the "What If" Project came together when three art-mad programmers met three years ago. The actual process for Renewable Rhythms began a year ago and consists of ongoing experiments and refinements that feed into the final work.

How was it created?

It all starts with the extraction of Terna data on energy production from renewable sources from 2019 to the present.

The final canvas is continuously updated via a direct API link with the data that Terna makes available. However, the use of this data also triggers synthesis and optimization input aimed at the user experience. The Transparency Report provides any type of data, both on renewable production and fossil production.

The team therefore decided to extrapolate only part of the data and to aggregate the hourly information into daily information. In the first iteration of the project, hourly data did not have a visual and communicative effect on a par with the current result. The premise was to not distort the data and to ensure that the end result was as faithful as possible to Terna's numbers; but the artists also wanted to make it appropriate to the user experience.

A pentagon representing the types of energy from Terna: Geothermal, Hydroelectric, Biomass, Photovoltaic, and Wind.A pentagon representing the types of energy from Terna: Geothermal, Hydroelectric, Biomass, Photovoltaic, and Wind.

And the outcome? Each type of energy produced – photovoltaic, geothermal, hydroelectric, wind and biomass - is represented by an energy particle. The particles vary in speed, size, blurring and colour intensity depending on the amount of energy produced each day. The higher the energy production, the faster the respective particles move, providing a visual representation of energy production levels.

We can summarise this intensity of motion through this function:

v(t) = F(p(t))

Particle Position
The position of the particle at time t.
Velocity (through time)
The speed at which the particle moves at time t.
Flow field (through positions (through time))
A set of forces or directions that influence the motion of the particle.

What is the Perlin Noise algorithm?

The Perlin Noise algorithm is a method for generating textures and images that look natural and realistic.

It was created by Ken Perlin in 1983 when he was working on the special effects for the film “Tron”. During this project, Perlin realised that the texture generation techniques available at the time were not sufficient to achieve the organic look he wanted. He wanted a method to produced variations that were smooth and natural rather than abrupt and artificial. So, he set about devising this now famous algorithm, which has become a standard in computer graphics

Each element of the algorithm acts like a geometric wave at a specific frequency. These waves are controlled by the function fi(x, y), which sets the scale of each wave. Some waves are "long" and smooth, representing low frequencies, while others are "short" and detailed, corresponding to high frequencies.

Each element of the algorithm acts like a geometric wave at a specific frequency. These waves are controlled by the function fi(x, y), which sets the scale of each wave. Some waves are "long" and smooth, representing low frequencies, while others are "short" and detailed, corresponding to high frequencies.

Every wave has its own amplitude, indicated by ai. Some waves are more prominent, with noticeable peaks and valleys, while others are subtler, contributing only slight variations. The amplitude determines how much each wave influences the final shape of the pattern.

Every wave has its own amplitude, indicated by ai. Some waves are more prominent, with noticeable peaks and valleys, while others are subtler, contributing only slight variations. The amplitude determines how much each wave influences the final shape of the pattern.

Combining all these waves results in a complex pattern of continuous oscillations intertwining with one another. Some waves have a greater impact on the overall pattern, while others play a smaller role. Together, they generate a continuous and varied surface, much like a landscape formed by interconnected geometric waves.

Combining all these waves results in a complex pattern of continuous oscillations intertwining with one another. Some waves have a greater impact on the overall pattern, while others play a smaller role. Together, they generate a continuous and varied surface, much like a landscape formed by interconnected geometric waves.

Perlin Noise works by creating a grid of random points and then calculating the values between these points in a soft way. Imagine connecting the points on a network with graded curves instead of straight lines. This generates a noise that appears natural and is useful for creating textures such as mountains or clouds in video games and films.

AI Coding

After acquiring the Terna data and setting the development course for Renewable Rhythms, the programming code needed to be established. The team was not specialised in using specific creative coding frameworks to build the desired visualization, so Artificial Intelligence was used. The team created a small variant of Chat GPT – the best known generative artificial intelligence application – that focused on one of the main creative coding javascript libraries: p5.js.

Once the code was developed, it was made available to everyone via the Github and Reddit sharing platforms.

And it was on these platforms that the project expanded into what it is now. Renewable Rhythms is therefore a grand collaborative process that has been improved over time by feedback from the community: particle speed and sizing, glow effects and colour variations over time have evolved through the insights offered by the network. The background’s colour transition is based on a sine wave and represents the natural cycle of day and night. It symbolises the passage of time and the alternation of light and darkness, elements that are fundamental to the energy cycle, whereby peak production occurs during the day while night is a time of rest.

Another aspect to be emphasised is that artificial intelligence has had a purely collaborative and executive function and has never had a propositional role: Giannini and his team limited AI's contribution to the development of programming code in a specific language. It was never instructed to take initiatives that could have altered the logic and/or content of the project – a role that was reserved strictly for humans.

Sound System

The last step concerns sound: a member of the group who is an audio active enthusiast suggested that different sounds should be sampled and arranged together in natural harmony. The sources recorded included the sounds of wind, water, gurgling sounds reminiscent of hot air in geothermals, and so on.

Each team member brought a recording of their favourite places: perhaps a favourite beach or the countryside of their home country.

Once gathered, all the sounds were mixed together: each time an amount of energy is higher or lower, the volume gradually rises and falls. As in the other steps, this part was made possible by the development of algorithms to handle sound.

volume = minVolume + (maxVolume - minVolume) * (energyValue / maxEnergyValue)

volume = minVolume + (maxVolume - minVolume) * (energyValue / maxEnergyValue)

minVolume
The minimum volume the sound can have.
maxVolume
The maximum volume the sound can have.
energyValue
The current level of energy produced by the source.
maxEnergyValue
The maximum level of energy the source can produce.

The idea is that the volume of sound varies proportionally to the energy level. When the energy is at maximum (energyValue = maxEnergyValue), the volume will be at maximum (volume = maxVolume). When the energy is at minimum (energyValue = 0), the volume will be at minimum (volume = minVolume).

pitch = minPitch + (maxPitch - minPitch) * (energyValue / maxEnergyValue)

pitch = minPitch + (maxPitch - minPitch) * (energyValue / maxEnergyValue)

minPitch
The minimum pitch the sound can have.
maxPitch
The maximum pitch the sound can have.
energyValue
The current level of the energy produced by the source.
maxEnergyValue
The maximum level of energy the source can produce.

Similar to the volume formula, pitch varies proportionally to the energy value. When the energy is at its maximum, the pitch will be at its maximum. When the energy is at its lowest, the pitch will be at its lowest.