TERMINAL AUDIO · COMPUTATIONAL NEUROSCIENCE

neurafly

Real audio in, real neurons firing, real time. A terminal visualizer wired to the actual FlyWire whole-brain connectome.

138,333 leaky integrate-and-fire neurons and 2,052,622 weighted synapses from FlyWire release v783, rendered as a living disk in braille using your terminal's own palette.

Rust TUI / Braille Audio DSP FlyWire Connectome MIT
System audio (PipeWire / PulseAudio) │ ▼ 2048-pt FFT at 44.1 kHz 24 log bands (40 Hz - 12 kHz) + beat │ ▼ LIF spiking network, fixed 100 Hz tick (138,333 neurons, 2,052,622 synapses) │ ▼ Disk geometry + anomalies │ ▼ Float phosphor buffer → braille 2x4 ANSI 30-37 palette only

Problem

Audio visualizers synthesize shapes from frequency data. The motion looks organic but carries no structure: bars, particles, and waveforms driven by the same FFT numbers. neurafly instead couples live system audio to a real biological wiring diagram, so activity propagates, reverberates, and decays through genuine fly-brain topology.

Key decisions

Real connectome, not a model

Wiring comes from FlyWire release v783: 138,333 neurons and 2,052,622 weighted synapses. Inhibitory sign follows presynaptic neurotransmitter probabilities (GABA inhibitory, the rest excitatory).

cava-style band processing

A 2048-point FFT folds into 24 logarithmic bands, each judged against its own rolling spectral floor, with equal-loudness EQ, auto-gain, and a peakiness gate.

Fixed-tick pipeline

Four modules (audio, sim, figure, canvas) share a fixed 100 Hz simulation tick, so each band injects current into its own neuron subset deterministically.

Terminal-native rendering

A float phosphor buffer at 2x4 sub-cell resolution folds into braille, and colors come exclusively from ANSI 30-37 so the disk adopts the user's theme.

Results

Neurons
138,333
Synapses
2,052,622
Sim tick
100 Hz
Connectome data
18 MB

Tradeoffs

  • ·Linux only (PipeWire/PulseAudio) and a terminal with Unicode braille support
  • ·The 18 MB connectome is excluded from the published crate, which falls back to a synthetic network
  • ·Regenerating the network needs the Zenodo feather file and the Python preprocessing tooling