Fractal Spectral Hologram — User Guide
A magnitude-domain spectral processor that blurs, sharpens and layers geometrically scaled copies around a frequency axis while preserving source FFT phase.
What this does
Fractal Spectral Hologram transforms the magnitude spectrum of a sound while retaining its original FFT phase. It combines three operations: binomial blur, unsharp spectral sharpening, and a multi-level frequency zoom that layers geometrically scaled copies around a chosen centre frequency.
The “hologram” name is deliberately metaphorical: the script does not model optical holography. Its central gesture is that one spectral feature can appear at several scaled positions, creating crystalline, metallic or bell-like structures.
What does “fractal spectral hologram” mean here?
A fractal is commonly associated with self-similarity across scale. In this processor, that idea is translated into the frequency domain: one source spectral shape is copied at successively larger or smaller scales around a frequency axis.
z is Fractal_zoom, c is the zoom centre, N is the number of levels and d is the per-level decay. The denominator is a weighted magnitude average used to control growth; it is not an energy-conservation law.
Quick start
- Select exactly one Sound.
- Run
Fractal_Spectral_Hologram.praat. - Start with Subtle Shimmer or Metallic Bell.
- Use Fractal_zoom to control the scale separation, Fractal_levels for the number of copies, and Fractal_decay for how quickly later copies weaken.
- Use Blur and Sharpen before the zoom to change the spectral material being copied.
Presets
| Preset | Blur | Sharpen | Zoom | Centre | Levels | Decay | Wet |
|---|---|---|---|---|---|---|---|
| Subtle Shimmer | 3 | 0.6 | 1.15 | 800 Hz | 3 | 0.50 | 0.70 |
| Crystal Echo | 2 | 1.0 | 1.30 | 1200 Hz | 5 | 0.55 | 0.80 |
| Fractal Storm | 8 | 0.3 | 1.50 | 500 Hz | 6 | 0.65 | 0.90 |
| Holographic Freeze | 15 | 0 | 1.00 | 1000 Hz | 1 | 0.50 | 0.80 |
| Metallic Bell | 1 | 0.8 | 1.40 | 400 Hz | 5 | 0.60 | 0.85 |
| Glass Fracture | 2 | 1.5 | 1.60 | 2000 Hz | 4 | 0.45 | 0.75 |
Controls
| Control | Default | Meaning |
|---|---|---|
| Blur_passes | 3 | Repeated five-bin binomial smoothing using [1 4 6 4 1] / 16. Zero disables blur; if Sharpen is active, one hidden reference pass is still built for the unsharp mask. |
| Sharpen_strength | 0.5 | Unsharp-mask emphasis of spectral peaks. Zero disables sharpening. |
| Fractal_zoom | 1.3 | Scale ratio per level; 1 = no zoom, >1 expansion, <1 contraction. Valid range 0.5…4. |
| Zoom_centre_Hz | 1000 | Frequency axis around which all scaled copies are placed. |
| Exact_zoom_centre | Off | Off preserves the v1.1 nearest-bin character, whose centre sits one FFT bin below the requested-Hz conversion. On uses the nearest true-Hz bin. |
| Fractal_levels | 4 | Number of geometric copy levels, 1…10; they are layers, not recursive generations. |
| Fractal_decay | 0.6 | Weight per level, decay^k; valid range 0…<1. |
| Dry_wet | 0.8 | Linear dry/wet blend, 0…1. |
| Scale_peak | 0.95 | Final target peak applied to every result. |
Processing pipeline
- For each processed channel, transform the full file to a complex Spectrum.
- Extract magnitude only.
- Apply multi-pass binomial blur.
- Apply an unsharp mask when Sharpen is nonzero.
- Freeze that magnitude result and layer the requested geometric zoom copies around the centre axis.
- Divide by total copy weight.
- Compute the ratio
processed magnitude / original magnitudeand multiply both real and imaginary Spectrum rows by that ratio, preserving source phase. - Inverse-transform, restore sample-rate metadata and trim FFT padding.
- Mix dry/wet and target-normalize the result.
Channels, duration and level
- Mono input: processed as mono and returned as mono.
- Stereo input: L/R are processed independently with identical parameters and returned as stereo.
- 3+ channel input: only channels 1 and 2 enter the wet processor, so the wet result is stereo. If dry/wet is below 1, the original multichannel source is converted to mono for the dry contribution and that mono dry signal is mixed into both wet channels. The output is therefore stereo.
- Duration and sample rate: preserved.
- Level: the final non-silent result is always target-normalized to
Scale_peak. ThusDry_wet = 0is not an amplitude-identical bypass and can also change channel topology for 3+ channel input.
Output name: <source>_hologram_<preset>.
Visualization
- A — Frequency map: shows one source feature and the geometric destination levels produced by the selected zoom law.
- B — Measured spectrum: compares pristine source with the pure wet spectral target before dry/wet mixing and final peak normalization.
- C — Waveform: compares source and final output on one amplitude scale.
- The QC strip reports blur kernel, passes, sharpen amount, zoom, levels, decay, requested/actual axis and FFT bin width.
Historical and compositional context
The modern language of fractal geometry is associated especially with Benoît Mandelbrot, who coined the word “fractal” in the 1970s and used computational graphics to study self-similar structures across scale. The musical relevance is not that a sound must be a mathematically strict fractal, but that one can organize material through repeated relationships at several scales.
This processor translates that idea into spectral composition: the same post-processed magnitude shape is heard at several frequency scales around one axis. The result can suggest bells, metallic resonators or crystalline spectra because harmonic relationships are stretched away from their original positions. The word hologram is therefore a compositional metaphor for “multiple scaled images of one spectral object,” not a claim that the script implements optical holography.
Further reading: IBM's history of Mandelbrot and fractal geometry provides a concise account of self-similarity and the role of computation: IBM — Fractal geometry.