# Interactive Fabric Display — Overview

> Based on research from:
> - [Large-area display textiles integrated with functional systems (Nature, 2021)](https://www.nature.com/articles/s41586-021-03295-8)
> - [Lighting Fabrics - A New Approach for Flexible Light Sources (LED Professional)](https://www.led-professional.com/resources-1/articles/lighting-fabrics-a-new-approach-for-flexible-light-sources)

## What These Articles Describe

**Nature paper (Shi et al., 2021):** A breakthrough in **woven electroluminescent (EL) display textiles**. They weave conductive weft fibres and luminescent warp fibres together, creating ~500,000 EL pixel units at each weft-warp contact point, spaced ~800µm apart. The result is a 6m × 25cm flexible, breathable, machine-washable display fabric. They demonstrated an integrated system with a **textile keyboard** (capacitive touch) and **textile power supply** — essentially a full wearable communication device.

**LED Professional (Carpetlight):** A commercial approach to **LED-on-fabric lighting** — miniature PCBs on rip-stop polyamide, connected by conductive embroidered threads. Controllable via **DMX protocol**, tunable white (2800–5400K), and extremely lightweight (300g for a 2×1ft panel). Currently used in film/TV lighting.

---

## How to Build an Interactive Display from These Concepts

There are **three tiers**, depending on how deep you want to go:

### Tier 1: Accessible Now (LED Matrix on Fabric)
Use commercially available components to approximate the research:

| Component | Product | Est. Cost |
|---|---|---|
| **LED matrix** | WS2812B/SK6812 flexible LED strips or panels (e.g., 16×16 NeoPixel matrix) | $15–60 |
| **Substrate** | Sew/bond onto rip-stop nylon or felt | $5–10 |
| **Controller** | ESP32 or Raspberry Pi Pico W | $5–15 |
| **Touch input** | Capacitive touch sensors (MPR121) or conductive thread embroidery | $5–15 |
| **Power** | LiPo battery + boost converter | $10–20 |

**The architecture:**
1. **Addressable LED grid** sewn onto fabric → each LED is a "pixel"
2. **Capacitive touch zones** using conductive thread (like the Nature paper's keyboard)
3. **ESP32 running a DreamStack bitstream** → the display state is a signal graph, touch events mutate it, and the whole thing streams over the relay for remote interaction

### Tier 2: Electroluminescent (Closer to the Nature Paper)
Use **EL wire/panels** woven or sewn into fabric:

- **EL wire** segments as individual addressable lines
- **AC inverter** with multiplexer (e.g., custom PCB or commercial EL sequencer)
- **Woven grid pattern** — horizontal EL wires crossed with conductive warp threads
- Achievable pixel resolution: ~5–10mm pitch (vs. the paper's 800µm)

### Tier 3: Full Research Replication
This requires lab equipment — ZnS:Cu phosphor-coated fibres, ionic gel transparent electrodes, and an industrial loom. Not practical outside a university materials science lab.

---

## Where DreamStack Fits

This is a perfect use case for bitstream streaming:

```
┌─────────────────────────────┐
│  Fabric Display (ESP32)     │
│  ┌───────────────────────┐  │
│  │ LED Matrix State      │──┼──► DreamStack Bitstream
│  │ (signal per pixel)    │  │    (streams over relay)
│  ├───────────────────────┤  │
│  │ Touch Sensor Input    │──┼──► Mutations
│  └───────────────────────┘  │
└─────────────────────────────┘
         ▲           │
         │           ▼
    Remote Control   Viewer
    (phone/web)      (any screen)
```

- The **fabric display's pixel state** is a DreamStack signal array
- **Touch on the fabric** generates mutations that stream upstream
- A **remote viewer/controller** (phone, web) can also push state down to the fabric
- Conflict resolution handles simultaneous fabric-touch + remote-touch

---

## Possible Next Steps

1. **A DreamStack `.ds` program** that models a fabric display grid as a streaming signal matrix
2. **An ESP32 firmware sketch** for driving a WS2812B matrix with capacitive touch, speaking the bitstream protocol
3. **A web-based simulator/controller** — a visual grid that mirrors the fabric display in real-time over the relay
