iOS & macOS App

Analog TV
Simulator

Every stage of the analogue broadcast chain — broadcast camera tube, composite signal, VCR tape, RF transmission, CRT phosphor chemistry — simulated from first principles. No shortcuts. No filters applied over a clean image.

Early access via TestFlight: iPhone & iPad · Mac · Mac alpha build (unsigned, testing only)

Analog TV Simulator
10
Broadcast
Standards
4
Signal
Families
8
Phosphor
Types
3
CRT Mask
Geometries
14
Test
Patterns
6
RF Interference
Types
6
Receiver
Controls
5
Service Menu
Controls
2
Built-in
Instruments
8
VCR
Formats
6
Camera Tube
Types
13
Camera Physics
Stages

From Camera Tube to Phosphor Glow — 9 Stages

Real composite television worked end-to-end: a broadcast camera tube converted the scene to electrons, those electrons were encoded into a single voltage waveform, optionally recorded to magnetic tape, transmitted over RF, received, decoded, and finally driven into a CRT phosphor screen. The app replicates the complete chain — 9 GPU compute and render passes per frame — with no stage skipped and no effect faked in post.

1

Camera Tube / Sensor

Before a single sample of composite signal is written, the source image passes through a broadcast camera model calibrated against primary source measurements. Each of seven tube and sensor types applies, in order: telecine pulldown jitter (NTSC 3:2 cadence-gated — slipping only at A-frame boundaries, not every frame), 3-tube prism-block colour registration error (R and B channels independently offset; G is reference), aperture MTF with horizontal-only scan ringing (tube optics diffract along the scan direction), sensor gamma and black-level pedestal (γ = 0.65 from Hamamatsu Sb₂S₃ datasheets; γ ≈ 1.0 for Plumbicon PbO), white-balance colour temperature drift that settles as the tube warms up from a cold start, highlight bloom and knee compression, Image Orthicon asymmetric dark halo (secondary-electron scatter weighted toward the scan direction per RCA datasheets), vertical smear upward only (charge drains toward the shift-register readout end), illumination-dependent temporal lag (non-linear IIR — brighter scenes produce less lag, as the electron beam sweeps more charge from a brighter target), a slow burn-in accumulator that persists for approximately 115 seconds at 60 fps, spatially-coherent film grain, and signal-dependent electronic noise scaling as √signal per Poisson statistics. Test patterns bypass this stage entirely.

2

Composite Encode

The camera output is converted to a composite signal buffer — a flat array of floating-point voltage samples. Sample counts range from 790 per line for 405-line System A to 1135 for PAL, all sampled at 4× the colour subcarrier frequency. Subcarrier phase geometry (radians per sample and radians per line) is pre-computed on the CPU and passed as shader parameters: every colour standard uses the same GPU encoder with no hardcoded format branches. SECAM is the exception — FM requires continuous phase across adjacent samples, so a dedicated per-line CPU kernel handles it, writing into the same composite buffer consumed by the decode shader.

3

Composite Signal

The buffer now contains what would be on the coaxial cable between a broadcast transmitter and your television aerial. Sync pulses at −40 IRE, blanking at 0, picture from 0 to 100 IRE, colour burst on the back porch — all in one waveform. Luminance, chrominance, and timing are inseparable, exactly as they were in real hardware. Everything downstream operates on this buffer. There is no separate colour signal, no separate luma signal — there is only the composite.

4

RF & Interference Injection

Six effects are injected directly into the composite buffer before decode: multipath ghosts (three independent delayed echoes at configurable amplitudes and delays, each operating on the full composite waveform including subcarrier — chroma smear and hue shifts from multipath are genuine consequences, not approximations), airplane flutter (two-oscillator beat modulation of ghost amplitude at ~0.68 and ~0.51 Hz), mains hum bars (50/60 Hz sinusoidal baseline modulation that rolls upward at the mains–field beat frequency), co-channel interference (beating carrier producing drifting diagonal "venetian blind" pattern), impulse noise (broadband RF spikes from vehicle ignition and motors), and IF filter ringing (a 15-tap Kaiser-windowed FIR bandpass kernel run at the composite sample rate, reproducing the passband roll-off and stop-band ripple of a real IF strip — transitions ring at the subcarrier frequency, overshoot luminance edges, and smear chroma in the time domain). Because every effect enters before the decoder, they interact authentically with the comb filter, chroma demodulator, and SECAM FM discriminator — not as a visual overlay, but as corrupted signal.

5

VCR Tape Stage

When a VCR format is selected, the composite buffer passes through a tape-domain processing stage before decode — exactly as recording on a VCR introduces a lossful recording and playback loop between the tuner and the television. Eight formats are modelled from primary specifications. Consumer formats (VHS SP/LP/EP, Betamax, S-VHS, Hi8) use a colour-under heterodyne system: chroma is stripped, downconverted to a low carrier (629 kHz for VHS, 688 kHz for Betamax, 732 kHz for Hi8), recorded separately, and upconverted on playback. Speed variation in the tape transport FM-modulates this low carrier, producing hue instability proportional to Δφ = 2πf·Δt — visible as colour shimmer on saturated areas. Luma is recorded as an FM carrier whose deviation directly determines horizontal resolution: VHS SP (3.4–4.4 MHz, 1.0 MHz deviation → 240 TVL), S-VHS (5.4–7.0 MHz, 1.6 MHz deviation → 420 TVL), Hi8 (5.7–7.7 MHz, 2.0 MHz → 415 TVL). U-Matic uses the same colour-under principle at 688 kHz but with a higher-quality transport giving lower flutter. Betacam SP records Y, R-Y, and B-Y as separate FM tracks (Y: 6.8–8.8 MHz; C: 5.6–7.3 MHz, CTDM), eliminating colour-under entirely — no hue jitter, Y-SNR above 50 dB. Mechanical artifacts are also modelled: tape skew (tension-induced timing error that grows linearly from the bottom to the top of the frame, bending the picture header), wow and flutter (capstan speed variation of 0.02–0.1% wrms producing sinusoidal horizontal line-timing oscillation at 0.5–3 Hz), tape dropout (random white-level substitutions of 1–15 µs from missing oxide particles, Poisson-distributed across lines), head-switching noise (the two-head transition 6.5H before vertical sync, visible in the lower overscan as a noise band), and the aperture-correction detail-enhancer circuit present in consumer decks from the mid-1980s (high-frequency shelf +3–6 dB at ~2 MHz, producing the characteristic slight ringing on VHS-enhanced material). Generation loss is modelled discretely: each re-recording adds a full tape noise floor, further limits bandwidth, and de-saturates chroma.

6

Composite Decode

Decode runs as three sequential GPU compute passes on the composite buffer, operating at the full composite sample rate throughout — no downsampling occurs until the final texture write. First, a 1-line comb filter (signalYCSeparate) separates luminance and chrominance into independent float buffers: Y = (cur + prev) / 2, C = (cur − prev) / 2. This works identically for NTSC and PAL because the subcarrier inverts phase every line, so averaging cancels chroma and differencing cancels luma. The dot-crawl slider blends the separated signals back toward raw composite, reproducing the imperfect comb behaviour of televisions without a delay-line chip. Second, signalChromaFIR demodulates the C buffer to baseband I/Q or U/V using Hann-windowed quadrature FIR filters with the correct per-channel bandwidth from the broadcast specification: NTSC I channel (1.3 MHz, 11 taps), NTSC Q channel (0.4 MHz, 35 taps), PAL U/V (1.3 MHz symmetric, 13 taps), VCR-format chroma (0.5 MHz, matching the colour-under carrier bandwidth). PAL V-line switching and Hanover bar cancellation are applied at this stage. Third, signalLumaFIR limits luma bandwidth with a 13-tap Hann-windowed sinc LPF to 4.2 MHz for NTSC or 5.0 MHz for PAL — scaled by the front-panel bandwidth control. A final GPU pass reads the separated Y and I/Q (or U/V) buffers, applies the standard colour matrix, and writes the output texture. SECAM is the exception: FM requires continuous-phase demodulation, so SECAM Db/Dr is recovered by an FM discriminator that reads the original composite buffer directly. The artifacts that emerge — dot crawl, cross-colour, chroma smear, ringing, SECAM fire — are genuine consequences of the decode algorithm encountering real signal content.

7

Tube Physics State

A state machine models the CRT power cycle — preheat, on, and cooling. Each frame it computes: raster geometry during deflection collapse, EHT discharge voltage, shutdown spot parameters (beam core intensity, phosphor halo radius, position jitter scaling with tube age), the high-voltage sag coefficient that causes the raster to breathe with scene brightness, arc probability, and ageing level. Every downstream rendering decision — phosphor excitation gating, EHT brightness scaling, arc flash rendering — is derived from this physics state, not from ad-hoc visual parameters.

8

Phosphor Accumulation

The decoded frame drives a per-pixel temporal accumulator gated by the beam scan window. Inside the beam window each pixel accumulates new excitation weighted by a per-channel decay constant drawn from measured phosphor persistence data (RCA TPM-1508A, 1961). Outside the window each pixel simply fades — exactly as a real phosphor does while the beam is elsewhere on screen. For single-compound phosphors (P31 green, P45 white, P4 B&W, P3 amber) the decoded signal is first collapsed to luma and then re-tinted with each phosphor's measured CIE emission chromaticity — eliminating false-colour subcarrier cross-talk that would arise if a full-colour path were applied to a chemically monochromatic screen.

9

CRT Render — Fragment Shader

The final render pass reads the accumulated phosphor texture and the tube physics state. During normal operation: EHT sag UV scaling (raster contracts 1–5% on bright scenes, proportional to ageing), scanline darkening from beam width, halation bloom from lateral glass scattering, shadow mask / aperture grille / slot mask overlay (sub-pixel, screen-pixel-locked), barrel distortion from the curved faceplate, convergence geometry offset per gun, vignette. During power transitions: warmup centre spot, or the full shutdown sequence — vertical raster collapse, horizontal bright line, centre spot rendered as two overlapping Gaussians (tight beam core + wide phosphor halo, P22 green-biased), HV arc flashes (probability scaling with tube age), and optional spot-killer blanking. All service-menu geometry (pincushion, trapezoid, tilt) is applied at UV sampling.


The Source the Signal Started With

Before a frame enters the composite encoder, the simulation models what happened in the studio. Each tube and sensor type is calibrated against primary source measurements — manufacturer datasheets, peer-reviewed papers, and broadcast engineering literature — so that the physical characteristics of the original hardware determine the parameter values, not aesthetic intuition. Lag, halation, noise, burn-in, vertical smear, and film grain enter the composite encoder as if the camera had produced them. Every artifact that emerges downstream — dot crawl, comb filter interaction, chroma smear — is there because the signal carried it from the sensor.

Bypass — Direct Input
Camera emulation disabled. The raw camera frame passes directly to the composite encoder without modification. Useful as a clean reference, or when the source is already processed (a synthetic test pattern, for instance). All test patterns use bypass automatically.
Vidicon — The Workhorse Tube (1950s–1970s)

The most widely deployed broadcast camera tube of the 1950s and 60s. The Vidicon projects the scene onto a photoconductor (antimony trisulfide) that accumulates a charge pattern proportional to light intensity, then scans it with a low-velocity electron beam. Low cost and reasonable sensitivity made it standard for news cameras, studio cameras, and early video surveillance.

The photoconductor's slow charge-release rate produces the Vidicon's defining flaw: temporal lag. When a bright object moves, the charge pattern doesn't clear instantly — it leaves a comet tail streaking behind the object. Hamamatsu Sb₂S₃ datasheets (types N513, 7262A, 7735A, 8844) measure ~25% residual at the 3rd frame under dim illumination (0.05 fc) dropping to ~5% at 2 fc: the electron beam sweeps more charge from a brighter target. This illumination dependence is physically modelled — lag is not a fixed constant but scales with scene brightness. Static bright objects burn a slowly-decaying residue into the photoconductor; measured persistence in tube literature is on the order of minutes, corresponding to a decay half-life of approximately 115 seconds. The aperture MTF diffraction is horizontal (scan-direction), γ = 0.65 is the value stated explicitly in Hamamatsu datasheets for all Sb₂S₃ types, and colour stability during warm-up is modelled from cold start.

Plumbicon — Lead Oxide Precision (1965–1985)

Developed by Philips in 1965, the Plumbicon replaced antimony trisulfide with a lead oxide (PbO) p-i-n photoconductive layer that drained its charge pattern far more rapidly. Levitt (SMPTE, 1970) measured less than 2% signal remaining at the 3rd field under 2 fc studio lighting. Mullard's XQ1410 production datasheet (1987) records 7% at Is=20 nA under dim conditions — the discrepancy is illumination: the PbO junction sweeps nearly completely at studio brightness but retains measurable lag at minimum sensitivity. These two measurements were reconciled and used directly to calibrate the simulation's illumination-dependent lag model. Later diode-gun variants (Mullard XQ5002, Philips/Amperex) reached 59–60 dB SNR and 700+ TVL limiting resolution.

Colour Plumbicon cameras used a 3-tube prism block — one tube per primary colour — whose physical registration drifted with temperature and mechanical age. This produced colour fringing on high-contrast edges — coloured halos around text and object boundaries — one of the most recognisable signatures of vintage broadcast footage. The green tube is the phase reference; red and blue tubes drift independently, producing the characteristic asymmetric fringing seen on original broadcast recordings. Highlight bloom from PbO saturation and colour temperature drift during warm-up are calibrated from the same Mullard datasheet series.

Saticon — Selenium Arsenic Telluride (1975–1990s)

Introduced by Hitachi in 1974, the Saticon uses a selenium–arsenic–telluride (SeAsTe) photoconductor with a tighter, sharper aperture MTF response than the Plumbicon — Hitachi's PF-Z31A reached 750 TVL limiting resolution and 58 dB SNR. Temporal lag is comparable to the Plumbicon and slightly higher in controlled tests (engineering literature consistently places Saticon lag between Plumbicon and Vidicon). Studio cameras equipped with Saticons were prized for clean, crisp rendering of fine detail. The 3-tube Saticon configuration became the preferred choice for high-end production cameras in the late 1970s and 1980s.

Like the Plumbicon, 3-tube Saticon cameras produced colour fringing from tube-to-tube registration drift — typically more pronounced than Plumbicon because the thinner SeAsTe target layer required tighter mechanical tolerances to achieve its MTF advantage. The Saticon's other distinctive artifact is a subtle vertical smear — a short trail above bright objects — caused by photocarrier diffusion along the vertical axis of the selenium layer. Because diffusion is a physical process with a defined direction relative to the readout geometry, the smear is unidirectional: it extends upward from saturated highlights, not downward or bidirectionally.

Image Orthicon — Early Broadcast (1946–1960s)

The Image Orthicon dominated professional broadcast from the late 1940s until the Vidicon displaced it in the early 1960s. Photons struck a photocathode that emitted electrons which were magnetically focused onto a target; a low-velocity return beam scanned the target and fed secondary electrons into an electron multiplier. The result was extraordinary sensitivity — Image Orthicons could operate in candle-lit conditions that would defeat any later tube.

