Turnstile Murmurations: On Circuits, Data, and What the MTA Doesn’t Count
An ode to the NYC subway, the artists inside it, and the people it doesn’t see
Every day, millions of people pass through a turnstile. Each swipe is logged: a timestamp, a station, a line, a fare class. The MTA collects this data to optimize service, to model load, to make the system more efficient.
What the data does not record is who was stopped. Who couldn’t pay. Who was turned away at the gate.
Turnstile Murmurations is a light sculpture built from the data the MTA does collect. But it is also, quietly, about the data it doesn’t.
The piece was made for Data Through Design‘s 2026 exhibition, echo{logies}, presented in partnership with BRIC Arts Media in downtown Brooklyn. DxD is an annual, volunteer-run exhibition that invites artists to creatively analyze, interpret, and interrogate NYC Open Data. Each year a theme challenges artists to surface hidden stories, examine shortcomings, and question the claims to objectivity that data representations tend to project.
This year’s theme asked: how can the city, and data itself, be understood as ecological and cyclical? What accumulates, erodes, regenerates, lingers as traces, or resonates as echoes? The curatorial language spoke specifically of “murmurations and flows” as a frame for thinking about collective movement at urban scale.
That word, murmurations, became the name of the piece. A murmuration is a way of thinking about collective behavior without a central controller: just local interactions producing something that feels alive. A single starling doesn’t know what the flock is doing. A single subway swipe doesn’t know what the city is doing. But aggregated, over time, across millions of individual events, a pattern emerges that is legible as something whole.
The Object
The sculpture is a steel turnstile receptacle, 36 inches tall, 10 inches in diameter, fitted with three frosted PVC arms extending from a 3D-printed central hub. The mechanical rotation is gone. In its place: addressable LEDs, one strip per arm, driven by a microcontroller running MTA hourly ridership data.
The choice to use an actual turnstile, rather than an abstract light column, came late in the process. And it mattered. A generic column would have made the same visual argument about data and rhythm. But it wouldn’t have carried the object’s history. It wouldn’t have had the tactile memory that millions of people have of passing through it, or being stopped by it.
Stripping the turnstile of its function, in the tradition of Duchamp’s readymade, makes it visible in a way it never is when it is working. Infrastructure becomes legible only when it stops working, or when you repurpose it. When function falls away, experience rushes in.
There is also a MetroCard slot on the top of the receptacle. Empty, functionless. As New York transitions away from that technology, the slot is already becoming a historical artifact. The sculpture documents infrastructure at the moment of its own obsolescence.
The Data
The source dataset is the MTA Subway Hourly Ridership dataset, available through NYC Open Data, covering 2020 to 2024. I filtered to three line groups: the 1/2/3, the 4/5/6, and the N/Q/R. The selection was a search for the intersection of utility and beauty.
Cross-referencing the MTA Arts and Design permanent collection catalog with ridership data, these three line groups have the highest ratio of art-bearing stations. Over 70% of stations on these lines feature commissioned permanent artwork. The dataset that counts bodies is the same system that indexes the art those bodies walk past daily, mostly without noticing.
There is also a color logic to the selection. Red, green, yellow: the colors of a traffic light, and a reference to the turnstile’s original function of enforcing passage. And a personal one: I used to ride the 4/5/6. I now take the 1/2/3. The N/Q/R is my favorite, because there is no better vantage point in New York than a train crossing a bridge.
From the raw ridership counts, I normalized each hourly value to an 8-bit brightness scale using a simple linear mapping:
B = 80 + (255 − 80) × (x − x_min) / (x_max − x_min)
Where x is the hourly ridership count for a given line, x_min and x_max are the minimum and maximum observed across the full dataset, and B is the resulting brightness value sent to the LEDs. The floor of 80 ensures the overnight hours never go fully dark. The city doesn’t stop; it slows.
The normalization was deliberately lossy. I wasn’t trying to represent absolute ridership counts with fidelity. The goal was to preserve the shape of the daily curve: when each line surges, when it plateaus, when it decays. The data gets mapped into light behavior that reads more like a biological rhythm than a bar chart. Once physicalized, viewers stop analyzing it and start feeling it. Congestion, lull, surge. No legend required.
The final normalized arrays, one per line group, are stored locally on the microcontroller. No network connection. No live API call. The city’s rhythm, baked in.
The Circuit
The electrical architecture required careful attention to power distribution.
Components:
Microcontroller: Arduino Uno
LEDs: WS2812B addressable strips, 40 LEDs per arm across 3 arms (120 total)
Power supply: 5V 10A DC brick
Peak draw: 2.4A (12W) at full brightness
Data lines on Arduino pins 6, 7, and 8, one per line group
The three strips share a common ground with the Arduino and the power supply. Power runs directly from the brick to the strips, not through the Arduino. This is essential when driving more than a handful of LEDs. Routing high current through the Arduino’s voltage regulator causes brownouts, flickering, and eventual hardware failure.
Each data line has a 330Ω resistor between the Arduino output pin and the strip’s data input. This dampens voltage spikes at the moment the signal line goes high, protecting the first pixel in each strip, which is a common failure point with WS2812B strips. A 1000µF capacitor across the power rails at the strip inputs acts as a local charge reservoir, absorbing the transient current spikes that occur when large numbers of LEDs change state simultaneously.
The strips run through frosted PVC tubing (2” OD), which diffuses the point-source LED output into a softer, more even column of light. I added a layer of parchment paper inside each tube during assembly. An inexpensive diffuser that made a real difference.
All wiring exits through the base of the receptacle and terminates at a single standard outlet. The sculpture’s peak draw is modest enough that no dedicated circuit is required.
The Animation
The animation is written in C++ using the FastLED library. Each 8-second window represents one hour of the day. A full 24-hour cycle completes in approximately 3 minutes, then repeats.
The brightness for each strip at any given moment is calculated by linearly interpolating between the normalized ridership value for the previous hour and the current hour, using a cubic easing function:
uint8_t fadeIndex = (timeSinceChange >= FADE_DURATION) ? 255 :
(timeSinceChange * 255 / FADE_DURATION);
uint8_t smoothStep = ease8InOutCubic(fadeIndex);
uint8_t br456 = lerp8by8(idx_456_weekday[previousHour],
idx_456_weekday[currentHour], smoothStep);The cubic ease prevents the transition between hours from registering as a discrete event. The system drifts between states rather than snapping between them.
A shared pulse frequency, derived from the average brightness across all three strips, creates a unified heartbeat:
uint8_t globalBPM = map(avgSystemBr, 50, 255, 8, 30);
uint8_t globalPulse = beatsin8(globalBPM, 90, 255);At 3am the system breathes at roughly 8 BPM. At the evening peak it accelerates to 30. The pulse rate is not decorative. It is a direct encoding of the data. The sculpture is not representing the city’s rhythm through light. It is that rhythm, running on a compressed timescale.
This is the part of the project I find most interesting conceptually. A discrete data point, a single person swiping through a turnstile, becomes part of a continuous signal. Passing through a turnstile is an individual act, but the sculpture treats those data points as a flock of movement: a circadian rhythm physicalized through light. This is exactly what echo{logies} asked for, work that explores the rhythms of growth, decay, renewal, and transformation as they echo through data. I didn’t plan for that alignment. The murmuration logic got there on its own.
Following Sol LeWitt’s conceptual framework: the artist designs the system. The city performs it.
The Art History
Two works in the permanent MTA Arts and Design collection are direct references here: Sol LeWitt’s mosaics at 59th Street Columbus Circle, and Dan Flavin’s work at Grand Central.
Dan Flavin sourced his fluorescent tubes from hardware stores on Canal Street and placed them in galleries, museums, and transit stations as fine art. The medium was industrial, standardized, purchased off the shelf. My LEDs came from a supplier. The logic is continuous: found industrial light, repurposed as expressive medium, embedded in the same transit infrastructure that commissioned Flavin’s work decades earlier.
LeWitt’s contribution is structural. His instruction-based practice established that the artist’s role is to design the generative system, not to execute every output. The microcontroller in this sculpture does exactly that. It follows a set of instructions I wrote, and the composition emerges from data I did not generate. I designed the logic. The city generates the content.
Duchamp provides the object logic. The turnstile is not a replica or a reference. It is the thing itself, stripped of utility. When function is removed, form becomes available for examination. The turnstile, freed from its job of enforcing passage, becomes legible as an object that embeds enormous social complexity: who designed it, who maintains it, who passes through it freely, and who does not.
Both Minimalism and Duchamp challenged what art could and should be. Both shifted focus from aesthetics to concept. Both asked: if the idea is the work, who gets to have ideas, and whose objects get elevated into meaning?
I asked myself a version of this question while making the piece. The MTA’s collection is one of the largest repositories of public art in the world. It deserves to be known as one of New York City’s great modern art museums. And yet most people walk past it every morning without registering it. Human artistic memory is indexed by the same system that counts commuter bodies.
What the Data Doesn’t Count
The MTA collects ridership for operational reasons: to model load, schedule service, improve throughput. The dataset is an instrument of efficiency.
But efficiency is not neutrality. The ridership data captures paid entries. It does not capture the person who couldn’t afford the fare. It does not capture the rider stopped by a fare enforcement officer. It does not capture the person who never entered the system at all because the nearest station is inaccessible, or because they don’t feel safe.
The city is also physically changing around the object I chose. The modern turnstile looks nothing like the one in the sculpture. The form I used is already archaic: the spinning arms, the MetroCard slot, the specific weight and clunk of it. The piece is partly an elegy for an infrastructure that is being retired even as it is being celebrated.
The sculpture visualizes what the data recorded. It cannot visualize what the data missed. And that silence is structural, not accidental. It is a consequence of what the system was built to count, and for whom.
Turnstile Murmurations was exhibited as part of Data Through Design 2026: echo{logies} at BRIC House Gallery, 647 Fulton Street, Brooklyn, from March 21 to April 5, 2026, during NYC Open Data Week.









My favorite artist 💗 love this!!
So cool!! You are inspiring!