New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

quick-sonic-worklet

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

quick-sonic-worklet

Quick-Sonic-Worklet is a TypeScript library designed to streamline the downloading, decoding, and playback of audio files using Web Workers and AudioWorklet. It supports multi-track playback, master volume control, and professional-grade audio effects.

latest
Source
npmnpm
Version
1.1.0
Version published
Maintainers
1
Created
Source

Quick-Sonic-Worklet Library

Quick-Sonic-Worklet is a TypeScript library designed to streamline the downloading, decoding, and playback of audio files using Web Workers and AudioWorklet. It supports multi-track playback, master volume control, and professional-grade audio effects.

Features

  • Worker-based Audio Downloading: Offload audio file downloads to a Web Worker for efficient background processing.
  • Main Thread Decoding & Playback: Use decodeAudioData and AudioWorklet for high-performance audio decoding and playback.
  • Multi-Track Support: Play multiple audio tracks simultaneously with individual controls.
  • Professional Audio Effects: EQ, modulation (chorus/flanger/vibrato), Schroeder reverb, delay, echo, drive, and dynamics.
  • Real-time Parameter Control: All effects can be adjusted in real-time during playback.
  • Visualizer Integration: Real-time visualizer data handling for audio visualization.
  • Master Volume & Low-Pass Filter: Control overall volume and apply global audio filters.

Installation

npm install quick-sonic-worklet

Usage

Importing the Library

import { AudioPreloader } from "./AudioPreloader";
import { AudioLoadWorker } from "./AudioLoader.worker";

Initialization

const fileMap = {
	track1: "audio/track1.mp3",
	track2: "audio/track2.mp3",
};

const preloader = new AudioPreloader(
	"https://example.com/",
	fileMap,
	AudioLoadWorker
);

Loading and Decoding Audio

await preloader.loadAll();
await preloader.decodeAll();
await preloader.initAudioWorklet(workletUrl);

Playing Audio

preloader.playAudio("track1", true, 1.5);  // loop, 1.5x speed
preloader.adjustVolume("track1", 0.8);
preloader.stopAudio("track1");

Audio Effects

EQ (Equalizer)

preloader.adjustEQ("track1", [
	{ frequency: 60, gain: 5 },      // Bass boost (+5dB)
	{ frequency: 1000, gain: -3 },   // Mid cut (-3dB)
	{ frequency: 8000, gain: 2 },    // Treble boost (+2dB)
]);

Modulation Effects

TypeDescription
chorusRich, layered sound with delayed signal
flangerJet-like sweeping effect
vibratoPitch modulation
tremoloAmplitude modulation
ringRing modulation
square / triangle / sawtoothWaveform-based modulation
preloader.adjustModulation("track1", {
	type: "chorus",   // Modulation type
	depth: 0.5,       // 0.0 ~ 1.0
	rate: 2.0         // Hz
});

Reverb (Schroeder Reverb)

Using Presets

PresetDecayDiffusionDescription
small0.700.40Small room
medium0.800.50Medium room
large0.850.55Large room
hall0.900.60Concert hall
plate0.880.70Plate reverb
cathedral0.950.65Cathedral
preloader.adjustEffects("track1", {
	reverb: 0.5,        // Wet/dry mix (0~1)
	roomSize: "hall"    // Preset
});

Custom Parameters

preloader.adjustEffects("track1", {
	reverb: 0.5,
	reverbDecay: 0.9,      // Decay time (0~1)
	reverbDiffusion: 0.6   // Diffusion (0~1)
});

Delay & Echo

preloader.adjustEffects("track1", {
	delay: 300,   // Delay time in ms (0~2000)
	echo: 200     // Echo time in ms (0~1000, multi-tap)
});

Drive Effects

preloader.adjustDrive("track1", {
	distortion: 0.5,   // Hard clipping (0~1)
	overdrive: 0.3,    // Soft clipping (0~1)
	fuzz: 0.7          // Asymmetric clipping + harmonics (0~1)
});

Dynamics (Compressor)

preloader.adjustDynamics("track1", {
	threshold: -24,   // dB (-60 ~ 0)
	ratio: 4          // Compression ratio (1 ~ 20)
});

Latency Control

preloader.adjustLatency("track1", 50);         // 50ms delay
preloader.adjustLatencySamples("track1", 2400); // 2400 samples delay

Visualizer

preloader.setVisualizerDataHandler((data) => {
	console.log("Band levels:", data);
});

preloader.setVisualizerBands("", [
	{ startFrequency: 20, endFrequency: 200 },
	{ startFrequency: 200, endFrequency: 2000 },
	{ startFrequency: 2000, endFrequency: 20000 },
]);

preloader.setVisualizerBufferSize(256);  // 32~1024

API Reference

Methods

MethodDescription
loadAll()Download all audio files
decodeAll()Decode all downloaded audio
initAudioWorklet(url)Initialize AudioWorklet
playAudio(key, loop?, rate?)Play a track
stopAudio(key)Stop a track
clearAudio(key)Remove track from memory
adjustVolume(key, volume)Set track volume (0~1)
adjustEQ(key, bands)Apply EQ settings
adjustModulation(key, settings)Apply modulation
adjustEffects(key, settings)Apply delay/reverb/echo
adjustDrive(key, settings)Apply drive effects
adjustDynamics(key, settings)Apply compression
adjustLatency(key, ms)Set latency in ms
adjustLatencySamples(key, samples)Set latency in samples
adjustNormalize(key, flag)Enable/disable normalization
setMasterVolume(volume)Set master volume
setLowPassFilter(cutoff, Q)Apply low-pass filter
setVisualizerDataHandler(callback)Set visualizer callback
setVisualizerBands(key, bands)Configure visualizer bands
setVisualizerBufferSize(size)Set FFT buffer size
resumeContext()Resume AudioContext
suspendContext()Suspend AudioContext
releaseAllResources()Release all resources

Properties

PropertyDescription
progressLoading progress (0~1)
downloadedCountDownloaded file count
downloadedTotalTotal file count
loadedAll files loaded

License

MIT License

Keywords

worklet

FAQs

Package last updated on 16 Dec 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts