Skip to content

Halftone Shader

@sonoscope/halftone-spectrogram renders your audio with a retro print style. Strong audio signals turn into larger dots, while quiet areas stay sparse.



Terminal window
npm install @sonoscope/halftone-spectrogram @sonoscope/core

Importing the /auto path automatically registers the "halftone" renderer keyword:

import "@sonoscope/halftone-spectrogram/auto";
import { Sonoscope } from "@sonoscope/core";
const scope = await Sonoscope.fromUrl("/audio/sample.wav");
scope.createSpectrogram(canvas, {
renderer: "halftone",
colorMap: "plasma",
minDb: -100,
maxDb: -30,
});
scope.attachNavigation(canvas);

OptionTypeDefaultWhat it does
dotFrequencynumber0.24Density of dots across the canvas
dotAnglenumber45Grid orientation angle in degrees
minEnergyThresholdnumber0.0Noise floor cutoff below which no dots appear
energyGammanumber1.4Dot growth response curve
maxDotRadiusnumber0.7071Maximum dot radius
dotSoftnessnumber0.75Edge softness multiplier (lower is sharper)
backgroundOpacitynumber1.0Background opacity (0 to 1)

Adjust dot angles, frequencies, and softness in the live sandbox: