Free forever·no account, no tracking, no third-party requests ·open data, free API
showstack / learn / aerial
Stage 4 of 7 · The system3 of 3 in this stage11 min read

Drone shows and pyro

Both look like something is being driven live in front of you. Neither is. A drone show and a pyromusical are the same idea twice over: a sequence computed in advance, executed against a clock everybody reads — with the thing that can actually hurt someone kept deliberately off the network.

The thing to unlearn

Nobody is flying a drone show

The intuition is that a drone show is a very large remote-control problem — that somewhere there is a computer sending steering commands to five hundred aircraft many times a second. It is not, and it could not be.

That design puts every aircraft's safety on one radio link. The link has finite bandwidth, variable latency, and it will occasionally drop. Multiply by hundreds of aircraft and the failure is not a wobble, it is a fleet with no instructions.

What actually happens is the opposite. Before launch, every aircraft is loaded with its own complete flight path — a list of positions, and usually colours, against time. Once airborne, each one flies its own file. The ground station arms, launches, monitors telemetry and can abort — but it does not steer. There is no per-aircraft steering to lose.

rule
A drone show is not coordinated by communication. It is coordinated by a clock and a plan every aircraft already holds — which is why it survives a radio link that a steered fleet would not.

The first hard part

Knowing where you are, to centimetres — RTK

Ordinary GNSS is good to a few metres. That is fine for a car. It is nowhere near good enough for aircraft flying a couple of metres apart in a pattern the audience is reading as a picture.

RTK — real-time kinematic — closes the gap using a trick. Put a receiver on a point whose position has been surveyed and is therefore already known exactly. It computes its position from the satellites like any receiver, and gets an answer that is slightly wrong. Because it knows the truth, it knows the error — and the sources of that error (the state of the ionosphere, small discrepancies in satellite clocks and orbits) are very nearly identical for every receiver within a few kilometres.

So the base station broadcasts the correction, every aircraft applies it, and the shared error cancels. What is left is relative position accurate to centimetres. RTK also measures the phase of the carrier wave itself rather than only the coded signal, which is where the last of the precision comes from — and why the receiver reports a float solution while it is still resolving that phase ambiguity, and a fix once it has.

The correction link is a radio or, in a fixed venue, corrections pulled over the internet from a national network. Either way it matters more than it looks: aircraft that lose corrections fall back to metre-level accuracy, which for a formation is a fault, not a degradation.

The second hard part

Everyone agreeing what time it is

GNSS gives every receiver on earth the same time, to well under a microsecond. On a drone fleet that is not a side benefit — it is the coordination mechanism.

Each aircraft is executing an instruction of the form at t = 92.400, be at this point, and be this colour. Every aircraft is doing that independently, from its own file, using its own copy of the same time. There is no inter-drone communication and none is needed. A formation appears because several hundred independent aircraft each arrive at their own assigned point at the same instant.

This is the same principle as the timecode spine on the systems page, and the same principle behind PTP on an audio network. Distribute the time, not the instructions.

The third hard part

Making sure the plan cannot collide with itself

Most show drones cannot see each other. There is no radar, no sense-and-avoid between aircraft, and adding it to hundreds of small airframes would be its own hazard. Safety comes from somewhere else entirely: the choreography is proven collision-free before anything is armed.

The design software checks the full flight, timestep by timestep, for every pair of aircraft — minimum separation, maximum speed and acceleration, climb and descent rates, battery energy against flight duration, and the geofence the whole show must stay inside. A design that violates any of those does not fly; it goes back to the designer.

That is why a drone show cannot be improvised, retimed on the night, or "just held for a minute". The plan is the safety case.

When it does not go to plan

The failsafe ladder

