What is Campana?
Campana is a generative bell synthesizer that creates endlessly evolving, looping bell soundscapes directly in your browser. Each preset is a living composition — never exactly the same twice.
Sound Engine
Every bell tone is built from scratch using additive synthesis: a set of inharmonic partial frequencies characteristic of real bells are summed and shaped with individual amplitude envelopes. Six textures model different bell families:
- Tubular — steel tube bells, bright attack
- Church — cast bronze, deep fundamental
- Bowl — Tibetan singing bowls, slowly beating partials
- Crystal — glass harmonics, high shimmer
- Bronze — monumental cast bells with hum, tierce, quint, and nominal partials
- Handbell — compact, agile carillon bells with fast upper-partial decay
Effects Chain
- Freeverb — algorithmic reverb (comb + allpass filters) for spatial depth
- Stereo delay — ping-pong echo with adjustable time and feedback
- Time scatter — detaches notes from the strict grid for a free, floating feel
- Humanize — micro-variations in timing and velocity
- Beating — slight detuning between partials, simulating the slow pulsations of real bells
Presets
- Sera — Dusk church bells in D minor. Rich, warm strikes with deep reverb.
- Tempio — Tibetan singing bowls in G dorian. Slow, beating partials that shimmer and breathe.
- Cristallo — Crystal glass harmonics in B♭ pentatonic. Airy shimmer and scattered timing.
- Cattedrale — Monumental bronze tolls in D minor. Physical clapper strikes emerge from long silences.
- Deriva — Floating, untethered bells in E♭ minor. Maximum scatter — notes drift freely off the grid.
- Notte — Dark, low-register bells in F minor. Sparse and contemplative, ideal for late hours.
- Festa — Agile C-major handbell counterpoint at 104 BPM, shaped as recognizable carillon phrases.
- Aurora — Whole-tone scale ascending and descending arc in D. Dreamy, ambiguous harmony with shimmer.
Architecture
Audio is synthesised server-side in Python (NumPy/SciPy) and streamed to the browser as WAV chunks via a FastAPI backend. The Web Audio API schedules chunks gaplessly using a two-chunk prefetch buffer. Exports are rendered in 32-beat chunks through an async job queue, keeping peak memory under 250 MB regardless of duration.
Privacy
The public Campana website uses Umami for anonymous, aggregate usage statistics. It records playback and export attempts, successful playback, broad listening-duration milestones, completed exports, and coarse failure categories so the project can be improved. Campana does not send seeds, control values, filenames, audio, or exact error messages. Analytics is disabled for local installations, repository forks, and the Railway backend.