Embodied data
The system does not treat RGB values as detached numbers. They remain connected to a body, a moment and a lived history.
Interactive audiovisual installation · 2024
A poetic translation from skin chroma
to a living landscape.
Premise · Skin as universe
SOMA CHROMA begins with one question: how do we perceive ourselves when the social gaze is replaced by an inward, curious one?
Every inch of skin holds a singular record of time: veins, scars, pigmentation, temperature and emotion. The installation reads a momentary chromatic trace and poetically translates it into mountains, vegetation, rivers and sound—turning cold data into an embodied encounter.
The system does not treat RGB values as detached numbers. They remain connected to a body, a moment and a lived history.
The work does not reproduce skin scientifically. It releases its latent qualities through an audiovisual language.
A quiet gesture of contact becomes a safe ritual for observing, listening and reconnecting with the self.
Visitor journey · Four movements
Stand in front of the display and locate the illuminated sensor probe. The system waits in a ready state.
Bring the probe close to a vein, freckle, scar or any area of skin that feels personally meaningful.
RGB data reshapes the landscape and sound in real time. Stay still, then move slowly to hear and see subtle transitions.
Move away from the sensor. After a short reset, the installation is ready for the next participant.
The sensor reads temporary RGB values; it does not photograph or identify the participant. At first contact, the program saves only the generated landscape frame.
One skin · Three ecological voices
Select a biome to hear a short browser-generated study inspired by the installation’s sound engine. Sound plays only after you choose.
R / MOUNTAIN
Red values shape the ruggedness of the visual terrain and open a grounded sonic layer: low stone resonance, a slow pulse and subtle stereo displacement.
Probe · Messenger · Engine
The probe reads reflected red, green and blue light from the skin.
The messenger calibrates and sends RGB values as serial data.
The engine maps one data stream into particles, terrain, colour and sound.
A unique image and soundscape emerge from the participant’s momentary chroma.
Installation manual · Before opening
Disconnect USB power before changing any wire. Confirm VCC and GND first, then connect the signal pins.
Open the TCS3200 sketch, select Arduino Uno and the correct USB port, then upload.
Open Serial Monitor at 9600 baud. Confirm that each line follows the format R,G,B.
Only one program can use the port. Close Arduino’s monitor before launching Processing.
Open SOMA_CHROMA_Final_With_Sound.pde. Keep SomaSoundEngine.pde in the same sketch folder, then press Run.
The image should fill the display and the audio device should open automatically. Test one skin contact.
Avoid direct sunlight and highly reflective surfaces. Keep the sensor lighting consistent.
Hold skin close to—but not pressed against—the LEDs. Use the same distance for all tests.
If values stay near 0 or 255, adjust the pulseIn mapping ranges in the Arduino readColor() function.
Close Arduino Serial Monitor and any other program using the port. Reconnect USB, then restart Processing. If several ports are listed, select the Arduino port explicitly.
Check brightness and RGB values on screen. Keep the sensor close to the skin, reduce stray light and recalibrate the Arduino mapping ranges for the exhibition space.
Check the computer’s output device and volume. Press M once to clear accidental mute. Restart the sketch after changing audio hardware.
Stabilize the sensor distance and room lighting. Increase REARM_THRESHOLD if the installation needs a longer reset interval.
Close background applications, use the discrete GPU if available and reduce MAX_PARTICLES for lower-powered computers.
Code architecture · One data stream
// TCS3200 → serial RGB
readColor();
Serial.print(redValue);
Serial.print(",");
Serial.print(greenValue);
Serial.print(",");
Serial.println(blueValue);
Reads three filtered frequencies and sends a clean comma-separated data packet every 50 ms.
// One touch, two outputs
somaSound.triggerContact(
sensorR, sensorG, sensorB
);
somaSound.update(
stableSkinForSound,
sensorR, sensorG, sensorB
);
The main sketch stabilizes sensor contact, constructs the particle landscape and sends the same RGB values to sound.
// Continuous biome blend
mountainMix +=
(targetMountain - mountainMix)
* mixCoefficient;
renderMountain();
renderVegetation();
renderRiver();
Three independent sound worlds crossfade smoothly; first contact inherits the current RGB landscape.
Exhibition field notes


“The screen did not show a fixed identity. It showed a landscape that kept becoming—something that felt like me, and yet larger than me.”
Synthesis of participant reflections
Project film · Full encounter
Soma remembers. Chroma speaks.