That sensitivity came at a price. The returning secondary electron beam produced a distinctive dark halo around bright objects — the IO's most recognisable signature. RCA technical documentation records a secondary emission ratio of 4–5 electrons emitted per incident photoelectron: those that miss the collection mesh return to the target and suppress signal in the surrounding area. Critically, secondary electrons scatter preferentially along the horizontal scan direction due to the geometry of the electron optics and collection mesh — making the halo asymmetric rather than circular. The strongest darkening appears on the horizontal leading edge of bright objects (the crescent shape visible on original IO footage), with weaker suppression on vertical edges. The halo model uses scan-direction-weighted gradient magnitudes with a leading-edge asymmetry term derived from this physical geometry. Combined with heavy temporal lag, a ~40 dB SNR ceiling (IO noise has a low-frequency spatial structure distinct from the white noise of later tubes), and a long burn-in decay, the Image Orthicon produces a visual aesthetic unlike any camera before or since.

Early CCD — First Silicon Sensors (1980s)

The first generation of charge-coupled device cameras entered broadcast production in the early 1980s. CCDs eliminated lag, burn-in, and comet trails entirely — but introduced new electronic artifacts. The most distinctive is vertical smear: when a bright light source saturates a pixel well, excess charge bleeds through the vertical shift register during readout. The physics of CCD readout are asymmetric — charge transfers in one direction along the column — so the smear streak is strictly upward, not bidirectional. This is a commonly misrepresented artifact: many simulations show a bilateral pillar, but physical shift-register overflow produces a one-sided column above the overloaded source.

Early 3-chip CCD cameras had larger prism-block manufacturing tolerances than tube cameras — the silicon die mounting process was less precise than the glass tube alignment used in 3-tube Plumbicon rigs — producing more severe colour registration drift across the frame. Signal-dependent shot noise in silicon follows Poisson statistics: noise amplitude scales as √signal, so absolute noise peaks in the midtones rather than the shadows, unlike the fixed-floor dark noise of tube cameras.

Telecine / Film Chain — When Cinema Met Television

Before videotape became practical for feature film broadcast in the 1970s, movies and pre-recorded programming reached audiences via the film chain — a movie projector aimed at a broadcast camera in a darkened telecine suite. Converting 24 fps film to 25 fps PAL or 29.97 fps NTSC required a mechanical intermittent mechanism that introduced its own characteristic instabilities.

The film chain's characteristic instabilities all have mechanical causes. Pulldown jitter — vertical frame position variation — occurs at film-frame boundaries, when the intermittent sprocket engages and releases. In NTSC 3:2 pulldown, a 24 fps film frame is held for either 2 or 3 video fields in the repeating A-A-B-B-B pattern: jitter occurs at the A-frame transitions (every 5 video frames), not continuously. Simulating jitter on every frame, as most approaches do, produces a visually incorrect result — too much motion, wrong cadence. Weave (horizontal instability from film shrinkage and gate pressure variation) is independent of the pulldown cadence and occurs frame-to-frame. Film grain is photochemical — silver halide crystals clustered in spatial patches, correlated within a frame, independent between frames. Film gamma (≈ 0.75) and the extended shadow detail of photochemical processes give film-originated material its distinctive tonal separation from directly-captured video.

SOURCES & REFERENCES ▾
  1. R.S. Levitt, NASA NTRS 19700027423 — "The performance and capabilities of recently developed Plumbicon TV camera pickup tubes," J. SMPTE 79, 115 (1970) — Plumbicon lag <2% at 3rd field at 2 fc; MTF ≥50% at 400 TVL/ph.
  2. R.S. Levitt, IEEE IEDM 1968 — "Recent developments in Plumbicon pickup tubes," doi:10.1109/IEDM.1968.187549 — confirms MTF ≥50% at 400 TVL/ph.
  3. Yokogawa et al., Jpn. J. Appl. Phys. 10, 1203 (1971) — "Calculations of Image Lag in Vidicon-Type Camera Tubes" — quantitative lag curves for Sb₂S₃ Vidicon vs illumination level.
  4. Hitachi PF-Z31A camera specification — Saticon: 750 TVL limiting resolution, 58 dB SNR.
  5. Philips/Amperex XQ5002 Plumbicon datasheet — 60 dB SNR with low-noise preamplifier.
  6. JVC KY-80/KY-950B press releases — 700 TVL, 59 dB SNR (diode-gun Plumbicon).
  7. RCA Image Orthicon datasheet (type 5820) and related types 5826, 7038 — secondary emission ratio 4–5×; maximum SNR ~40 dB; minimum usable illumination 0.01 fc.
  8. ITU-R BT.470-6, Conventional Television Systems (1998) — camera OETF γ = 0.45 (System M / NTSC), γ = 0.36 nominal (Systems B, G, H, I).
  9. EBU TECH 3335, Methods of Measuring the Imaging Performance of Television Cameras — MTF measurement protocol used to interpret published tube data.
  10. E. F. de Haan, Philips Tech. Rev. 24, No. 2 (1962/63) — "The Plumbicon, a New Television Camera Tube" — original announcement; sensitivity >150 µA/lm, dark current <5 nA, lag <0.2 s independent of illumination.
  11. A. G. van Doorn, Philips Tech. Rev. 27, No. 1 (1966) — "The Plumbicon Compared with Other Television Camera Tubes" — confirms Plumbicon γ = 1.0 (linear); Vidicon (Sb₂S₃) γ ≈ 0.6 at sensitive setting; IO SNR 34–36 dB (3″ type), 37–39 dB (4½″ type); Plumbicon MTF 50% at 5 Mc/s relative to 0.5 Mc/s.
  12. Mullard Ltd., Electronic Tubes Book 2 Part 2A: Plumbicon Camera Tubes & Accessories (1987) — production datasheets for XQ1410/XQ1500/XQ3440/XQ3070 series: MTF 50–70% at 400 TVL (5 MHz, combined tube+lens); lag decay 7–13% at 60 ms (≈3 fields PAL) depending on gun type and bias. Used directly for IIR lag coefficient calibration.
  13. Mullard Ltd., Electronic Tubes Book 2 Part 2C: Vidicon and Newvicon Camera Tubes (1987) — Sb₂S₃ layer A: γ = 0.55–0.85 (typ 0.74); lag 8.5–10.5% residual at 60 ms (XQ1240/1270 series). Newvicon (CdZnTe): γ ≈ 1, lag 8–15% at 60 ms.
  14. Hamamatsu Photonics, Vidicon Camera Tube Datasheets (N513, 7262A, 7735A, 8844) — Sb₂S₃ types: amplitude response 17–30% at 400 TVL; lag 15–25% at 50 ms (3rd frame at 60 fps, Is = 200 nA); average γ = 0.65 stated explicitly for all types. Used to calibrate Vidicon lag IIR coefficient and confirm γ.
  15. W.S. Boyle & G.E. Smith, "Charge Coupled Semiconductor Devices," Bell Syst. Tech. J. 49, 587 (1970) — foundational CCD paper; Nobel Prize 2009.
  16. NASA NTRS 19750020758 — Fairchild CCD-201 characterisation (early frame-transfer CCD in scientific use, 1974–75).

Ten Standards, Four Signal Families

Every standard gets its own timing geometry, subcarrier frequency, and signal path. The app does not reskin one format to approximate another.

B&W — Monochrome
System A
United Kingdom · 1936–1985
405 lines — world's first public TV

The BBC launched 405-line television in 1936, making it the oldest electronic TV standard. The signal carries only luma — no colour subcarrier is ever generated. System A used AM vestigial-sideband transmission with positive modulation (full white = peak carrier) — the opposite polarity from every later standard.

Lines: 405 · Rate: 25 fps · SR: 8 MHz · Samples/line: 790 · CE_MONO
System M (B&W)
USA · 1941–1954
525 lines — pre-colour NTSC geometry

The 525-line 29.97 fps frame structure was standardised before NTSC colour was added in 1954. Monochrome variant uses the same timing as NTSC-M but generates no subcarrier. Sampled at 14.318 MHz (4× the NTSC colour subcarrier frequency) for timing consistency.

Lines: 525 · Rate: 29.97 fps · SR: 14.318 MHz · Samples/line: 910 · CE_MONO
625-line B&W
Europe · 1950s
625 lines — European pre-colour

Before PAL and SECAM arrived in the mid-1960s, most of Europe broadcast 625-line monochrome. Uses the same line and frame geometry as PAL and SECAM but carries only luma. Sampled at 17.734 MHz — the highest resolution of the 25 fps standards at 1135 samples per active line.

Lines: 625 · Rate: 25 fps · SR: 17.734 MHz · Samples/line: 1135 · CE_MONO
System C
France · Belgium · 1948–1983
819 lines — highest-res analogue standard ever

System C had 819 lines — more than any colour system that came after. Broadcast on VHF with an 8 MHz video bandwidth, it delivered extraordinary vertical resolution for its era. Requires a 22 MHz sampling rate; active line width is 1074 samples. Pure luma — no colour subcarrier.

Lines: 819 · Rate: 25 fps · SR: 22 MHz · Samples/line: 1074 · CE_MONO
NTSC — Quadrature AM (YIQ)
NTSC-M
USA · Canada · 1954
Quadrature AM — 525 lines, 29.97 fps

Colour is encoded as two signals — I (orange–cyan) and Q (green–magenta) — modulated 90° apart onto a 3.58 MHz subcarrier. A 7.5 IRE pedestal lifts black level above blanking. Because receivers must lock an oscillator to a burst that can drift, poorly-adjusted sets produce a visible hue shift — giving rise to "Never The Same Colour".

Subcarrier: 3.579545 MHz · YIQ · Burst: 180° ref · Pedestal: 7.5 IRE
NTSC-J
Japan · 1960
Zero-pedestal NTSC — 525 lines, 29.97 fps

Electrically identical to NTSC-M except the 7.5 IRE pedestal is absent — black is at blanking level (0 IRE). The result is a slightly wider usable contrast range. On a correctly calibrated monitor the difference is invisible; on a misaligned set, NTSC-J material through an NTSC-M decoder looks slightly washed out.

Subcarrier: 3.579545 MHz · YIQ · Burst: 180° ref · Pedestal: 0 IRE
PAL — Phase Alternating Line (YUV)
PAL
Europe · Australia · 1967
Phase Alternating Line — 625 lines, 25 fps

Uses quadrature modulation like NTSC but flips the phase of the V (red–cyan) component on every line. A TV with a 1-line delay averages adjacent lines, cancelling phase errors. This self-correcting mechanism makes PAL far more tolerant of signal reflections and transmitter drift — no hue knob required.

Subcarrier: 4.433619 MHz · YUV · V-switch: ±180°/line · 1135 samples/line
PAL-M
Brazil · 1972
PAL colour on 525-line NTSC timing

Brazil is the only country that combined the PAL V-switching colour system with the 525-line 29.97 fps NTSC frame structure. The result requires a unique subcarrier frequency — 3.575611 MHz — to keep harmonics aligned with the line rate. Incompatible with both standard NTSC and PAL.

Subcarrier: 3.575611 MHz · YUV · V-switch · 525 lines · 909 samples/line
PAL-N
Argentina · Uruguay · 1981
PAL colour, reduced subcarrier, 625 lines

Uses 625-line 25 fps timing but shifts the subcarrier to 3.582056 MHz for harmonic compatibility with South American IF infrastructure inherited from NTSC-era equipment. Restores the 7.5 IRE pedestal that standard PAL lacks, matching NTSC-M black levels. Active line width is 917 samples.

Subcarrier: 3.582056 MHz · YUV · V-switch · 625 lines · 917 samples/line
SECAM — Sequential Colour with Memory (FM)
SECAM
France · USSR · Middle East · 1967
Frequency Modulation — 625 lines, 25 fps

SECAM uses frequency modulation — like FM radio — instead of amplitude/phase. The two colour signals (Db, Dr) are transmitted on alternating lines: even lines carry Db on a 4.250 MHz subcarrier, odd lines carry Dr on a 4.406 MHz subcarrier. The receiver stores the previous line in a glass delay line and combines current and stored values to reconstruct both components at every line. FM is immune to amplitude variations, giving excellent colour stability across weak or multipath signals — at the cost of being incompatible with amplitude-modulated systems.

Three signal-processing stages are applied to reach broadcast accuracy. First, LF pre-emphasis: a one-pole 85 kHz high-pass filter amplifies colour transitions before FM modulation, countering the FM noise spectrum that rises with frequency — the same principle as FM radio pre-emphasis but optimised for the SECAM deviation parameters. Second, the Bell/Cloche amplitude filter: the transmitted carrier amplitude varies with instantaneous frequency according to A(f) = M₀ × √(1 + 16F²) / √(1 + 1.26F²), where F = f/f₀ − f₀/f and f₀ = 4.286 MHz. This weighted-carrier pre-distortion keeps the demodulated baseband flat when FM receiver detectors have the characteristic FM noise response. Third, decoder de-emphasis: a one-pole IIR integrator (inverse of the encoder HPF) restores flat colour response after FM discriminate — applied per-line so that state resets at each horizontal sync, matching real SECAM decoder hardware.

No colour burst is transmitted. SECAM identification uses a sequence of nine alternating-polarity bursts during the vertical blanking interval (lines 7–9 of each field), allowing switching equipment to distinguish SECAM from PAL.

Subcarriers: 4.250 MHz (Db) / 4.406 MHz (Dr) · YDbDr · FM · Bell/Cloche · LF pre-emphasis · No colour burst · 1135 samples/line

Genuine Imperfections — Not Filters

These imperfections aren't applied over a clean image. They arise naturally from simulating the actual signal path — the same cause as on real hardware.

Dot Crawl
The subcarrier can't be perfectly separated from the luminance signal, leaving a faint animated pattern crawling along high-contrast edges. Controllable with the CRAWL slider.
Cross-Colour
Fine stripes or textures whose frequency happens to be near the subcarrier get misread as colour. Classic example: herringbone jackets on 1980s TV presenters.
SECAM Fire
At a colour transition, the FM carrier must sweep continuously from the old frequency to the new one. During this transient the carrier passes through intermediate frequencies — briefly encoding wrong colour values — before settling at the correct steady-state frequency. The result is a vivid flare of incorrect colour at vertical bar edges, unique to SECAM. It only appears with true accumulated-phase FM encoding: the simulation uses a per-line sequential CPU kernel specifically because GPU parallelism cannot produce this physically correct FM transient.
Chroma Smear
Colour has lower bandwidth than brightness in every standard. Sharp colour boundaries are blurry in the horizontal direction. VHS makes this far worse — colour bandwidth collapses to ~500 kHz.
VHS Head Switch
At the bottom of each frame, the tape heads briefly disengage as the cassette mechanism cycles. This produces a horizontal noise stripe — visible with the INTL + VHS toggles active.

Magnetic Tape Between the Signal and the Screen

