TU/e Master · M1.1 project, New Futures squad

Carecast

Two ambient devices for friends who live apart. Each plays the other's weather as sound.

The round Carecast device glows warm white on a cabinet by a window at dusk, a city skyline behind it.
Year
2025
Role
Group project, design engineer, with I. L. & V. T.
Keywords
Calm technology, Sonification, Tangible interaction
Scenario

The brief imagined the smart home of 2040, set in the TU/e IoT Sandbox.

Concept

Can weather carry care between two friends while it stays in the background?

Lens
Calm technology

Technology that stays in the periphery of attention and moves to the centre when it is needed (Weiser & Brown, 1997).

In Carecast: the weather sound stays in the background of the room until you turn to it, to listen to a friend's weather or send them yours.

A person reads a book beside the glowing Carecast on a planter cabinet.
Process
  • Note 01 I introduced a meta-design framework to structure the open brief and kept a shared record of our decisions.
  • Note 02 We composed the weather soundscapes by live coding in Sonic Pi, with AI assistance for the code.
  • Note 03 A focus group with three participants aged 18 to 25 compared realistic weather sounds with layered, composed ones. I analysed the results.
Sound design

Four clips from the Carecast sound library, rendered from our Sonic Pi code. Credits are in the code below.

Each soundscape stacks three layers in Sonic Pi: a pad for the background tone, a bass for body, and a harmonic or melodic line for variation. The weather label sets the overall mood. A small map function turns each reading into a sound value: more rain means faster drops and lower notes, and stronger wind means a louder, brighter rush.

Weather to sound · Sonic Pi
# Carecast · weather sonification in Sonic Pi
# Sonic Pi code by the Carecast team, 2025
# Excerpt: the map function, the rain layers and the wind
#
# Credits
# Birdsong (sunny clip): "Woodpecker and other birds on a spring morning"
#   by Kyster, https://freesound.org/s/182740/ (CC BY 4.0), slowed and filtered
# Comments translated from Chinese

# map function
define :map_val do |v, in_min, in_max, out_min, out_max|
  return out_min if in_min == in_max  # avoid dividing by zero
  v = [[v, in_min].max, in_max].min  # clamp to the range
  ratio = (v - in_min).to_f / (in_max - in_min).to_f
  out_min + ratio * (out_max - out_min)
end

#--------------------------------------------
#rain drop, overlap with all weather
#--------------------------------------------

define :dual_synth_drop do |s1, s2, note, amp_base|
  unless playing_weather?
    sleep 1
    next
  end
  use_synth s1
  play note,
    amp: amp_base * 0.6,
    attack: 0.01,
    release: 0.35
  use_synth s2
  play note + [0, 2].choose,
    amp: amp_base * 0.4,
    attack: 0.0,
    release: 0.45
end

# 1. Drizzle: high notes, sparse
live_loop :drizzle do
  unless playing_weather?
    sleep 1
    next
  end
  rain_mm  = get(:rain_mm)
  rain_norm = map_val(rain_mm, 0, 30, 0.0, 1.0)

  with_fx :echo, phase: 0.45, decay: 2.5, mix: 0.35 do
    note = (scale :e5, :minor_pentatonic).choose
    if rand < (0.9 * (1 - rain_norm))
      dual_synth_drop :sine, :tri, note, rain_norm*0.8
    end
  end

  # rainfall maps to 3.0 s → 0.2 s
  sleep map_val(rain_mm, 0, 30, 3.0, 0.2)
end

# 2. Middle rain: middle register
live_loop :middle_rain do
  unless playing_weather?
    sleep 1
    next
  end
  rain_mm  = get(:rain_mm)
  rain_norm = map_val(rain_mm, 0, 30, 0.0, 0.8)

  with_fx :echo, phase: 0.28, decay: 2.2, mix: 0.5 do
    if rand < map_val(rain_mm, 0, 30, 0.05, 0.95)
      note = (scale :e4, :minor_pentatonic).choose
      amp_val =  rain_norm*0.8
      dual_synth_drop :tri, :beep, note, amp_val
    end
  end

  sleep map_val(rain_mm, 0, 30, 1.5, 0.5)
end

# 3. Heavy rain: low register
live_loop :heavy_rain do
  unless playing_weather?
    sleep 1
    next
  end
  rain_mm  = get(:rain_mm)
  rain_norm = map_val(rain_mm, 0, 30, 0.0, 1.0)

  with_fx :echo, phase: 0.16, decay: 3.5, mix: 0.75 do
    if rand < rain_norm
      low_note = (scale :e3, :minor_pentatonic).choose
      dual_synth_drop :beep, :tri, low_note, rain_norm*0.8

      if rand < rain_norm
        use_synth :sine
        play (scale :e5, :minor_pentatonic).choose,
          amp: rain_norm*0.15,
          attack: 0.0,
          release: 0.2
      end
    end
  end

  sleep map_val(rain_mm, 0, 30, 0.7, 0.45)
end

#--------------------------------------------
# wind, overlap with all weather
#--------------------------------------------
live_loop :wind do
  wind_speed  = get(:wind_speed)
  unless playing_weather?
    sleep 1
    next
  end
  if wind_speed < 3
    sleep 1
    next
  end

  wind_amp = map_val(wind_speed, 0, 20, 0.3, 1.2)
  cutoff   = map_val(wind_speed, 3, 15, 70, 110)

  with_fx :reverb, room: 0.9, mix: 0.7 do
    with_fx :lpf, cutoff: cutoff + rrand(-10, 10) do
      synth :noise, amp: wind_amp,
        attack: 1.0,
        sustain: 2.0,
        release: rrand(4.0, 8.0)
    end
  end

  sleep rrand(3, 5)
end
A hand reaches for the edge of the Carecast disc on a desk.
Carecast glows beside a person reading, city lights behind the window.
The opened device: an ESP32 board, a breadboard, wires and a speaker on a round base.
Inside the prototype. The touch sensor was so sensitive it triggered on its own.
Prototype

An ESP32 reads the touch sensor and drives the LED strips. A bridge program fetches live weather, has Sonic Pi play it through a Bluetooth speaker and shares data with the IoT Sandbox through OOCSI. I also built a web app and a knob controller as backup demos.

Findings

Participants preferred the composed sounds, even when they recognised the weather less accurately. One said: “It felt like a message, not just noise.” They heard the sounds through their own places: to one of them, thunder meant typhoons. Checking a friend's weather felt like thoughtfulness more than information.

Next

A study in real homes, over months. The first evaluation was a small focus group in a meeting room. The materials were chosen for function. Circular electronics made from grown materials became the subject of Kombuchán, the project that followed.

References
  1. Weiser, M., & Brown, J. S. (1997). The coming age of calm technology. In P. J. Denning & R. M. Metcalfe (Eds.), Beyond Calculation: The Next Fifty Years of Computing (pp. 75–85). Springer.
  2. Fischer, G., & Giaccardi, E. (2006). Meta-design: A framework for the future of end-user development. In H. Lieberman, F. Paternò, & V. Wulf (Eds.), End User Development (pp. 427–457). Springer.
Previous
Kombuchán