pluck-string-node

Pluck String AudioNode for Web Audio API

Usage no npm install needed!

<script type="module">
  import pluckStringNode from 'https://cdn.skypack.dev/pluck-string-node';
</script>

README

PluckStringNode

Build Status NPM Version License

Pluck String AudioNode for Web Audio API

Installation

npm install pluck-string-node

downloads:

API

PluckStringNode

  • constructor(audioContext, opts)
    • audioContext: BaseAudioContext
    • opts.color: number tone color (aka cutoff frequency)
    • opts.timeConstant: number time constant until harmonics converges

Instance Attributes

  • frequency: AudioParam readonly
  • detune: AudioParam readonly
  • color: number
  • timeConstant: number

Instance Methods

  • start(when: number): void
  • stop(when: number): void

Quick Example

var pluck = new PluckStringNode(audioContext);

pluck.color = 1000;
pluck.timeConstant = 10;
pluck.frequency.value = 880;
pluck.start(audioContext.currentTime);
pluck.stop(audioContext.currentTime + 4);

Demo

https://mohayonao.github.io/pluck-string-node/

Algorithm

This node's algorithm is inspired from Karplus–Strong string synthesis.

  1. create OscillatorNode
  2. OscillatorNode connect to WaveShaperNode which has random curve
  3. WaveShaperNode connect to lowpass BiquadFilterNode
  4. when start(), set color to the BiquadFilterNode frequency
  5. and the cutoff frequency continuous change to very low frequency during timeConstant.

AudioGraph

pluck-string-node

License

MIT