In the 1970s–1990s, the path from tuner to television almost always passed through a VCR. Each recording format imposes a distinct set of physics constraints: the FM carrier frequency limits horizontal resolution, the colour-under heterodyne system introduces chroma phase noise, the mechanical transport produces skew, flutter, dropout, and head-switching bands. All format parameters are derived from primary specifications — IEC 60774 series, Sony engineering documents, and SMPTE standards.

Bypass — Pass-Through
No tape stage. The composite signal passes directly from the tuner to the CRT without any tape-domain processing. Use this when the source should be clean of tape degradation.
VHS SP / LP / EP — IEC 60774-1

The dominant consumer format (1976–2008). Luma is FM-modulated at 3.4–4.4 MHz NTSC (3.8–4.8 MHz PAL), a 1.0 MHz deviation that limits horizontal resolution to approximately 240 TVL. Chroma is heterodyned down to 629 kHz (NTSC) / 627 kHz (PAL) — the colour-under system — and recorded separately below the luma FM carrier. On playback the up-converter is phase-locked to the recovered sync, but residual tape-speed jitter that differs between the sync and chroma paths produces hue instability (Δφ = 2π × 629 kHz × Δt). LP and EP modes use the same carrier frequencies but narrower track pitches (LP: ~29 µm NTSC; EP: ~12.5 µm vs SP 58 µm), increasing azimuth crosstalk and dropout rate while leaving bandwidth nominally unchanged. A consumer aperture-correction circuit (high-frequency shelf +3–6 dB at ~2 MHz) was standard from ~1985, adding characteristic edge ringing. Y-SNR ≈ 42 dB.

FM luma: 3.4–4.4 MHz NTSC · Colour-under: 629 kHz · 240 TVL · Y-SNR 42 dB · Edge enhance: yes
Betamax — Sony (1975)

Sony's competing consumer format. The head drum diameter is 74.5 mm versus VHS's 62 mm, giving a 21% faster head writing speed (6.9 m/s vs 5.8 m/s). This allows a wider FM deviation of ~1.3 MHz (3.5–4.8 MHz NTSC) versus VHS's 1.0 MHz, yielding approximately 250 TVL — marginally sharper than VHS SP. The colour-under carrier is 688 kHz (NTSC) / 689 kHz (PAL), higher than VHS's 629 kHz. Because Δφ = 2πfΔt, a higher carrier produces a larger phase error per unit of time-jitter; however, Betamax machines tended to have slightly tighter servo tolerances which compensated. The format war was decided by tape duration, not picture quality: early Beta I held only 60 minutes.

FM luma: 3.5–4.8 MHz NTSC · Colour-under: 688 kHz · 250 TVL · ~43 dB SNR
S-VHS — IEC 60774-3/4 (1987)

Super-VHS raises the luma FM carrier to 5.4–7.0 MHz (NTSC), widening the deviation to 1.6 MHz. This lifts horizontal resolution to approximately 420 TVL — exceeding NTSC broadcast (~330 TVL). Critically, the colour-under system is unchanged from standard VHS: chroma is still heterodyned to 629 kHz (NTSC). S-VHS therefore has dramatically sharper luma but identical chroma quality and stability to standard VHS. The S-Video connector separates Y and C in the baseband output to prevent luma-chroma cross-talk at the TV input, but the tape itself still records colour-under. S-VHS camcorders were a popular prosumer format through the 1990s.

FM luma: 5.4–7.0 MHz NTSC · Colour-under: 629 kHz (unchanged) · 420 TVL · ~46 dB SNR
Hi8 — IEC 60774-6 (1989)

Sony's 8mm upgrade applies the same principle as S-VHS to the 8mm cassette: the FM carrier is raised to 5.7–7.7 MHz with a 2.0 MHz deviation, achieving approximately 415 TVL. The colour-under carrier is 732 kHz (NTSC) / 743 kHz (PAL) — higher than VHS's 629 kHz, giving marginally less hue jitter per unit tape-speed variation. Hi8 camcorders competed directly with S-VHS for the prosumer market through the 1990s; the 8mm cassette was more compact, making Hi8 the preferred format for shoulder-mount ENG cameras by many independent broadcasters.

FM luma: 5.7–7.7 MHz · Colour-under: 732/743 kHz NTSC/PAL · 415 TVL
U-Matic ¾" — IEC / SMPTE (1971)

The first cassette format adopted for broadcast ENG. The wider ¾" tape, faster head writing speed (8.54 m/s), and higher FM deviation (1.6 MHz, 3.8–5.4 MHz lo-band NTSC) give approximately 280 TVL from a machine with significantly better servo engineering than consumer decks. Flutter is typically below 0.02% wrms. Colour-under sits at 688.373 kHz (NTSC lo-band). U-Matic was the dominant ENG format from the mid-1970s until Betacam displaced it in the early 1980s; hi-band SP variants (5.6–7.2 MHz) pushed resolution to ~330 TVL. The look of U-Matic lo-band — moderately sharp, slightly warm, occasional dropout — is the visual language of 1970s TV news.

FM luma: 3.8–5.4 MHz NTSC · Colour-under: 688.373 kHz · ~280 TVL · Writing speed 8.54 m/s
Betacam SP — Sony Component FM (1986)

Betacam SP solves the fundamental limitation of colour-under by abandoning it entirely. Luma (Y) and the two colour-difference signals (R-Y, B-Y) are recorded as separate FM tracks: Y at 6.8–8.8 MHz (2.0 MHz deviation), R-Y and B-Y time-compressed 2:1 and interleaved on the C track at 5.6–7.3 MHz (CTDM). Because there is no heterodyne, there is no tape-speed-induced hue jitter. Y-SNR exceeds 50 dB; C-SNR exceeds 52 dB — roughly 8 dB better than VHS SP in every channel. The precision direct-drive drum and capstan servo keeps flutter below 0.02% wrms. Betacam SP became the standard for broadcast field acquisition from the mid-1980s through the mid-2000s, when it was displaced by IMX and DVCAM digital formats. No edge enhancement circuit — the signal goes directly to downstream equipment.

Y: 6.8–8.8 MHz FM · C: 5.6–7.3 MHz CTDM · Component (no colour-under) · Y-SNR >50 dB · ~340 TVL

All eight format presets snap the tape, mechanical, and signal sliders to documented values. Individual controls remain fully adjustable — combine VHS EP with maximum dropout and tracking error for aged-tape degradation, or set Betacam SP generations to 3 to model a dub chain that lost its way.

Transport Controls

VHS helical-scan mechanics produce a distinct family of distortions for each transport mode. The drum (62 mm diameter, 1,800 rpm NTSC / 1,500 rpm PAL) rotates continuously while tape speed determines how many recorded tracks the heads cross per revolution.

Still Frame / Pause

When the tape stops, the drum continues rotating at full speed. Each head traces a straight diagonal line across the stationary tape — a path that is not aligned with the recorded helical tracks (~3° helix angle). Partway through each revolution, the head crosses from one track onto the adjacent track (which has opposite azimuth, ±6° difference). This transition produces a horizontal noise bar spanning 4–20 scan lines, its vertical position adjustable by the tracking control (which shifts the exact tape tension and therefore the crossover point). Above the bar the picture is clean; below it the head is reading the adjacent azimuth-mismatched track, causing ~25 dB of signal attenuation and chroma phase scrambling. Three-head decks position a third video head to land cleanly on the track centre in pause mode, eliminating the bar entirely.

On pause engagement, the CTL (control track) pulse train — the servo reference that keeps the drum phase locked to the tape's recorded fields — is no longer available. The VCR's capstan servo loses its timing reference and the drum's phase relationship to the recorded sync pulses shifts by a random amount, typically 35–220 scan lines. The television's vertical hold PLL (a second-order loop with a ±40-line pull-in window) must re-acquire sync from the new position. If the shift is within the pull-in range, the frame rolls then re-locks within 2–4 frames. If it exceeds the capture window, the picture rolls continuously until the PLL hunts to the new sync position. After lock, residual drum servo jitter (±2–3 lines, correlated noise with τ ≈ 300 ms) produces a subtle ongoing frame waver characteristic of low-grade consumer decks. The simulation models this with a 2nd-order PLL: on pause entry a random phase offset is injected into the PLL's sync target; the loop then rolls, overshoots, and settles with authentic timing constants.

Noise bar: 4–20 lines · Tracking-adjustable position · Chroma phase loss at boundary · V-Hold roll on pause entry · Frame waver after lock (±2–3 lines IIR jitter)
Cue / Review — Fast-Forward or Rewind with Picture (×5)

At ×5 tape speed (166.75 mm/s NTSC SP), the tape advances 5,565 µm per drum revolution — enough to cross approximately five recorded tracks (track pitch along tape = 1,113 µm). The heads alternate azimuth (A: +6°, B: −6°) between adjacent tracks. The playback head reads: same-azimuth track → full signal; opposite-azimuth track → ~30 dB rejection → noise. This produces the characteristic venetian-blind effect: alternating horizontal bands of recognisable picture and luminance noise, each band occupying approximately 1/10 of the frame height at ×5. Chroma is completely absent — the VHS colour-under phase-coherence system requires adjacent-field phase alignment that is destroyed at off-speed transport. The stripe pattern scrolls upward during cue (forward) and downward during review (reverse), at a rate of approximately (S−1)/S × frame_height per frame, where S is the speed ratio. At ×5, the full pattern cycles through one frame in about 167 ms.

~10 stripe transitions at ×5 · Upward scroll (cue) / downward (review) · Chroma absent · Luma ×0.80 in picture stripes
Slow Motion

Consumer VHS decks achieve slow motion by electronic field repetition — playing at normal tape speed and repeating each captured field 3 or 5 times before advancing to the next. The still-frame noise bar is present and stationary during each repeated field; motion appears as discrete steps rather than smooth interpolation. Professional 3-head decks (Panasonic AG series, JVC editing decks) position additional heads to land cleanly on the track at 1/3 or 1/5 tape speed, eliminating the noise bar and producing smooth sub-speed motion. Audio pitch is reduced proportionally to tape speed (linear audio and HiFi both shift by the speed factor).

Consumer: field repetition + static noise bar · Professional: multi-head, clean · Audio pitch ∝ tape speed
SOURCES & REFERENCES ▾
  1. IEC 60774-1:1994Video cassette tape recording systems — Part 1: VHS — specifications for half-inch magnetic tape cassette. Specifies FM luma carrier 3.4–4.4 MHz NTSC, colour-under 629 kHz, SP/LP/EP track pitch, Y-SNR ≥ 42 dB, and mechanical skew/flutter tolerances (§4 signal parameters, §5 test methods).
  2. IEC 60774-3:1993Video cassette tape recording systems — Part 3: S-VHS. Raises FM carrier to 5.4–7.0 MHz NTSC; specifies retained 629 kHz colour-under carrier; Y resolution ≥ 400 TVL (§4.2.1).
  3. IEC 60774-4:2002Video cassette tape recording systems — Part 4: S-VHS ET mode. Extension of Part 3 covering recording of S-VHS signal on a standard VHS cassette; PAL/SECAM signal parameters.
  4. IEC 60843-3:1993Video systems of 8 mm type — Part 3: High-band recording system (Hi8). FM carrier 5.7–7.7 MHz; colour-under 732 kHz (NTSC) / 743 kHz (PAL); skew spec §5.3.2; Y bandwidth ≥ 415 TVL. (Note: Hi8 is in the IEC 60843 series, not IEC 60774.)
  5. IEC 60386:1972/AMD1:1988Measurement of wow and flutter on sound recording and reproducing equipment. Defines the weighted peak and WRMS flutter metrics cited for all transport specs (≤ 0.1% consumer, < 0.02% professional).
  6. IEC 60712:1993Helical-scan video-tape cassette system using 19 mm (¾ in) magnetic tape — U-format. Lo-band FM 3.8–5.4 MHz NTSC; colour-under 688.373 kHz; head writing speed 8.54 m/s; ~280 TVL. (Note: IEC 60857 is the LaserDisc standard; U-matic is IEC 60712.)
  7. SMPTE RP 47:1999Electronic Method of Dropout Detection and Counting. Defines dropout event geometry (level drop ≥ 20 dB, minimum duration ≥ 1 µs) used for the shader's block-seed Poisson model.
  8. Sony BVW-75 Betacam SP studio recorder/player specification sheet — Source for Y FM carrier 6.8–8.8 MHz, C CTDM 5.6–7.3 MHz, Y-SNR > 50 dB, flutter < 0.02% wrms. Additional specs at betacam.palsite.com.
  9. Sony VHS service manual colour signal path chapter (c.1985) — Documents heterodyne down-conversion to 629 kHz, pilot-burst phase-lock loop, and the mechanism by which tape-speed jitter (Δt) produces hue instability Δφ = 2π × funder × Δt. Circulated in service literature; no single public URL.
  10. C. Poynton, Digital Video and HDTV (Morgan Kaufmann, 2003) — Chapter 18: composite and component recording; aperture correction shelf boost, colour-under frequency selection trade-offs, and generation loss mechanics.
  11. vhs-decode / ld-decode project wiki (2020–2024) — Community-maintained reference for FM carrier parameters, colour-under math, dropout statistics, and head-switching timing across all helical-scan formats. Used to cross-check IEC figures.
  12. VHS helical-scan geometry (derived): track pitch along tape = tape_speed ÷ drum_speed = 33.35 mm/s ÷ 29.97 rev/s = 1,113 µm/rev (NTSC SP). Track pitch perpendicular to track = 1,113 µm × sin(3.0°) ≈ 58.3 µm — consistent with IEC 60774-1 specified 58.5 µm ±1%. Helix angle ~3.0°, azimuth ±6° per head (12° differential). Transport mode stripe count at ×S speed = 2·⌊S⌋; scroll rate per frame = (S−1)/S.

Injected Into the Composite Signal

Every effect is injected into the composite signal itself — not applied as a post-process filter — so it interacts with the decoder's comb filters and demodulators exactly as it would on real hardware.