Each aircraft carries rules for what to do when reality departs from the plan, and they escalate. The exact behaviour is a per-system, per-operator configuration — but the shape is consistent.

  1. The correction link dropsPositioning degrades from centimetres to metres. The usual response is to hold position and stop trusting fine formation work.
  2. The GNSS fix is lost entirelyThe aircraft no longer knows where it is. It descends and lands where it stands rather than continuing to fly a path it can no longer verify.
  3. Telemetry to the ground station dropsThe flight itself continues — it never depended on that link — but the operator has lost visibility, which is its own reason to end the show.
  4. Battery reaches the reserveLand, on the shortest safe path, regardless of where the sequence has got to.
  5. The geofence is breachedThe hard boundary. Crossing it means immediate landing, because the geofence is what the safety case and the permission were written around.
  6. The operator abortsOne action brings the whole fleet down in a controlled way. This is the button the show exists to make unnecessary and must always be available.

The other one

Pyro: the same idea, a different failure mode

A pyromusical is built the same way. A script lists cue addresses against times; a controller executes it while following the show's timecode. Nobody is pressing buttons on the beat.

The chain is short and each link is addressed. An initiator sits in the device; it is connected to a firing module that holds many separately addressed outputs; the modules sit on a bus back to the controller — a two-wire serial link in most wired systems, or a licensed, acknowledged radio link in wireless ones. The controller holds the script and the clock.

Before the show, the controller checks continuity on every cue: a tiny test current confirms each circuit is complete. That is how an operator knows a cue is connected, and it is why a pre-show check that reports a missing cue is worth more than any rehearsal.

The detail that surprises people

A firework is fired before you see it

A shell has to get up there. Between the moment it is fired and the moment it bursts there is a lift time, and it is not small — a large shell can take several seconds to reach its height.

So a designer does not program fire times. They program burst times, against the music, and the design software subtracts each item's known lift and delay to work out when the controller must actually fire it. Two shells that burst together on the same beat may have been fired seconds apart.

This is also why a pyromusical cannot be nudged live. By the time you can hear that a cue is early, it was fired several seconds ago.

The part that is not negotiable

Why arming is never on the show network

Everything above is a control-system problem. This is not.

The show network carries timecode, cue triggers and status. It is full of laptops, and laptops are full of software that can be wrong. The firing controller may sit on that network and take its timing from it. What it may not do is take permission from it.

Arming is physical and separate: a key, an arming supply on its own path, and in most operations a person holding an enable. Removing that permission takes the outputs dead no matter what any computer believes. The same logic governs an aerial display: the abort is an operator action on dedicated equipment, not a cue in a show file.

rule
Anything that can start a fire or leave the ground must be stoppable by something that is not a computer. Timing may come from the show network. Permission never does.

A trigger chain

Each step fires the next. Comfortable to build, and it reads well on a diagram.

One missed message and everything downstream stops, with no way to work out where the show should have been. Recovery is a human guessing.

A shared clock

Every department, and every aircraft, independently reads the same running time.

A glitch costs one frame. The device rejoins by simply reading the clock again, because the clock never stopped telling it where the show is.

Putting it together

What a finale actually looks like underneath

A stadium finale with music, lighting, video, pyro and a drone fleet has no master controller in the sense people imagine. It has a master clock.

The house reference generates timecode. Playback, lighting, video and the firing controller all follow it, each executing its own list against the same running time. The drone fleet is launched by a single trigger at a known timecode and then free-runs on GNSS time — deliberately, because an airborne fleet must never be able to stall waiting for a network that has gone quiet.

Nothing is steering anything. Every element is reading time and executing a plan it already holds. That is what makes it look effortless, and it is also, precisely, what makes it safe.

Work in aerial or pyro and something here is wrong?

This page is written at systems level from public documentation and practice, and the operational detail differs between systems and jurisdictions. If a description does not match how your equipment or your regulator actually works, open an issue — corrections from people who run these shows are the ones worth having.

You can now answer
  • How are 500 drones coordinated?
  • What is RTK?
  • How is pyro fired on the beat?
Kept in this browser on this device. Nothing is sent anywhere.

Where to go next

These pages are a chain rather than a library — the next one along usually answers the question this one raised.

Everything on this page, in the index

Each of these has its own entry with sources, ports, gotchas and an open gap where a field is missing.