Skip to content

apptension/synthflow.io

Repository files navigation

Synthflow

A Web Audio experiment.
It's a creative synth with mesmerizing 3D visualisation. Built with React, Tone.js and Three.js

Synth

SynthFlow is a custom-built synthesiser composed of the modules exposed by Tone.js.
It can play 3 separate voices simultaneously.
Melodies can be created in the sequencer.

Features:

  • 2 Oscillators - They generate the main signal, both with wave type selection and frequency correction
  • Envelope - Responsible for how the sound changes during the time note is played
  • Master volume control
  • BPM control - (Beats per minute) it's how fast the notes are played
  • Filter - An effect which cuts frequencies above specified threshold
  • Noise - Controllable separate 'pink' noise signal mixed into master
  • Reverb - An effect where millions decaying reflections of sounds off of multiple surfaces heard after the initial sound source
  • Chebyshev - An effect using chebyshev waveshaper algorithm, which distorts sound in an interesting way. It's like a frequency multiplier. Read more at music.columbia.edu
  • Sequencer - A grid divided by 8 / 16 / 32 beats which allows for creating melodies by setting specific notes for each of 3 voices. Each voice has its own octave selection

Visualisation

It’s an interactive ‘blob’ which dynamically changes with the sound and current synth settings.
Its shape and colors are defined by custom WebGL shaders. It’s deformed using Perlin Noise algorithm variation and other displacement functions. The colors rely on RGB color model manipulations, reflecting light, normals and current vertices positions.

To learn more about shaders and WebGL:

Scripts

yarn start

Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.

yarn build

Builds the app for production to the build folder.
See the section about deployment for more information.