Multipath Ghosts (GHOST · G2 · G3)
The TV signal bounces off buildings, hills, and terrain before reaching the antenna. Each reflected path arrives a few microseconds late — tens of composite samples — adding a faded, horizontally-shifted echo of the picture. Three independent ghosts with separate delays and amplitudes. Because echoes enter the buffer before decoding, the comb filter, chroma demodulator, and SECAM discriminator all react authentically.
Airplane Flutter (FLUTTER)
An aircraft flying between transmitter and receiver reflects a time-varying ghost. Two slightly mismatched oscillators (~0.68 Hz and ~0.51 Hz) beat against each other, producing the irregular, slowly-pulsing brightness variation that characterises actual aircraft flutter. At FLUTTER = 0 Ghost 1 is static; at 1.0 the amplitude swings between zero and twice its set level.
Hum Bars (HUM)
Mains electricity (50 or 60 Hz) enters the signal path through the power supply or an unshielded antenna cable, adding sinusoidal modulation to the composite baseline. Because the mains frequency doesn't exactly match the TV field rate, the bars roll slowly upward at the beat frequency — one full revolution roughly every 16 seconds. Continuous and automatic.
Co-Channel Interference (CO-CH)
When two transmitters broadcast on the same channel from different locations, their carriers beat against each other at a few hertz. The beat creates a spatially-coherent sinusoidal pattern — diagonal lines of alternating bright and dark — that drifts across the picture at ~4 Hz. The classic "venetian blind" effect from fringe reception areas.
Impulse Noise (IMPULSE)
Car ignition systems, electric motors, and light dimmers produce brief broadband RF pulses. Each pulse hits a fraction of a horizontal scan line, causing a bright white streak. IMPULSE controls both the probability of a line being struck each frame and the spike amplitude — from occasional flickers to a noisy urban environment.
IF Filter Ringing (RING)
A TV receiver's IF strip uses a surface-acoustic-wave (SAW) or LC bandpass filter to select the desired channel. Every filter with a finite transition band has a damped sinusoidal impulse response — "ringing" — that trails any sharp signal transition. The simulator models this with a 15-tap Kaiser-windowed FIR bandpass kernel run at the composite sample rate (4× colour subcarrier). Because it operates on the full composite waveform before decoding, the ringing interacts with the chroma subcarrier and is decoded by the comb filter along with the rest of the signal — exactly as real receiver hardware behaves.

From Subcarrier to Speaker

Analog TV audio was a complete engineering system — FM subcarriers, intercarrier mixing, stereo multiplexing, pre-emphasis curves, and finally a small speaker in a wooden box. Every artefact in this chain is modelled and audible in the app.

FM Audio Subcarrier
Analog TV audio was FM-modulated onto a separate carrier above the video carrier. NTSC: +4.5 MHz offset, ±25 kHz peak deviation, 75 µs pre-emphasis. PAL B/G: +5.5 MHz, ±50 kHz, 50 µs. PAL I (UK): +6.0 MHz. SECAM L (France): uniquely used AM at −6.5 MHz rather than FM. The 4.5 MHz offset in NTSC is locked to the intercarrier difference between picture IF (45.75 MHz) and sound IF (41.25 MHz). Pre-emphasis boosts HF before transmission so de-emphasis at the receiver suppresses the FM noise spectrum above ~2 kHz.
Intercarrier Buzz
The most characteristic analog TV audio artefact. In the intercarrier sound system, the picture carrier and audio carrier are mixed together through the IF strip; their 4.5 MHz (or 5.5/6.0 MHz) beat carries the FM audio. Any AM on the video carrier — from sync pulses, colour burst, or scene transitions — is converted to FM in this beat, producing audio distortion. Two mechanisms: (1) residual AM through the FM limiter; (2) incidental phase modulation (ICPM) from the asymmetric VSB Nyquist slope, which cannot be eliminated by limiting alone. The result is a comb of harmonics at the field rate: 60 Hz for NTSC, 50 Hz for PAL, extending through the audio band with −6 dB/octave rolloff. Sync pulses cause the most buzz; a pure black field produces almost none. Well-aligned sets: −40 to −50 dB below programme. Poorly aligned: clearly audible rough buzz. The ratio detector gave ~20–26 dB AM rejection; the quadrature IC (TBA120, from ~1974) improved this; PLL demodulators nearly eliminated it.
Stereo Systems
NTSC MTS/BTSC stereo (1984): pilot tone at fH = 15.734 kHz, L−R double-sideband suppressed-carrier at 2×fH = 31.468 kHz, Second Audio Program FM subcarrier at 5×fH = 78.670 kHz. The L−R signal is dbx-encoded (2:1 companding). All modulated onto the 4.5 MHz FM carrier. PAL A2/Zweikanalton (Germany, 1981): a second sound carrier at +5.742 MHz (242 kHz above the primary = 15.5×fH), with a 54.6875 kHz stereo pilot. Carrier spacing is chosen at 15.5×fH so intermodulation products fall outside the audio band. Stereo separation ~26 dB in practice. NICAM 728 (UK 1986, Europe late 1980s): 728 kbit/s DQPSK digital audio carrier at +5.85 MHz (B/G) or +6.552 MHz (UK System I); 14-bit PCM near-instantaneously companded to 10 bits at 32 kHz; first broadcast BBC2, 18 July 1986. All systems coexist with the mono FM carrier for backward compatibility.
Pre-emphasis / De-emphasis
FM audio noise power is proportional to f² before de-emphasis (triangular noise spectrum). Pre-emphasis boosts HF at the transmitter; de-emphasis at the receiver restores flat response and simultaneously suppresses HF noise. NTSC uses a 75 µs time constant (−3 dB at 2,122 Hz), identical to US FM broadcast radio. PAL/SECAM use 50 µs (−3 dB at 3,183 Hz). At 10 kHz these differ by 3.7 dB. A 75 µs source decoded with a 50 µs receiver sounds too bright and harsh; the reverse sounds dull and muffled. This was a real problem when importing NTSC VCRs to PAL countries. The simulation's mismatch control applies the exact frequency-dependent error for both directions.
VCR Linear Audio
VHS linear audio is recorded by a stationary head along the tape edge, as two 0.7 mm tracks. At SP speed: 100 Hz–10 kHz, ~40 dB SNR — audible high-frequency hiss even with programme material. At LP and EP speeds the bandwidth and SNR degrade further (EP: ~100 Hz–3 kHz, −6 dB SNR relative to SP). Dropouts appear as brief crackle or muting events with no error correction. Betamax linear was marginally better (~45–50 dB SNR, slightly wider bandwidth) due to wider tracks. This is the characteristic "cassette tape quality" sound of consumer VHS recordings from the 1980s.
VHS Hi-Fi (AFM Depth Multiplex)
Introduced by JVC in 1983. FM audio carriers are depth-recorded first by dedicated heads with ±30° azimuth tilt: left channel at 1.3 MHz, right at 1.7 MHz (NTSC), ±150 kHz peak FM deviation. The audio penetrates deep into the magnetic coating because lower-frequency FM magnetises deeper layers. Video heads then record the video signal on the same track surface — the higher-frequency video FM only magnetises the top layer, leaving the audio layer intact. A differential cancellation circuit on playback isolates the AFM audio. Specifications: 20 Hz–20 kHz, ~70 dB SNR A-weighted, effectively zero wow and flutter (driven by the drum servo). Despite these measurements, VHS Hi-Fi has a characteristic "swishing" noise floor — slightly blue-tilted noise from imperfect differential cancellation of the video signal, audible during quiet passages. Head-switching clicks occur at 29.97 Hz (NTSC) / 25 Hz (PAL), phase-locked to vertical sync.
FM Threshold Noise
Below a carrier-to-noise ratio of ~10–12 dB, FM demodulation breaks down. Individual noise events cause rapid phase rotations in the demodulated carrier; each appears as a click ~0.2 ms wide in the audio output. Above threshold the audio is clean. Near threshold: occasional clean pops at 1–5 per second. Below threshold: crackle increasing in density until it becomes continuous sputtering that obliterates the programme audio. The transition feels like a cliff — particularly noticeable when rotating an aerial. PLL demodulators extend the useful range by ~2–3 dB compared to a ratio detector. The simulation's signal strength control traverses this exact progression from clean to continuous crackle.
Multipath Audio Distortion
When the TV signal arrives via multiple paths (direct plus building reflections), the composite received signal is a vector sum with varying phase. This creates amplitude variations at the received carrier which, through the ICPM mechanism, introduce frequency modulation on the audio carrier — directly distorting the demodulated audio. The effect on audio is a "watery" or "warbling" character, worst on sustained tones. Aircraft flutter translates to audio pitch warble at 1–20 Hz as the aircraft's Doppler-shifted reflection sweeps in level and phase. At the worst-case path-length difference (two equal-amplitude signals at 180° phase), the received carrier approaches zero — triggering the FM threshold noise mechanism for the duration of the null.
Test Tones
The app provides six historically grounded test tone options, each processed through the full simulated audio chain so artefacts like intercarrier buzz and FM hiss are clearly audible against the steady reference.

