AeroPlayer

AeroPlayer is AeroFTP's built-in audio player, designed for previewing audio files directly within the file manager. It uses native HTML5 <audio> with a Web Audio API processing graph for real-time audio manipulation and visualization. AeroPlayer replaced the Howler.js library with a direct Web Audio API architecture for lower latency and finer control over the audio pipeline.

Audio Engine

Audio is routed through a Web Audio API processing graph that applies equalization, stereo panning, and frequency analysis in real-time:

Audio Source → 10-Band EQ → Stereo Panner → Analyser → Destination

A prebuffer strategy ensures smooth playback start by buffering a minimum of 6 seconds of audio data before initiating playback. This prevents stuttering on slower network connections when playing remote files.

Player Interface

The player interface provides standard transport controls (play, pause, stop, seek) alongside the equalizer sliders, stereo balance control, and a visualizer canvas that responds to the audio in real-time.

AeroPlayer with equalizer and visualizer

10-Band Equalizer

Each band uses a dedicated Web Audio BiquadFilterNode for precise frequency shaping. Adjust individual sliders to boost or cut specific frequency ranges, or select a preset for instant configuration.

BandFrequencyCharacter
132 HzSub-bass (felt more than heard)
264 HzBass body and weight
3125 HzBass punch and warmth
4250 HzLow-mid fullness
5500 HzMid-range body
61 kHzMid-range presence
72 kHzUpper-mid clarity
84 kHzPresence and attack
98 kHzBrilliance and sibilance
1016 kHzAir and sparkle

EQ Presets

Ten built-in presets are available for quick setup:

  • Flat — all bands at 0 dB (neutral)
  • Bass Boost — enhanced low frequencies
  • Treble Boost — enhanced high frequencies
  • Vocal — mid-range emphasis for voice clarity
  • Rock — scooped mids with boosted lows and highs
  • Pop — slight bass and treble lift
  • Jazz — warm low-mid emphasis
  • Classical — gentle high-frequency lift
  • Electronic — sub-bass and treble emphasis
  • Loudness — compensates for low-volume listening (bass and treble boost)

Stereo Balance

A StereoPannerNode provides continuous left/right balance control. The panner ranges from -1 (full left) to +1 (full right), with 0 as center. This is useful for compensating asymmetric headphone output or for creative stereo positioning.

Visualizer Modes

AeroPlayer offers 14 visualization modes that respond to the audio in real-time. Press the V key to cycle through all modes while audio is playing.

WebGL visualizer active during playback

Canvas 2D Modes (8 modes)

Standard 2D visualizations rendered on an HTML5 Canvas:

ModeDescription
WaveformOscilloscope-style time-domain waveform
Frequency BarsVertical bars representing frequency spectrum
Circular SpectrumFrequency data arranged in a radial pattern
OscilloscopeHigh-resolution time-domain display
Mirrored BarsFrequency bars mirrored vertically
Gradient BarsFrequency bars with color gradient fills
Dot MatrixFrequency data as a grid of animated dots
Line SpectrumSmooth line tracing the frequency curve

WebGL 2 Modes (6 modes)

GPU-accelerated shader-based visualizations that create immersive audio-reactive graphics. These run entirely on the GPU via WebGL 2 fragment shaders, ported from the CyberPulse visualization engine:

ShaderDescription
Wave GlitchDistorted waveform with glitch artifacts that intensify on beats
VHSRetro VHS tape effect with scanlines, color bleeding, and tracking noise
MandelbrotFractal zoom driven by audio amplitude — deeper zoom on louder passages
Raymarch Tunnel3D raymarched tunnel that pulses and distorts in response to beats
MetaballOrganic metaball shapes that pulse, merge, and split with the audio
ParticlesParticle system with audio-reactive forces — particles scatter on beats

Tip: Press V to cycle through all 14 visualizer modes. WebGL modes require GPU support and are automatically skipped on systems without WebGL 2 capability.

Beat Detection

AeroPlayer performs real-time onset energy analysis to detect beats in the audio stream. The algorithm uses:

  • Circular buffer — stores recent energy samples for comparison
  • Exponential decay (factor 0.92) — smooths energy tracking to distinguish genuine beats from sustained loudness
  • Onset threshold — a beat is registered when the current energy exceeds the rolling average by a configurable margin

Detected beats trigger synchronized visual effects across all visualizer modes, creating a responsive audio-visual experience.

Post-Processing Effects

All visualizer modes (both Canvas 2D and WebGL) support layered post-processing effects that add cinematic character to the visualization:

EffectDescription
VignetteDarkened edges that draw focus to the center of the visualization
Chromatic aberrationRGB channel offset creating a prismatic distortion around edges
CRT scanlinesRetro monitor scanline overlay for a vintage CRT display look
Glitch on beatTransient glitch distortion triggered by beat detection — frame displacement, color shift, and horizontal tearing

Post-processing effects are composited in order: the base visualization renders first, then vignette, chromatic aberration, scanlines, and finally beat-triggered glitch. Effects can be combined for layered visual complexity.