bhandras/synthlab

★ 0Forks 0TypeScriptGitHub ↗Compare

README

Synthlab

Synthlab is an experimental browser synth workstation: part sound-design playground, part playable instrument, part sketchpad for patterns and presets.

It is built with React, TypeScript, Vite, and the Web Audio API, with the goal of making synthesis feel immediate in the browser instead of hidden behind menus or plugin installs.

Live Demo

Play it here: https://bhandras.github.io/synthlab/

What You Can Do Right Now

  • Play notes directly from the on-screen keyboard.
  • Use the computer keyboard as a quick performance input.
  • Shape sounds with a dense, hardware-inspired control surface.
  • Watch the source waveform and filtered spectrum update live.
  • Save sounds locally in your browser and reload them later.
  • Load factory patches across keys, synth, bass, lead, and drum families.
  • Trigger factory patterns to quickly audition how patches behave musically.
  • Navigate many controls from the keyboard for faster tweaking.

Interface Overview

Synthlab is currently centered around a single synth view rather than a full song timeline.

  • The top rack handles saved sounds, factory patches, and quick pattern playback.
  • The scope windows show the raw source shape and the post-filter spectrum.
  • The main control board exposes oscillator, filter, envelope, modulation, and output parameters all at once.
  • The keyboard panel gives you a direct way to audition sounds without leaving the page.

Why This Exists

The longer-term goal is to explore a browser-native music tool that feels expressive and hackable:

  • fast enough for casual experimentation
  • deep enough to invite real sound design
  • visual enough to teach what the synth is doing
  • open-ended enough to evolve toward pattern editing and larger composition workflows

The current app is the synth-lab side of that vision: a focused place to design sounds, test ideas, and build up reusable patches before a larger music-maker workflow forms around it.

Controls

  • Click or drag the control strips to change values.
  • Focus a control and use the arrow keys for precise adjustment.
  • Use Shift for coarser moves and Alt for finer moves.
  • Use Ctrl+1 through Ctrl+6 to jump between control groups.
  • Use the keyboard panel or your computer keyboard to audition notes.

Local Development

npm install
npm run dev

Production Build

npm run build

Deployment

This repository deploys automatically to GitHub Pages from main using the workflow in .github/workflows/deploy.yml.

Contributors

bhandras

Issues