1 kHz — ITU-R BS.645-2 / BBC One / SMPTE analogue. The universal broadcast alignment reference. BBC One transmitted a continuous 1 kHz tone at 0 dBu = −18 dBFS (EBU R68) during test card and close-down periods. SMPTE colour bars carry 1 kHz at −20 dBFS (+4 dBu, SMPTE RP 155). Frequency accuracy was maintained to better than 1 Hz from rubidium oscillator references from the early 1980s. GLITS (Graham's Line Identification Tone System, BBC mid-1980s): 1 kHz continuous with channel-identifying interruptions — left channel interrupted once for 250 ms every 4 seconds, right channel twice with 250 ms gap, starting 250 ms after the left.

400 Hz — BBC Two / EBU dual-language. BBC Two used 400 Hz during test card periods, allowing engineers to instantly identify which channel they were monitoring without looking at a picture. The 400 Hz tone is also specified in EBU Tech 3304 §2.1 as the secondary-channel identification tone in dual-language broadcasts, where the primary language carries 1 kHz and the secondary carries 400 Hz.

997 Hz — digital production / SMPTE digital. In digital production environments, 1000 Hz is avoided because it produces a periodic pattern in the sample stream that can expose aliasing artefacts in some converters. 997 Hz is prime, so it never produces a repeating integer-sample cycle, exercising the full DAC range without reinforcing any harmonic. SMPTE RP 155 references 997 Hz for digital level alignment with SMPTE bars.

853 + 960 Hz — EBS Attention Signal. The Emergency Broadcast System (USA, 1963–1997) Attention Signal consisted of two simultaneous tones at 853 Hz and 960 Hz, sounding together for 8–25 seconds. The dual-tone combination was chosen to be distinctive and difficult to confuse with programme material or equipment noise. Specified in 47 CFR §11.31 and maintained in FEMA/FCC documentation. Replaced by the EAS SAME digital header in 1997.

1050 Hz — NOAA Weather Radio Warning Alarm Tone. The 1050 Hz Warning Alarm Tone (WAT) is transmitted by NOAA Weather Radio All Hazards stations before Tornado Warnings and other imminent-threat alerts. It activates dedicated weather-alert receivers and is distinct from the EAS SAME header (an AFSK data burst at 2083.3/1562.5 Hz). Specified in NOAA Weather Radio operational guidelines and FCC Part 11 subpart D.
CRT TV Speaker
Consumer CRT television speakers were 3–6 inch single-driver units mounted in small, often rear-firing enclosures. Power amplifiers ranged from 1–3 W in the 1960s–1970s to 5–10 W by the late 1980s. The acoustic result was: essentially no output below ~150 Hz; a resonant bump at 200–400 Hz from cabinet and driver resonance giving a characteristic "boxy" or "honky" quality; −3 dB rolloff by 6–8 kHz. The midrange coloration from the cabinet resonance is the defining character of vintage TV audio — everything sounds as if emerging from the back of a wooden box. The simulation applies a 4-stage EQ: 2nd-order high-pass at 150 Hz; +3 dB peaking EQ at 300 Hz (Q=1.5); 1st-order low-pass at 8 kHz; −2 dB notch at 3.5 kHz (Q=3, driver breakup). Speaker simulation can be bypassed for headphone listening.
SOURCES & REFERENCES ▾
  1. ITU-R BS.468-4 (1986)Measurement of audio-frequency noise voltage level in sound broadcasting. Defines the A-weighting and quasi-peak detector used when specifying audio SNR in broadcast chains. Cited for FM audio noise floor measurements.
  2. ITU-R BT.470-7 (2005)Conventional analogue television systems. Table 1 gives FM sound carrier offsets and peak deviations by standard: NTSC +4.5 MHz ±25 kHz; PAL B/G +5.5 MHz ±50 kHz; PAL I +6.0 MHz ±50 kHz; PAL D +6.5 MHz ±50 kHz. Pre-emphasis time constants: 75 µs (NTSC/System M), 50 µs (PAL B/G/I/D/K).
  3. ITU-R BS.1770-4 (2015)Algorithms to measure audio programme loudness and true-peak audio level. Background reference for loudness alignment and the −18 dBFS = 0 dBu (EBU R68) test tone level used during BBC test card transmissions.
  4. N. Gilchrist, "The EBU loudness recommendation R 68," EBU Technical Review No. 260 (1994) — Documents the 0 dBu = −18 dBFS alignment level used in European broadcast, including the BBC test-tone convention. PDF hosted by EBU.
  5. EBU R 68-2000Alignment level in digital audio production equipment and in digital audio recorders. Specifies −18 dBFS = 0 dBu alignment; forms the basis of BBC 1 kHz test tone level.
  6. SMPTE RP 155:2004Alignment of audio levels for digital television operation. Specifies 1 kHz reference tone at −20 dBFS for SMPTE colour bars; the standard used by US broadcast facilities for level alignment.
  7. EBU Tech 3304 (1992)Dual-language television sound transmissions. §2.1 specifies 400 Hz as the secondary-channel identification tone (primary language carries 1 kHz, secondary carries 400 Hz). Basis for BBC Two's use of 400 Hz during test card periods.
  8. 47 CFR Part 11 — Emergency Alert System (FCC) — §11.31 specifies the EBS Attention Signal as two simultaneous tones at 853 Hz and 960 Hz for 8–25 seconds; superseded EBS system (1963–1997) with the SAME digital protocol. Primary source for EBS dual-tone parameters.
  9. NOAA Weather Radio All Hazards — NWS operational documentation — The 1050 Hz Warning Alarm Tone (WAT) activates dedicated weather-alert receivers before Tornado Warnings and other imminent-threat alerts. Distinct from the EAS SAME header (AFSK 2083.3/1562.5 Hz digital data burst).
  10. RCA Technical Report TRS-N-65-31 (1965) — Intercarrier buzz mechanism in monochrome and colour receivers: AM-to-FM conversion via ICPM at the vestigial-sideband Nyquist slope; ratio detector AM rejection (~20–26 dB). Basis for the comb-of-harmonics model used in the simulation.
  11. RCA Engineer 18-2 (1972) — "Residual intercarrier buzz in color receivers" by C. Eilers & G. Sgrignoli. Quantifies buzz as a function of IF alignment; shows field-rate comb structure and −6 dB/octave spectral slope. PDF hosted at worldradiohistory.com.
  12. SMPTE ST 170:2004Composite Analog Video Signal — NTSC for Studio Applications. Appendix B specifies 75 µs pre-emphasis time constant and the 4.5 MHz intercarrier FM audio deviation limits used for NTSC receivers.
  13. K. B. Benson & J. Whitaker, Television Engineering Handbook (McGraw-Hill, 1992) — Chapter 15 (Sound Transmission and Reception): FM threshold derivation, ratio vs. PLL demodulator capture-threshold comparison (~2–3 dB advantage for PLL), pre-emphasis mismatch error at 10 kHz. Chapter 20: CRT audio amplifier and speaker design trade-offs.
  14. R. W. Jurgen (ed.), Consumer Electronics, IEEE Press (1994) — VHS Hi-Fi AFM audio: helical-track FM carriers at 1.3 and 1.7 MHz (NTSC), differential-cancellation playback circuit, 70 dB A-weighted SNR specification, residual "swish" noise mechanism.
  15. D. E. L. Shorter, "Intermodulation distortion in frequency modulation broadcast transmitters and receivers," Proceedings of the IEE Part B, Vol. 97 (1950) — Early treatment of FM threshold behaviour and the Poisson-process model for below-threshold click noise events. Foundational reference for the crackle simulation.

The Viewer's Side of the Signal

These sliders model the physical adjustment controls found inside a real CRT television. They operate exclusively on the decoded composite signal — the encoded waveform is never modified — so sync pulses and colour burst remain pristine.

H-Hold (Horizontal Hold)
The horizontal oscillator must lock to line sync pulses at exactly 15,625 Hz (PAL) or 15,734 Hz (NTSC). When it drifts, each successive line starts a few composite samples earlier or later, accumulating as a sawtooth that shears the picture diagonally. At the fold point the picture wraps around the screen edge, leaving a vertical noise stripe.
V-Hold (Vertical Hold)
The vertical sync circuit uses a free-running relaxation oscillator running near the field rate (60 Hz NTSC / 50 Hz PAL). The V-Hold pot trims its free-running frequency. Incoming vertical sync pulses attempt to fire it early or late to bring it into phase — but only if the phase error is small enough. Three regimes exist: when the oscillator is close to sync (within ~8 lines), sync captures it immediately and the picture locks — entry into lock produces a characteristic snap and overshoot, modelled as a second-order PLL with damping ratio ζ ≈ 0.65. Further out (up to ~40 lines of error), a pull-in region exists where sync nudges the oscillator toward lock over several frames before it snaps in. Beyond that, sync can no longer reach the oscillator and the picture rolls freely at the frequency difference, completing one revolution every few seconds at slight mis-tuning. The classic failing-capacitor symptom was a set that had lost enough charge on its vertical timebase capacitor to drift outside the pull-in range, giving continuous roll; turning the V-Hold knob slowly would find the pull-in window, nudge the picture toward lock, and produce the snap. Accumulated every frame by a phase-oscillator model in the renderer; reset to zero by RESET ALL.
H-Phase (Horizontal Position)
A physical trim control on the deflection yoke that shifts the electron beam's horizontal starting position without affecting the oscillator frequency. Used during factory calibration to centre the picture within the raster. Shifting too far exposes the blanking interval — containing sync pulses and colour burst — on one side of the screen. Range: ±100 composite samples.
V-Phase (Vertical Position)
The equivalent centering control for the vertical axis. On many consumer sets this was a preset potentiometer on the chassis rather than a front-panel knob, adjusted during servicing. At extreme offsets the blanking interval — a thick black band — becomes visible at the top or bottom of the picture.
RF Fine Tuning
Slightly off-tuning the VHF or UHF front end shifts the IF carrier frequency away from nominal, creating a beat between the received colour subcarrier and the TV's internal colour reference oscillator. The resulting phase error varies sinusoidally across both horizontal and vertical dimensions, producing the characteristic herringbone or diagonal hatch pattern. Slider maps 0 → π radians of peak chroma phase error.
INTL (Interlaced Scanning)
Real broadcast television transmitted two fields per frame: one containing even-numbered lines, one odd-numbered lines, each at the full field rate (50 or 59.94 Hz). INTL samples every other source line per field — field 0 captures rows 0, 2, 4…; field 1 captures rows 1, 3, 5… — giving each field genuine half-vertical-resolution. The CRT post-process stage shifts its scanline mask by one row between fields, replicating phosphor interleave.

Electron-Gun & Phosphor Physics, From Warmup to Shutdown

Most CRT simulations post-process a finished frame with scanline overlays and bloom. This app models the full physical lifecycle of a real CRT — phosphor chemistry, electron-gun scan geometry, and the complete vacuum-tube power sequence: heater warmup, raster collapse, EHT discharge, and the glowing centre spot left on the screen after the beam finally dies. All from first principles, not image filters.

P22 Phosphor IIR Temporal Accumulation

Every real CRT phosphor continues glowing after the electron beam has moved on. The persistence curve is exponential: when the beam cuts to black, luminance follows L_n = decay^n × L_0 — halving every fixed number of frames. The app models this with a per-pixel, per-channel IIR filter running at full resolution in a Metal compute kernel:

phosphor_new[c] = decay[c] × phosphor_prev[c] + (1 − decay[c]) × excitation[c]

The (1 − decay) weight is critical: it normalises the accumulation so that a steady constant input converges to exactly that input level. There is no brightness creep regardless of the decay factor — a consequence of the IIR steady-state theorem (setting phosphor_new = phosphor_prev = ss gives ss = excitation). Per-channel decay constants model the P22 phosphor triad used in virtually all consumer colour CRTs: red (Y₂O₂S:Eu) is the most persistent (decay multiplied by 1.15), green (ZnS:Cu,Al) is the reference (1.0×), and blue (ZnS:Ag) decays fastest (0.85×). All values are clamped to ≤ 0.985 so the system always converges. The user-facing Phosphor Decay slider scales the midpoint; the per-channel spread is always maintained.

Ping-Pong RGBA16Float Texture Architecture
The phosphor state cannot be read and written in the same pass — a GPU compute kernel cannot simultaneously sample and write to the same texture. Instead, two RGBA16Float private Metal textures alternate roles every frame: one is bound as access::read (the previous frame's accumulated phosphor), the other as access::write (the current output). On the next frame the roles swap. This ping-pong scheme provides full 16-bit floating-point precision per channel with zero GPU readback or CPU round-trips. The final CRT render pass always samples the just-written (current) phosphor texture, not the raw decode.
Beam Scan Window & Speed Control
A real CRT electron gun sweeps the screen from top to bottom in one field period. The app exposes a Beam Speed parameter: at 1× speed the entire screen is written each frame (normal operation). At ½×, only half the screen height is written per frame — the rest receives no new excitation and simply decays — so the visible top-to-bottom sweep takes two frames to complete. At ¼× four frames, at ⅛× eight frames. The beam's position is tracked by a normalised accumulator (beamScanLine) that advances by speed each frame and wraps at 1.0. The shader receives two parameters — beamScanTop and beamScanBottom — that define the active excitation window for the current frame; rows outside this range receive only the decay term. When speed ≥ 1.0 the accumulator is forced to [0, 1] and the scan line counter is reset, preventing a stale mid-screen window from persisting after the user turns the effect off.
Shadow Mask, Aperture Grille & Slot Mask
The front surface of a colour CRT phosphor screen is covered by a fine metal grille — the convergence mask — that ensures each of the three electron beams excites only its own colour phosphor dots. The geometry of this mask varies by tube type. The app procedurally generates three mask types in the CRT fragment shader, computed from the screen-space pixel coordinate (not the signal coordinate, so the pattern stays physically anchored to the display surface): Shadow mask — a delta-triad arrangement of circular phosphor dots separated by a steel mask, as used in most consumer televisions; Aperture grille — vertical phosphor stripes separated by fine tensioned wires, as used in Sony Trinitron and Mitsubishi Diamondtron tubes; Slot mask — a hybrid arrangement with rectangular phosphor slots, as used in many professional broadcast monitors. All three patterns are sub-pixel accurate and screen-pixel-locked — the mask position is independent of the video content.
Halation Bloom
In a real CRT, the electron beam excites phosphor dots on the inner face of the glass faceplate. A fraction of the light emitted travels laterally through the glass before escaping — spreading a soft glow around bright regions, most visibly around white text and specular highlights. This is halation: the optical equivalent of lens flare inside the tube itself. The app's halation parameter adds a bloom term derived from the accumulated phosphor luminance (not the raw input), so bright regions that have built up persistence glow more than transient bright flashes. The effect reads from the same ping-pong phosphor texture as the rest of the CRT pass.
Barrel Lens Distortion
The glass faceplate of a CRT is curved — convex outward — to maintain a constant electron-gun-to-screen distance across the full deflection angle. When viewed flat-on, this curvature causes straight horizontal and vertical lines to bow outward toward the screen edges: barrel distortion. The app applies a radially symmetric barrel warp with a configurable curvature coefficient (default 0.08) in the CRT fragment shader. The distortion is applied to the texture sampling UV coordinates, so the entire rendered image — phosphor glow, mask, scanlines, and vignette — all share the same warped geometry, exactly as they would on a physical tube.
Phosphor Type Presets — Eight Types, Primary-Source Calibrated

Eight authentic phosphor types are available, each calibrated from primary source measurements — manufacturer CIE datasheets, RCA technical publications, and peer-reviewed phosphor literature. Each type shifts the IIR decay constants, rendered emission colour, and shutdown spot tint. Full technical detail and source citations for all eight types are in the dedicated Phosphors section below.

P22 (colour), P31 (oscilloscope green), P45 (white, sub-ms), P4 (B&W television white), P3 (amber radar), P7 (dual-persistence radar: white flash → yellow-green afterglow), P11 (deep blue photographic), P24 (cyan-green flying-spot scanner).

Monochrome phosphors (all except P22) convert the decoded composite signal to luma before accumulation, eliminating false-colour chroma artifacts that would otherwise accumulate on a physically single-compound screen. P7 uses this same luma path despite its two-layer composition — the white-to-yellow-green colour shift emerges from per-channel asymmetric decay of a luma input, not from the composite chroma.

Monochrome Phosphor Physics — Single-Compound Emission

P22 is a three-component phosphor system — separate red, green, and blue chemical compounds in a dot triad — that can reproduce colour by independent excitation of each dot. All other types (P31, P45, P4, P3, P7, P11, P24) are physically incapable of colour output: each is a single spectral emitter, or in P7's case a two-layer cascade whose colour behaviour arises from temporal decay physics rather than colour-channel separation.

This creates a problem for a composite television simulator. The decoded signal is always RGB, and naively accumulating that RGB into P31, P45, P4, P3, P11, or P24 produces false-colour artifacts — visible chroma dot-crawl and hue fringing across what should be a uniform-colour display. A P31 oscilloscope screen doesn't show residual NTSC subcarrier as a red-green-blue shimmer: it shows monochrome green.

The fix is physically correct. When a monochrome phosphor is selected, the decoded RGB frame is collapsed to luma using ITU-R BT.709 coefficients (Y = 0.2126R + 0.7152G + 0.0722B) before entering the IIR accumulator. The scalar is then multiplied by the phosphor's characteristic emission colour to produce the native tint — green for P31, warm white for P4, cool white for P45, amber for P3, deep blue for P11, cyan-green for P24. Single-compound phosphors also use a uniform decay constant across all three output channels.

P7 uses the same luma path despite its dual-layer composition. The white-flash → yellow-green afterglow colour shift emerges from per-channel asymmetric decay applied to a luma input: blue decays fast (minimal 563 nm emission from the slow layer), green decays slowest. Accumulating raw composite RGB would instead let subcarrier chroma artifacts drift independently per channel, producing false colour — not the phosphor's physical emission.

Vacuum-Tube Power Simulation — Warmup, Shutdown & EHT Physics

A real vacuum-tube CRT television goes through distinct physical phases when powered on and off that are entirely absent from solid-state flat-panel simulations. The app models both the tube and solid-state modes.

Power-on warmup (tube mode): When mains is applied, the cathode heater filament requires 15–30 seconds to reach operating temperature. Before the deflection circuits stabilise, the undeflected beam strikes the phosphor at screen centre, producing a bright central spot. As the yoke charges and cathode emission rises, the spot expands outward and the raster forms. A configurable warmup duration (3–30 s) and HV discharge time control the exact pacing.

Shutdown sequence (tube mode): When mains is removed, the deflection oscillators stop instantly. The vertical scan capacitor drains first (small µF, τ ≈ 0.1–0.35 s): the picture squeezes vertically into a bright horizontal line — the same beam energy now concentrated on a thin phosphor strip, producing a dramatic brightness increase. The horizontal scan capacitor drains slightly slower (τ ≈ 0.35–0.55 s): the line shrinks horizontally toward a single bright centre spot. The EHT capacitor bleeds through the bleeder resistor (τ ≈ 0.4–1.5 s via ~10 MΩ): residual 20–30 kV continues driving the beam. On sets without a spot killer, this glowing spot was bright enough to permanently burn the phosphor in seconds — a notorious hazard for careless engineers.

Shutdown spot model: The spot is rendered as two overlapping Gaussians — a tight "beam core" (σ ≈ 1.2% screen radius) representing the physical beam diameter, and a wide "phosphor halo" (σ ≈ 13%) from light scattering through the glass faceplate. On P22 phosphor the spot has a green-white tint (the green gun has the highest output efficiency at high current density). As tube age increases, weaker EHT regulation produces a brighter discharge — up to 60% more intense at maximum ageing. Worn capacitors add position jitter as the discharge current becomes noisier.

EHT sag / size breathing: A bright scene draws more beam current, which loads the flyback transformer and droops the extra high tension supply. Lower EHT means less deflection amplitude — the raster contracts by 1–4% on very bright scenes. The app computes this per-frame from scene brightness × ageing factor, applied as a UV scale before rendering. The effect is negligible on new tubes (ageing below 20%) and becomes clearly visible on old, unregulated sets.

HV arcing: Residual 20–30 kV during EHT bleed-down can arc across aged or worn insulation on the anode cap or flyback secondary winding. The brief plasma discharge emits intense blue-white light (ionised gas). Arc probability scales with tube age and remaining EHT level, so worn tubes arc more frequently and unpredictably during shutdown.

Spot killer: Many post-1970 sets included a spot killer circuit — a relay that blanks the cathode beam the instant mains power is cut, preventing the shutdown spot from burning the phosphor. With the spot killer enabled, shutdown is clean and dark. Disabling it reveals the full shutdown glow sequence as it would appear on an unprotected tube.

Solid-state mode: From the mid-1980s, solid-state switch-mode power supplies replaced the vacuum-tube HV section. Warm-up time dropped to near zero and beam cutoff on power-down is essentially instant. In solid-state mode all power transitions are immediate — no warmup spot, no raster collapse, no shutdown sequence — matching the behaviour of sets like the Sony Trinitron KV-series from 1987 onward.

CRT Service Menu — Geometry, Convergence & HV Controls

A real CRT television contained a hidden service menu — internal adjustments accessible only to a repair technician — covering the geometry, convergence, and high-voltage regulation of the tube. The app exposes the same controls, allowing the display to be deliberately mis-adjusted as an ageing set would gradually drift, or corrected back to factory spec.

HV regulation: Compensates EHT sag on bright scenes. An automatic HV regulator in a well-maintained set slightly expands the raster to counteract the droop caused by high beam current. Adjusting this control below its nominal value replicates the look of an unregulated or worn set where the picture visibly "breathes" in size with scene content.

Pincushion: Corrects the inward or outward bowing of horizontal and vertical lines caused by the geometry of the deflection yoke relative to the curved faceplate. A common fault on ageing yoke assemblies as the ferrite core relaxes. Increasing pincushion makes the sides of the raster bulge inward; decreasing it bows them outward.

Trapezoid: Corrects asymmetric vertical height between the left and right edges of the raster, caused by asymmetric inductance drift in the left and right halves of the deflection coil. A trapezoidal raster is characteristic of early or worn horizontal yoke windings.

Tilt: Rotates the entire raster slightly clockwise or anticlockwise, correcting physical CRT neck rotation or yoke ring misalignment. On vintage sets this was adjusted by physically rotating the yoke clamp; the service menu models it as a pure rotation applied before all other geometry.

Convergence: Adjusts the relative landing positions of the red, green, and blue electron beams on the phosphor triad. Perfect convergence means all three beams land on their respective phosphor dots at every point on the screen. As the yoke epoxy ages and relaxes, the beams drift apart — colour fringing appears at edges and fine detail becomes a rainbow smear. The app models convergence drift as a position-dependent UV offset per gun that increases toward the screen edges, matching the real yoke creep pattern.

DEGAUSS — Physics-Based Lorentz-Force Beam Deflection

Every colour CRT manufactured from the late 1960s onward included a built-in degaussing coil — a loop of wire wound around the inside of the bezel, driven through a positive-temperature-coefficient (PTC) thermistor. When a cold set is powered on, the PTC draws a large initial current through the coil. As the thermistor self-heats over ~1–2 seconds, its resistance rises dramatically, reducing the coil current to near zero. The coil therefore generates a naturally decaying alternating magnetic field — exactly the waveform needed to demagnetise the shadow mask.

Rather than painting a rainbow tint over the image, the app models the actual beam physics. The Lorentz force F = q(v × B) deflects each electron beam laterally. The coil wraps the bezel, so by the Biot-Savart law its field is tangential at every screen position — perpendicular to the radius vector from screen centre. This tangential field drives the characteristic swirling pattern. As the PTC heats and current decays, the field oscillation frequency slows and the amplitude envelope collapses, sweeping increasingly coarser arcs across the mask before dying away.

Inline gun differential: In a colour CRT the red, green, and blue cathodes are arranged horizontally in the gun neck (the inline geometry). The same external magnetic field deflects them by slightly different amounts because each travels a marginally different path to its phosphor dot. The simulation models this as a per-gun horizontal UV offset proportional to the local field amplitude — producing genuine colour fringing from adjacent image content rather than an additive tint.

Dot-pitch cross-excitation (P22 only): When a beam is displaced by a non-integer number of phosphor dot pitches, it partially excites the adjacent wrong-colour dot type. The three P22 dot types (R, G, B) are spaced 120° apart in the triad, so the cross-excitation weighting follows a cos² partition at 0°/120°/240° — cycling smoothly through correct, +1 cyclic shift, and −1 cyclic shift as displacement varies across the screen. This produces the characteristic colour bands on a uniform-grey input even without any colour in the source. Monochrome phosphors (P31, P4, P45, P3, P7, P11, P24) emit a single spectral band and therefore show no colour during degauss — only the geometric beam displacement and a brief PSU brightness perturbation.

PSU sag / flash: The coil current peak loads the mains power supply rail, causing a brief uniform-brightness flash at the start of the cycle followed by a slight overall dim as the supply droops. This is applied as a global scalar to the final rendered frame — the power supply has no spatial selectivity, so it affects every pixel identically.

Duration: ~1.8 s (built-in auto-coil) · P22 cross-excitation: cos² triad model · Monochrome: PSU sag only, no colour

MAGNET — Touch-Driven Lorentz-Force Permanent Magnet Simulation

Children in the 1970s and 80s discovered that touching a colour television screen with a refrigerator magnet produced spectacular — and often permanent — colour distortion. The app recreates this with an interactive simulation: tap the MAGNET button, then drag a finger across the video area. The image reacts as if a real permanent disc magnet were being pressed against the glass faceplate.

Beam deflection physics: A permanent magnet held against the glass generates a concentrated fringe field. At the screen surface the field is predominantly radial — pointing toward or away from the touch point. The Lorentz force F = q(v × B) acts on beams travelling in −z toward the screen: a radial in-plane B component creates beam deflection perpendicular to B — that is, tangential rather than radial. The visual result is a swirl or vortex: all beams near the touch point are deflected in the same angular direction (clockwise), with concentric colour rings appearing at multiples of the phosphor dot pitch. Displacement magnitude falls off as a dipole-like 1/(r² + soft²) from the contact point and is capped at 10% of screen width at the pole.

Inline gun differential (P22 only): A colour CRT's inline trigun has red and blue cathodes at ±gunSep from the central green cathode along the horizontal axis of the neck. The same external field therefore deflects them by slightly different amounts, creating lateral colour fringing that grows with the horizontal component of the magnet field — a visually distinctive signature of inline-gun geometry. Monochrome phosphors (P31, P4, P45, P3, P7, P11, P24) have a single electron gun; the gun differential does not apply and is suppressed.

Dot-pitch cross-excitation (P22 only): As each beam is displaced from its nominal phosphor dot, it begins to excite adjacent wrong-colour dots. The cos² 120°-triad cross-excitation model (shared with the degauss simulation) determines the RGB mix reaching each output pixel. Near the touch point, displacement can exceed several dot pitches, producing intense colour scrambling. The cross-excitation strength saturates at ~55% at large displacements. Monochrome phosphors show only the geometric warp — the single-compound emitter has no colour to scramble.

Shadow mask magnetisation — permanent purity damage: In a real CRT, the steel shadow mask is a ferromagnetic material with significant remanence. While the magnet is held against the screen, the mask accumulates magnetisation proportional to the magnet's field strength and the contact duration — hold longer or use a stronger magnet to build up a more severe stain. When the finger lifts, the external field is gone but the mask retains its remanence. This residual field continues to deflect beams via the same tangential Lorentz mechanism: on a colour (P22) CRT it produces fixed colour swirl patches (purity errors); on monochrome phosphors it produces geometric warp without colour scrambling, since there is only one beam and one phosphor compound. Both persist across sessions. Dragging the magnet across the screen paints a continuous smear of damage — a line, arc, or any shape — exactly as a real magnet dragged across a television would leave a trail of purity errors across the shadow mask. The magnetisation map is stored as a 128×128 field texture and persisted permanently to device storage; it survives app restarts exactly as physical damage would. Pressing DEGAUSS triggers the PTC coil sequence, applying a decaying AC field that clears the entire texture over ~1.8 seconds.

Field strength reference: A permanent ring magnet at 8 mm produces approximately 10 mT (100 gauss) at the surface. True dipole field falloff is 1/r³; the simulation uses 1/(r² + soft²) which matches the near-field character of a contact magnet where r is much smaller than the magnet diameter. At 1 cm the field is roughly 8× weaker than at contact; beyond 5 cm it is negligible — consistent with why CRT televisions survived unshielded speakers at normal distances.

Strength slider: 0.05–1.0 · CW tangential swirl warp: all phosphors · Colour scramble: P22 only · Drag to paint smears/lines · 128×128 magnetisation field · Persists across restarts

SOURCES & REFERENCES ▾
  1. RCA, RCA Phosphors — Technical Publication TPM-1508A (October 1961) — primary CIE chromaticity data for P1, P4, and P31 phosphors; persistence time constants (P4: 60 µs to 10%; P31: 38 µs to 10%; P1: 24.5 ms to 10%); luminous efficiency values. Used to correct P31 colourTemp from yellow-green to true ZnS:Cu vivid green and to correct P4 from assumed warm white to measured cool white (CIE x=0.270, y=0.300).
  2. JEDEC Standard No. 16-C, Optical Characteristics of Cathode Ray Tube Screens — definitive phosphor designation system (P1–P45); maps 1:1 to RCA TPM-1508A data above.
  3. W.S. Boyle & G.E. Smith, "Charge Coupled Semiconductor Devices," Bell Syst. Tech. J. 49, 587 (1970) — foundational CCD paper; Nobel Prize 2009.
  4. ITU-R BT.470-6, Conventional Television Systems (1998) — system gamma, blanking levels, and colour primaries for PAL/SECAM/NTSC broadcast systems modelled by the CRT phosphor pipeline.
  5. D. Jankowiak (KD5OEI), CRT Phosphors of Interest to the Experimenter, rev. 2010 — comprehensive tabular reference for P1, P3, P4, P7, P11, P20, P24, P31, P38, P43 and others; chemical formulae, emission peaks, CIE xy, decay classification, and relative luminance / writing speed. Primary source for P3, P7, P11, P24 physics values used in this simulation.
  6. jniemann66, P7 CRT phosphor resources (GitHub Gist) — two-layer P7 CIE xy calculation; composite chromaticity ~(0.358, 0.524) for dual-persistence ZnS:Ag + (Zn,Cd)S:Cu cascade.
  7. J. F. Rider, Servicing Television Receivers (Rider Publisher, 1948) — deflection oscillator timing, EHT bleed-down sequence, shutdown spot physics. Primary reference for the shutdown simulation timing constants (V-scan τ 0.1–0.35 s; H-scan τ 0.35–0.55 s; EHT bleed τ 0.4–1.5 s via ~10 MΩ bleeder).
  8. T. E. Sheridan, "A magnetic deflection up-date: field equations, CRT geometry, the distortions and their corrections," IEEE Trans. Consumer Electron. — comprehensive treatment of magnetic deflection field equations and Lorentz-force beam deflection in inline CRT geometry. Used as physics basis for the degauss and magnet simulations.
  9. A. Mollica, "Investigation CRT Technology: Using a Magnetic Field to Measure Pixel Pitch," UBC PHYS 420 (2009) — experimental measurements of electron-beam deflection magnitude at specific field strengths; measured pixel pitch 0.12–0.16 mm from magnet deflection patterns; confirms dipole-like distance falloff and colour-band periodicity.
  10. "The CRT Screen as an Electron Orbital Viewing Device" (2024, ResearchGate) — computational model of the concentric colour-ring pattern produced by a permanent magnet against a colour CRT; confirms cos²-based triad cross-excitation model and 1/r³ dipole falloff physics used in this simulation.
  11. S. Goldwasser, Degaussing (Demagnetizing) a CRT — sci.electronics.repair FAQ — PTC thermistor degaussing circuit operation; shadow mask remanence and coercivity; why strong permanent magnets can permanently damage a colour CRT beyond what degaussing can correct.

Eight Phosphors, Calibrated from Primary Sources

The final stage of the simulation models the chemical physics of the phosphor screen itself. Every phosphor type is characterised from primary source data: EIA designation tables, RCA technical publications, manufacturer CIE chromaticity datasheets, and peer-reviewed phosphor literature. Each type is rendered using an IIR temporal accumulation kernel running at full resolution: phosphor_new = decay × phosphor_prev + (1 − decay) × excitation. The (1 − decay) normalisation prevents brightness creep: a steady input always converges to exactly that input level regardless of decay factor.

P22 — Standard Colour TV (Y₂O₂S:Eu / ZnS:Cu,Al / ZnS:Ag)

P22 is a composite EIA designation for the tri-phosphor chemistry used in virtually every consumer colour CRT produced between 1954 and the end of CRT production. Three separate phosphor compounds form the dot triad: Red — Y₂O₂S:Eu (europium-doped yttrium oxysulfide, 611 nm), Green — ZnS:Cu,Al (530 nm), Blue — ZnS:Ag (450 nm).

Each compound has a different decay rate. Red is the slowest (~3–6 ms to 10%), blue the fastest (~0.5–2 ms). The asymmetry creates the characteristic warm trailing fringe visible on fast-moving objects on original CRT footage. The simulation uses per-channel IIR decay multipliers: red × 1.15, green × 1.0 (reference), blue × 0.85 — calibrated from the RCA TPM-1508A measured persistence hierarchy for each compound. White point: 9300 K, the standard for Japanese consumer sets from the 1980s.

CIE primaries: R(0.610, 0.340) G(0.290, 0.600) B(0.150, 0.060) — SMPTE-C / EBU P22 standard. Decay: R 3–6 ms, G 1–3 ms, B 0.5–2 ms.

P31 — Oscilloscope & Green Monitor (ZnS:Cu)

P31 (ZnS:Cu or ZnS:Cu,Ag) is the phosphor behind the "green screen" aesthetic of 1970s–80s computing — the Apple IIe, DEC VT terminals, Amdek and Zenith monitors, and the vast majority of analogue oscilloscopes. Sub-millisecond persistence (0.01–1 ms to 10%) means no visible trailing at 60 Hz. P31 is 2.2× brighter than the older P1 willemite green.

The RCA TPM-1508A (1961) measures the emission at CIE x=0.245, y=0.523 — vivid green, not yellow-green. Converted to Rec.709 this is R≈0, G=1.44, B=0.29. The simulation's colourTemp was corrected from an earlier yellow-green approximation to match this measured spectral data. Phosphor Technology Ltd independently confirms CIE xy (0.287, 0.521) for P31, consistent with the slightly varying ZnS:Cu formulations across manufacturers.

Peak: 520–530 nm · CIE (0.287, 0.521) · Decay: 0.01–1 ms · Rel. luminance: 100 (reference)

P45 — White Phosphor, Sub-Millisecond (Broadcast Viewfinders)

P45 has a very flat spectral response across the visible range and an approximately D65 white point — neither warm nor cool. It was developed for applications requiring accurate tonal reproduction at high scan rates: broadcast camera viewfinders, radar displays requiring fast phosphor response, and some early medical imaging CRTs. Sub-millisecond decay (shorter than P31) makes it suitable for high-repetition-rate applications where persistence would cause temporal smear.

Decay: < 1 ms · White point: ~D65 · Uniform RGB spectral response

P4 — B&W Television White (ZnS:Ag + ZnCdS:Ag)

P4 is a two-component blend designed to produce a visually white emission for consumer monochrome television receivers. The blue sub-component (ZnS:Ag, ~455 nm) and yellow-green sub-component (ZnCdS:Ag, ~565 nm) combine to give a measured CIE blend of x=0.270, y=0.300 — a cool white of approximately 8500 K when measured from a fresh tube. The RCA TPM-1508A (1961) records the blend at this chromaticity; decay to 10% is 60 µs.

The warm, slightly yellowed appearance associated with vintage B&W television sets is not the phosphor's natural emission — it is caused by yellowing of the aluminium backing layer (and sometimes the front glass) with age and UV exposure. A fresh P4 tube is distinctly cool-white. The simulation uses the measured cool-white emission; use the brightness and contrast controls to simulate an aged, warm set.

CIE (0.270, 0.300) · Decay: 60 µs to 10% · Source: RCA TPM-1508A (Oct 1961) · ~8500 K fresh

P3 — Amber Radar Phosphor (Zn₈BeSi₅O₁₉:Mn) · WWII–1950

P3 (zinc beryllium silicate with manganese activator — Zn₈BeSi₅O₁₉:Mn, also written ZnBeSiO₄:Mn) was one of the first phosphors used in operational radar displays, deployed extensively in WWII ground and airborne radar equipment. Its amber-orange emission at 602 nm was chosen partly for night-vision preservation — the long-wavelength amber does not suppress scotopic (dark-adapted) vision as severely as green or white phosphors, an important consideration for operators in darkened radar rooms.

P3 has a 13 ms exponential decay — substantially longer than P31 — giving a visible trailing afterglow on moving targets. CIE xy approximately (0.54, 0.43), computed from the 602 nm spectral locus: deep saturated amber-orange, similar to sodium street lighting. The beryllium compound is toxic and carcinogenic; production ceased around 1950 and it was replaced by safer alternatives. It is essentially unencountered today except in surviving WWII-era equipment. Decay model: exponential (Dyall 1948 classification).

Peak: 602 nm · CIE ~(0.54, 0.43) · Decay: 13 ms exponential · Beryllium compound — obsolete ~1950

P7 — Dual-Persistence Radar (ZnS:Ag + (Zn,Cd)S:Cu) · WWII–1970s

P7 is a cascade (two-layer) phosphor used throughout WWII and post-war radar PPI (Plan Position Indicator) displays and in early oscilloscopes for capturing one-time transient events. Its distinctive character comes from two separate decay mechanisms operating simultaneously.

The outer fast layer (ZnS:Ag or B*-ZnS:Ag on CdS substrate) is directly excited by the electron beam. It emits blue-white at 440 nm and decays within ~1 ms — essentially instant at display frame rates. The inner slow layer ((Zn,Cd)S:Cu) is excited photoluminescently by the UV and blue output of the fast layer. It emits yellow-green at 563 nm and has an inverse power-law decay lasting well over one minute in low ambient light.

The visual result: a fresh radar sweep trace appears blue-white; as the beam moves on and the fast layer decays, the slow layer's yellow-green persistence becomes dominant. Old traces glow warmly amber-green; new traces are cold blue-white. Many P7 radar displays were fitted with an orange-amber plastic filter over the tube face to suppress the blue flash entirely, making the display appear uniformly yellow-orange.

The simulation approximates the dual-layer physics with per-channel asymmetric IIR: B × 0.62 (fast — minimal blue in 563 nm emission), G × 1.22 (slowest — yellow-green dominant), R × 1.02 (moderate red in 563 nm). A separate slow-decay buffer would more accurately replicate the power-law tail, but the IIR approximation correctly captures the white-flash → yellow-green fade within typical playback timescales. Luma input is used to prevent composite chroma artifacts accumulating as false colour on a display that should show only phosphorescence colour.

Peaks: 440 nm (fast, < 1 ms) + 563 nm (slow, > 60 s) · Composite CIE ~(0.358, 0.524) · jniemann66 gist

P11 — Deep Blue Photographic (ZnS:Ag,Cl) · Oscilloscope & Apollo DSKY

P11 (ZnS:Ag,Cl) emits a deep blue at 460 nm with approximately 2 ms persistence. Its primary use was in oscilloscopes equipped with camera hood attachments for recording waveforms on photographic film — a common technique before digital storage oscilloscopes. Blue light at 460 nm exposes orthochromatic and panchromatic film far more efficiently than P31's green, allowing high-brightness waveform photography without overdriving the tube.

The phosphor's relative luminance to the human eye is only 25% of P31 (the eye is less sensitive at 460 nm than at 520 nm), but its relative writing speed — a measure of how quickly the trace can be written before the film is underexposed — equals P31 at 100% because the film's blue sensitivity compensates. A P11 oscilloscope trace appears visually dim compared to a P31 scope at the same beam current, but the photographs were well-exposed. Notable application: the Apollo Guidance Computer's DSKY (Display-Keyboard) indicator unit used a P11 CRT for its numeric readout.

Peak: 460 nm · CIE (0.165, 0.085) · Decay: 2 ms · Rel. luminance: 25 · Writing speed: 100 · Apollo DSKY

P24 — Cyan-Green Ultra-Fast (ZnO:Zn) · Flying-Spot Scanners

P24 (ZnO:Zn) has one of the shortest persistence times of any designated phosphor: approximately 1.5 µs to 10% (Jankowiak 2010; consistent with the 1–10 µs range in EIA TEP-116 literature). Its peak emission is 505–507 nm — a cyan-green distinctly bluer than P31 — with CIE xy approximately (0.19, 0.40), placing it in the aquamarine-teal region of the chromaticity diagram.

The primary application is the flying-spot scanner: a CRT spot scans across photographic film or a transparency at very high speed, and a photomultiplier or photodiode array samples the transmitted light frame by frame. The 1.5 µs decay is essential to avoid image smear at scan speeds measured in millions of pixels per second — any persistence longer than the sampling interval would blur the output. P24 is also used in some beam-index colour CRT displays where a single-gun tube requires a precise timing reference. Its relative luminance is only 8% of P31 — P24 is visually very dim, a characteristic tradeoff for extreme temporal speed.

Peak: 505–507 nm · CIE (0.19, 0.40) · Decay: 1.5 µs · Rel. luminance: 8 · Flying-spot scanners

SOURCES & REFERENCES ▾
  1. D. Jankowiak (KD5OEI), CRT Phosphors of Interest to the Experimenter, rev. 2010 — the most comprehensive freely-available tabular reference for EIA-designated CRT phosphors. Covers P1, P3, P4, P7, P11, P20, P24, P31, P38, P43 and others; chemical formulae, emission peaks, spectral range, decay classification, CIE xy (where published), and Tektronix relative luminance / writing speed. Primary source for the P3, P7, P11, and P24 parameter values implemented in this simulation.
  2. RCA, Technical Publication TPM-1508A: RCA Phosphors (October 1961) — primary-source CIE chromaticity data for P1, P4, and P31 (measured from production tubes); persistence time constants (P4: 60 µs to 10%; P31: 38 µs to 10%); luminous efficiency values. Used to correct P31 emission from an earlier yellow-green approximation to the measured CIE (0.245, 0.523) and to establish P4's measured cool-white CIE (0.270, 0.300) rather than an assumed warm value.
  3. Phosphor Technology Ltd — CRT Phosphor CIE Datasheets — independent manufacturer CIE xy confirmation for P31 (0.287, 0.521) and P43 (0.337, 0.561). Cross-validates the Jankowiak and RCA TPM-1508A data.
  4. ProxiVision GmbH, P43 Standard Phosphor Screens, datasheet PR-0069E-02 — hard measured decay numbers for Gd₂O₂S:Tb (P43): 1 ms from 90% to 10%; 1.6 ms from 10% to 1%. Lambert Instruments cross-confirms 1.5 ms to 10%, 3 ms to 1%.
  5. jniemann66, P7 CRT phosphor resources (GitHub Gist) — two-layer P7 CIE xy calculation; composite chromaticity approximately (0.358, 0.524) for the dual-persistence ZnS:Ag fast layer + (Zn,Cd)S:Cu slow layer cascade. Provides the only publicly-available computed composite CIE value for P7 that accounts for the two distinct emission layers.
  6. L.K. Dyall, MIT RLE Technical Report 056 (1948) — foundational phosphor decay classification: exponential (P1, P3, P12, P13), inverse power-law (P2, P7, P5, P6, P11), and combination types (P4). The P7 slow layer's super-linear long-tail persistence (observed in practice as glow lasting 30–120 s) is consistent with Dyall's inverse power-law class.
  7. JEDEC Standard No. 16-C, Optical Characteristics of Cathode Ray Tube Screens — the definitive EIA phosphor designation system (P1–P45 and extensions); maps the EIA "P-number" to chemical composition, emission colour, and persistence class.

Fifteen Patterns from Broadcast History

Every major analogue television operation began each broadcast day by transmitting a test card — an image engineered to reveal faults in the entire signal chain from camera to living room. The app includes fourteen industry-standard patterns and one geometric test chart, spanning 1939 to the 1990s.

SMPTE Color Bars — 75%
SMPTE RP 40 · USA · 1948–present

Seven vertical bars at 75% amplitude provide a reference for every primary and secondary colour plus white, black, and blanking. An engineer adjusting a monitor to these bars could guarantee colour and luminance accuracy across the entire chain from studio to transmitter. SMPTE standardised the 75% variant (rather than 100%) to keep peak white within the safe operating range of VTR heads.

SMPTE Color Bars — 100%
SMPTE RP 219 · USA · 1970s–present

Full-saturation 100% bars drive every colour to its legal peak. Used for encoder calibration and to verify that a system can handle maximum colour excursion without clipping. On a vectorscope, the six colour dots should land precisely on their target boxes. The pattern exposes gain errors invisible at 75%.

SMPTE ECR-1-1978
SMPTE · USA · 1978 (revised EG 1-1990)

The definitive NTSC colour-bar test pattern, developed at the CBS Technology Center by Hank Mahler. Seven 75%-saturation bars fill the top two-thirds. A narrow castellation strip below the bars enables blue-only alignment — when the blue channel is isolated, the bars and castellations merge into four equal blue bands, revealing any hue or saturation error instantly. The bottom quarter carries −I and +Q chrominance squares for vectorscope phase alignment, a 100% white reference, and the PLUGE (Picture Line-Up Generation Equipment) trio: sub-black (invisible), true black, and just-above-black, for precise monitor black-level calibration. CBS deliberately placed it in the public domain; it became the universal broadcast reference bar standard and earned a Technology & Engineering Emmy in 2002.

Rainbow Bars
Tektronix · USA · 1980s–90s

Eight segments rotating through the full colour wheel in 45° hue steps. The defining feature is the vectorscope display: the six non-white segments form a smooth circle rather than six isolated dots, making gain and phase errors immediately obvious as distortions of the ring. A favourite field-alignment tool because it reveals problems invisible on conventional bars.

Gray Steps
RMA / BBC · from 1930s

Ten equal-voltage steps from video black to white — a staircase waveform on the waveform monitor. Used to check gamma correction (the spacing should appear perceptually uniform on a correctly gamma-corrected display), contrast linearity, and the step response of the decoder. One of the oldest electronic test patterns, predating colour television.

Multiburst
SMPTE / EIA · USA · early 1960s

Six zones of sinusoidal bursts at increasing frequencies — 500 kHz, 1.0, 2.0, 3.0, 3.58, and 4.2 MHz for NTSC. Amplitude attenuation across zones shows the frequency response of the complete video path. Engineers could read off the usable bandwidth at a glance without a spectrum analyser. A staple of broadcast quality-control checks on every link in a video chain.

Crosshatch / Safety Grid
Generic · from late 1930s

Evenly-spaced horizontal and vertical lines on black, often supplemented with safe-action and safe-title boundary boxes. Used to measure geometric linearity (straight lines should stay straight), pincushion and barrel distortion in CRT monitors, and to confirm that titles will remain within the guaranteed visible area on domestic sets. Generated electronically — no physical card required.

Philips PM5544 test card
Philips PM5544
Philips · Netherlands · 1967–mid 1990s

Named for Philips instrument code 5544, this card became the standard close-down and alignment image for PAL broadcasters across Europe for nearly three decades. Its central circle tests horizontal and vertical linearity simultaneously; colour bars verify chroma accuracy; corner circles and dot matrix reveal convergence errors. Broadcast nightly by dozens of national services from the BBC to ARD and ORF before each station signed off.

SVG: ebnz / Wikimedia Commons · CC BY 2.5

BBC Test Card F
BBC Test Card F
BBC · UK · 1967–present

Designed by BBC engineer George Hersee and first broadcast on BBC Two on 2 July 1967, Test Card F became the defining close-down image of British television. At its centre, Hersee's eight-year-old daughter Carole plays noughts-and-crosses with a Pierrot clown doll — a deliberate choice of a natural, flesh-toned subject to challenge colour cameras. Surrounding her: a central cross-hatch for linearity, grey steps, colour patches, and a resolution wedge. Test Card F remained in continuous use on the BBC for over three decades and still appears occasionally during technical breakdowns, making it one of the longest-running broadcast images in television history.

Image: © BBC · English Wikipedia (fair use)

Soviet УЭИТ-2 test card
УЭИТ-2 (Soviet GOST 7845)
USSR · GOST 7845 · 1955–1990s

The Soviet Union's unified engineering test card, standardised under GOST 7845 and mandatory for all Warsaw Pact broadcasters. Combines a resolution wedge, colour patches, geometric shapes, and a central circle for simultaneous evaluation of resolution, colour accuracy, and deflection linearity. Transmitted daily by Gostelradio and remained in service through the 1990s. The designation УЭИТ stands for Универсальная Электронная Испытательная Таблица — Universal Electronic Test Chart.

SVG: Tucvbif / Wikimedia Commons · Public Domain

ТИТ-0249-бис convergence chart
ТИТ-0249-бис
USSR · 1970s

A CRT convergence alignment chart for colour monitors. Dense concentric circles, crosshairs, and dot matrices enabled engineers to align the three electron guns of Trinitron and shadow-mask tubes to within fractions of a millimetre. The "бис" suffix denotes a revised edition of the original ТИТ-0249 specification. Used throughout Soviet broadcast facilities and television factories for studio monitor calibration.

SVG: Tucvbif / Wikimedia Commons · CC BY-SA 3.0

USAF-1951 resolution chart
USAF-1951
US Air Force · USA · 1951

Designed for the US Air Force to measure aerial camera resolution. The chart's six groups of six element-pairs — each group scaled by a factor of √2 — allow visual determination of the limiting resolution in line pairs per millimetre. Television engineers adopted it to characterise camera and lens systems; the central circle indicates depth-of-field uniformity. Still the reference resolution target in optics and imaging, seven decades after its introduction.

SVG: Setreset / Wikimedia Commons · CC BY-SA 3.0

EIA-1956 resolution chart
EIA-1956 (RS-240)
EIA · USA · 1956

A resolution test chart standardised specifically for television cameras and systems by the Electronic Industries Association. Radial wedges at the chart perimeter give horizontal and vertical resolution simultaneously; the ratio between their limiting frequencies shows how well a system preserves the aspect ratio of fine detail. Complemented the USAF chart by addressing TV-specific considerations like interlace and bandwidth asymmetry.

SVG: Wikimedia Commons · Public Domain (PD-self)

IMAGE PENDING
RAI Monoscopio
RAI · Italy · 1954–1977

Designed by RAI engineer Renato Moretti for Italy's national broadcaster, the Monoscopio — literally "single screen" — appeared as a close-down pattern on RAI 1 and RAI 2 throughout the 1950s and 60s. Its characteristic white oval on a black field, surrounded by geometric precision marks, made it one of the most distinctive close-down images in European television. Broadcast at the end of each evening's schedule, it became a cultural marker for a generation of Italian viewers.

Image: permission pending · monoscopio.tv

RCA Indian Head test card
RCA Indian Head
RCA / NBC · USA · 1939–mid 1950s

The most recognised monochrome test card in US broadcast history. Designed by RCA for NBC, the card depicted a Native American chief in headdress surrounded by resolution wedges, aspect-ratio marks, and a grey scale. It appeared during off-air hours from 1939 until the mid-1950s, when NBC transitioned to colour test patterns. A generation of American engineers learned to align a television receiver against this image — it remains an icon of the early broadcast era.

SVG: Alex Microbe / Wikimedia Commons · Public Domain

SVG Asset Source License
Philips PM5544 ebnz / Wikimedia Commons CC BY-SA 3.0 / CC BY 2.5 / GFDL
BBC Test Card F BBC / English Wikipedia © BBC (fair use)
УЭИТ-2 Tucvbif / Wikimedia Commons Public Domain
ТИТ-0249-бис Tucvbif / Wikimedia Commons CC BY-SA 3.0 / GFDL
USAF-1951 Setreset / Wikimedia Commons CC BY-SA 3.0
EIA-1956 (RS-240) Wikimedia Commons Public Domain
RAI Monoscopio monoscopio.tv permission pending
RCA Indian Head Alex Microbe / Wikimedia Commons Public Domain

The Game Is the Signal

Eight built-in games feed live output directly into the composite encode/decode pipeline — the same path used by the camera, test cards, and every other source. There is no special handling. The game renders a frame, that frame becomes voltage samples, those samples pass through sync insertion, subcarrier modulation, comb filtering, quadrature demodulation, and finally the CRT phosphor stage. Every artifact that applies to a real video signal applies here too. A ninth option, Libretro, allows loading any compatible emulator core — effectively an unbounded library of additional hardware.

All eight built-in games are independent, clean-room implementations written from scratch. Game mechanics — rules, physics, and scoring — are not protectable by copyright under applicable law (ideas and systems are explicitly excluded from copyright protection; 17 U.S.C. § 102(b) and equivalent provisions in other jurisdictions). The original arcade hardware patents have all expired. No code, sprite graphics, audio samples, or other assets from any commercial release are reproduced or included. The games are presented as signal-source demonstrations.

Pong iOS & macOS

A custom-written, period-accurate Pong implementation rendered at 320×240, feeding through the full composite encode/decode chain. Left paddle: W/S keys on macOS, touch on iOS. The right paddle is AI-controlled. Score is rendered with a chunky 5×7 pixel font — the kind of bitmap lettering a hardware character generator of 1973 would produce.

Because the game output enters the simulation at the encoder stage, the analog artifacts aren't applied over the top — they arise from the signal itself. Chroma crawl appears at the paddle edges. The ball's high-contrast transitions produce dot crawl at the subcarrier frequency. Scanline structure and phosphor bloom are determined by whichever CRT and phosphor preset is active. A Vidicon source will add lag to the ball's trail; a Plumbicon will bloom the ball highlight. Set the standard to PAL and the subcarrier geometry changes; set it to NTSC-J and the pedestal drops. The game does not know any of this — it just writes pixels.

Pong is useful as a diagnostic as much as a game. The high-contrast geometry — white rectangles on black — stresses every stage of the pipeline in a predictable, repeatable way. The ball velocity is constant, so temporal lag, motion blur, and phosphor persistence are easy to compare across camera tube settings.

Original implementation. The ball-and-paddle mechanic is a game rule, not protectable by copyright; the original Magnavox/Atari patent (US3659285) expired in 1989. No code or assets from any commercial Pong release are included.

Space Invaders iOS & macOS

Taito, 1978. Eleven columns of five alien rows — Squid, Crab, and Octopus types — each rendered with authentic two-frame sprites. A UFO crosses the top at irregular intervals. Four shields decompose under fire at the pixel level: each hit removes a circular radius of bitmap, replicating the original shield erosion behaviour. Three lives, wave system, marching bass-note rhythm that accelerates as the alien count falls. The monochrome pixel field passes through the composite chain, where horizontal bands of colour (an artifact of the original arcade's cellophane overlay) appear as the subcarrier interacts with the high-contrast grid geometry.

Original implementation. The descending-alien-grid mechanic is a game rule and is not copyrightable. All sprite graphics are original pixel artwork drawn to match the aesthetic of the 1978 Taito release; the audio is synthesised from scratch. No code or assets from the original game are reproduced.

Breakout iOS & macOS

Atari, 1976. Eight rows of fourteen bricks in four colour bands — Red, Amber, Green, Yellow, each worth increasing points. Ball angle is determined by where it strikes the paddle: centre returns straight, edges return at up to ±70°. Speed is clamped to 220 px/s; the simulation adds a slight speed increase on brick destruction to replicate the original game's pacing. Each brick colour has a distinct pitch, so the audio composition changes as layers are cleared. The high-contrast brick field and rapid ball transitions stress the composite pipeline's chroma demodulator — dot crawl appears at every brick edge.

Original implementation. The brick-breaking mechanic is a game rule and is not protectable by copyright. All graphics and audio are written from scratch. No code or assets from the 1976 Atari release are reproduced.

Snake iOS & macOS

Nokia/BBC Micro style. A 40×28 grid of 8×8 pixel cells. The intro screen lets the player choose between wall-death and wrap-around modes — the latter allows the snake to re-enter from the opposite edge, which changes the risk profile entirely. Speed ramps by 0.8 cells per second for every five apples collected. The blocky cell grid and bright-on-dark pixels produce the characteristic crawl artifacts that a real television would show on this kind of content: subcarrier dot patterns at every green edge, scanline structure visible in each 8×8 cell.

Original implementation. The snake-eats-food genre derives from arcade game Blockade (Gremlin Industries, 1976) and predates any single rights-holder; game mechanics are not copyrightable. This is an independent reimplementation with no code or assets from Nokia or any other commercial release.

Asteroids iOS & macOS

Atari, 1979. A vector arcade game rendered in software using a P31 phosphor buffer — the green phosphor used in Asteroids arcade monitors. Each frame, the phosphor decays by ×0.80, producing the characteristic slow-green trail on every line drawn. The result is rendered as BGRA pixels (r=p/4, g=p, b=p/8) and fed into the composite chain. Three asteroid sizes split on impact; a UFO appears at intervals; hyperspace teleports the ship to a random position with approximately a 20% chance of appearing inside an asteroid. Ship inertia is modelled as a two-axis velocity accumulator with zero friction. The slow-decay phosphor, when passed through the composite encoder and a Vidicon camera tube, produces layered motion trails that go well beyond any post-process filter.

Original implementation. Asteroid physics, ship inertia, and saucer mechanics are game rules and are not protectable by copyright. The polygon geometry, phosphor simulation, and all audio are written from scratch. No code or assets from the 1979 Atari release are reproduced.

Missile Command iOS & macOS

Atari, 1980. Three missile bases (10 rounds each) defend six cities against incoming warheads. A crosshair tracks mouse position or arrow keys; fire launches an interceptor arc to the crosshair position, detonating on arrival as an expanding then contracting circular explosion. On iOS, touch controls the crosshair directly. The wave system escalates: surviving cities and bases score a bonus at wave end. At game over the full city panorama detonates in sequence. The arcing interceptor trajectories, large circular blast zones, and the multi-colour incoming missile trails all produce distinct composite artifacts — colour fringing at each arc edge, subcarrier cross-modulation at the explosion boundary, chroma phase error in the bright detonation flash.

Original implementation. The anti-missile defence mechanic and city-survival concept are game rules and are not protectable by copyright. All explosion geometry, city artwork, and audio are written from scratch. No code or assets from the 1980 Atari release are reproduced.

Centipede iOS & macOS

Atari, 1980. A twelve-segment centipede winds through a mushroom field, reversing direction each time it hits an edge or mushroom. Shooting a segment splits it in two; a mushroom spawns at the death point (each mushroom has four hit points). A spider bounces erratically through the player zone, changing direction irregularly. A flea drops vertically, planting mushrooms at random positions in its trail. Each enemy type has a distinct audio signature — segment impact, spider bounce, flea drop, and rapid-fire tones. The dense mushroom field of small bright dots is particularly hard on the composite chain: chroma crawl appears throughout the field, and each mushroom's sharp edge produces a fine ringing artifact from the composite encoder's low-pass filter.

Original implementation. The segmented-enemy, mushroom-field mechanic is a game rule and is not protectable by copyright. All sprite graphics, colour palettes, and audio are written from scratch. No code or assets from the 1980 Atari release are reproduced.

Lunar Lander iOS & macOS

Atari, 1979. One of the first arcade games built on Atari's vector-graphics hardware — the same board that would later power Asteroids. The player guides the Apollo Lunar Module down to the Moon's surface under authentic lunar gravity (1/6 g), balancing fuel against the need to slow the descent and correct horizontal drift. Three landing zones are marked with flags and multipliers (2×, 3×, 5×): the highest-value pad is also the narrowest. Touching down gently scores a full bonus scaled by the multiplier; a hard landing is survivable but loses points; any other contact is a crash.

Controls follow the original cabinet exactly: Rotate Left and Rotate Right are separate buttons, and the thrust lever fires the main descent engine upward only — there are no lateral thrusters. An abort button provides emergency maximum thrust at the cost of four times the fuel burn. As the lander descends below 150 world-units of altitude the viewport zooms in, replicating the approach zoom of the original cabinet. The HUD displays fuel percentage, altitude, horizontal velocity, and vertical velocity in the original arcade layout, with live danger highlighting when descent speed exceeds safe thresholds. A low-fuel warning flashes below 100 units.

On the composite chain: the bright white vector wireframe of the LM against a black sky produces sharp luminance transitions with minimal chroma content, much as the original monochrome vector monitor appeared when connected through an RF modulator. The thrust exhaust particles — warm orange points that decay in brightness — introduce brief chroma transients into the otherwise achromatic scene, flickering subcarrier dots at the engine bell that the composite decoder renders as faint colour fringing.

Original implementation. The physics of descent under gravity, the rotating-lander-with-single-thrust mechanic, and the landing-zone concept are unprotectable game rules; the original Atari title drew a wireframe outline of the Apollo LM, itself a real spacecraft with no copyright interest. All geometry, physics constants, scoring logic, and audio are written from scratch. No code or assets from the 1979 Atari release are reproduced.

Libretro — BYOR macOS only

Libretro is an open API for emulator cores — the same interface used by RetroArch. The app can load any compatible .dylib core placed in ~/Library/Application Support/AnalogTV/Cores/. Drop in an Atari 2600, NES, Game Boy, or any other supported core, then load a ROM via the in-app file browser. The core's video output — rendered at whatever resolution and pixel format the original hardware used — feeds directly into the composite pipeline.

This means the NES's limited colour palette, the 2600's scanline-level timing artifacts, and the characteristic dot patterns of hardware sprite rendering all enter the simulation as raw pixel data, then get composite-encoded and decoded in full. The chroma subcarrier interacts with the hardware's colour encoding the same way it would have on a real television connected to the original console via RF or composite out. You supply the cores and ROMs; the simulation handles the rest.

macOS only. Libretro core compatibility depends on the individual core. The app does not bundle any cores or ROM files. Users are responsible for ensuring they have the legal right to use any ROMs they load.


Technical Notes

Sampling Rates

Each standard sampled at 4× its native subcarrier frequency: 14.318 MHz for NTSC-M/J, 17.734 MHz for PAL/SECAM/625B&W, 14.303 MHz for PAL-M, 14.328 MHz for PAL-N, 8 MHz for System A, 22 MHz for System C.

Subcarrier Geometry

Phase — radians per sample and per line — is pre-computed per standard on the CPU. All colour formats share the same GPU encoder and decoder kernels with no hardcoded format branches in the shaders.

Reference Mode

REF mode bypasses all noise and CRT effects so you can verify the raw encode–decode roundtrip. Useful for confirming that a given standard's subcarrier, pedestal, and burst geometry are correct.

Timing-Accurate Mode

SYNC mode gates simulation updates to the standard's native field rate — 29.97 fps for NTSC-family, 25 fps for PAL/SECAM/B&W — using a drift-corrected timer rather than the display's 60 Hz refresh.

Waveform Monitor & Vectorscope

The built-in waveform monitor and vectorscope show actual signal values — the same measurements you'd see on real broadcast test equipment. The vectorscope traces the I/Q or U/V constellation of the decoded signal.

SECAM Encode: CPU vs GPU

GPU compute shaders process every output sample in parallel — each thread computes φ(n) = 2π(f_sc + dev·sig)·n independently. This is correct for amplitude/phase systems like NTSC and PAL, but FM requires continuous phase accumulation: φ(n) = φ(n−1) + 2π·f_inst(n). Computing this on the GPU would require a prefix sum over 946 samples per line — serialising the entire active line and negating any throughput benefit. Instead, SECAM encoding uses a dedicated CPU kernel: all 576 active lines run in parallel (each line is phase-independent), but within each line the FM phase integral is computed sequentially, sample by sample. The CPU kernel writes into the same composite buffer consumed by the GPU decode pass, keeping the rest of the pipeline unchanged.

This matters for fidelity because GPU instantaneous-phase encoding produces a phase discontinuity at every colour transition — the carrier jumps to a new frequency as if it had always been there, rather than smoothly sweeping through the transition. The CPU accumulated-phase encoder produces the physically correct FM transient: a brief over- or under-deviation as the carrier sweeps to its new steady-state frequency. This transient is exactly the cause of SECAM fire — the coloured fringe at vertical bar edges unique to SECAM receivers. It is not achievable without continuous phase accumulation.

The CPU kernel also implements the full broadcast processing chain in the correct order: deviation limiting (clamping Db/Dr to ±1.0 per CCIR 624 §4.4), LF pre-emphasis (85 kHz one-pole HPF applied to the baseband colour signal before modulation), FM phase accumulation, and Bell/Cloche carrier amplitude weighting applied to the FM output. The GPU decoder applies the inverse: FM discriminate via atan2(z₁×conj(z₀)), then a sequential per-line IIR de-emphasis pass, then Y/C matrix.

Signal-Domain Processing

RF interference, ghost/multipath, IF filter ringing, and chroma decode all operate on the composite buffer at the full composite sample rate — 14.318 MHz for NTSC, 17.734 MHz for PAL. No effect is applied as a pixel-domain post-process: every distortion enters and propagates through the waveform, interacting with subcarrier phase exactly as it would in real hardware. Y/C separation uses a 1-line comb at composite rate; chroma is demodulated by Hann-windowed quadrature FIR filters with per-channel bandwidth (NTSC I: 1.3 MHz, Q: 0.4 MHz; PAL U/V: 1.3 MHz); luma is bandwidth-limited by a 13-tap sinc LPF before the final texture write.

Phosphor IIR Steady-State Proof

The decay formula new = d × prev + (1−d) × E converges to exactly E under constant input. Setting new = prev = ss: ss = d × ss + (1−d) × Ess(1−d) = (1−d) × Ess = E. No brightness creep regardless of d.

P22 Per-Channel Decay Rates

P22 phosphor decay times at 60 Hz: Red (Y₂O₂S:Eu) 3–6 ms → decay ≈ 0.82–0.93; Green (ZnS:Cu,Al) 1–3 ms → decay ≈ 0.70–0.83; Blue (ZnS:Ag) 0.5–2 ms → decay ≈ 0.55–0.75. The app maps the user slider to the green midpoint and derives R and B by ×1.15 and ×0.85.