Introduction

Gibberish is a JavaScript synthesis and scheduling library. It has several unique features resulting from outputting samples from each synthesis unit (aka ugen) one at a time instead of in blocks. These features include:

In addition, each of the included ugens uses per-sample processing under the hood (using the library genish.js), so even the individual components are able to create some sounds that aren't typically heard using JavaScript audio synthesis. The library includes synthetic drum sounds, class virtual-analog emulations, various effects, and sequencers that offer precise control over timing.

Demo

Here's a demo borrowing some code from the Gibberish playground. It uses FM synthesis to create a gradually evolving synthetic timbre. The important parameter is the feedback property of the FM synth. This controls a feedback loop that has the modulator modulate itself, in addition to the carrier oscillator; this type of feedback requires per-sample processing techniques.

Gibberish.init() // start engine running
Gibberish.export( window ) // export constructors to global namespace

// create our synth and define its properties
const bigfm = PolyFM({ 
  gain:.15, 
  cmRatio:1.01,
  index:1.2,
  carrierWaveform:'triangle',
  modulatorWaveform:'square',
  attack:44100 * 32,
  decay:44100 * 32,
  feedback:.1,
}).connect()

// create a chorus effect, using our fm synth as input
const chorus = Chorus({ input:bigfm })

// create a reverb using the chorus as input
const verb = Freeverb({
  input:chorus,
  roomSize:.95, 
  damping:.15 })
.connect()

// play a chord!
bigfm.chord( [110,220,330,440] )