Skip to content

audiojs/synth

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@audio/synth

Synthesis & signal generators — test tones, noise colors, classic synthesis atoms.

Generator contract (family convention): every pitched generator is (freq, opts) → Float32Arrayosc, pluck, voice, risset, lfo, wavetable, fm (+ bell, epiano), modal, membrane, metal. Unpitched generators take a single opts-or-scalar form: noise(duration, opts), chirp(opts), rhythm(opts), adsr(opts), sfx(preset | opts), dtmf(digits, opts). Durations are seconds; sample rate is fs (default 44100); output is mono Float32Array. poly(notes, { voice, voiceOpts }) hosts any pitched generator as a voice — per-voice config (fm's ratio/index, modal's model, wavetable's tables) rides in via voiceOpts.

Package Status What
@audio/synth-noise colors of noise — white/pink/brown/blue/violet, seeded, slope-verified; (duration, opts) seconds; pinkNoise filter kernel as named export
@audio/synth-osc oscillator — periodic-function waveforms (sine/square/saw/triangle), detune, custom wave fn
@audio/synth-chirp frequency sweep — exp/linear
@audio/synth-dtmf DTMF tone pairs (Q.23 frequencies)
@audio/synth-pluck Karplus-Strong plucked string
@audio/synth-risset Risset drum (inharmonic bell-drum)
@audio/synth-rhythm grid-timed pattern renderer (metronome/click track)
@audio/synth-envelope ADSR contour generator (one-shot, known length)
@audio/synth-lfo low-frequency oscillator (modulation source)
@audio/synth-voice osc + envelope voice (Tone.js Synth class)
@audio/synth-drum membrane (pitch-drop kick) / metal (inharmonic cymbal) / noiseDrum (snare/hat)
@audio/synth-fm FM (phase modulation) — Chowning 1973, single-op or serial ops stack, per-op feedback + index decay; bell/epiano presets; FFT sidebands match Bessel J_k to 0.00%
@audio/synth-modal modal synthesis — impulse-invariant resonator bank; F&R-cited bar/membrane/plate/tube/stiff-string tables, strike-position weighting, per-mode T60
@audio/synth-poly N-voice allocator — oldest-note steal with 5 ms fade, {freq|midi} notes, any pitched generator as voice
@audio/synth-sfx ZZFX-class parameterized SFX, 8 deterministic presets
@audio/synth-wavetable wavetable oscillator with table morphing (tables required)

audio.js manifests: 13/16 atoms ship one (hostable by audio / @audio/wam). Exempt with reasons: synth-dtmf (symbolic digit-string input has no params representation), synth-lfo (modulation source, not an audio-rate processor for hosts), synth-wavetable (tables is an asset argument — arrays have no params representation; use the kernel directly).

Parity targets: Audacity generators, Tone.js synthesis primitives. pink-noise extracted from audio-filter; musical test synths also live in beat/synth.js + beat/floatbeats.js (future floatbeats fixtures package).

MIDI rendering: poly(parse(smf).notes, { voice: pluck }) — see @audio/midi.

About

Synthesis & signal generators — umbrella for @audio/synth-* atoms (noise colors, oscillator, chirp, DTMF, pluck, risset drum, rhythm track, envelope, LFO)

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors