Home

syngen

A spatial sound and synthesis library for audio game development and experience design.

Disclaimer

This is experimental and under active development. Use at your own risk.

Overview

syngen provides a light wrapper around the Web Audio API for building synths and positioning them as props on a three-dimensional binaural soundstage. Its event loop fires each frame to update props and core systems. Additional utilities provide tools for engineering custom systems that hook into its API to deliver rich experiences.

Example usage

This library must be used within a browser environment so it can access the window object. It can be imported or required as a UMD module, or accessed from the syngen global.

This example demonstrates how to define a prop and instantiate one on the soundstage:

const prototype = syngen.prop.base.invent({
  onConstruct: function () {
    this.synth = syngen.audio.synth.createSimple({
      frequency: syngen.utility.midiToFrequency(60),
      gain: syngen.utility.fromDb(-6),
    }).connect(this.output)
  },
  onDestroy: function () {
    this.synth.stop()
  },
})

const instance = syngen.props.create(prototype)

Please browse the example directory or the projects below for more elaborate real-world examples.

Example projects

  • Audo – Endless audio racing game
  • Auraboros – Endless audio bullet hell
  • Kaleidophone – Relaxing generative audio toy
  • S.E.A. – Relaxing audio watercraft simulator

Commercial projects

See also

Development

To get started, please use npm to install the required dependencies:

npm install

Common tasks

Common tasks have been automated with Gulp:

Build distributables only

gulp dist

Build documentation only

gulp docs

Build everything once

gulp build

Build everything continuously

gulp watch