A browser-based modular synthesizer with a step sequencer, built with React and the Web Audio API.
- VCO (Voltage Controlled Oscillator): Sine, Triangle, Sawtooth, Square waveforms with octave and detune controls
- VCF (Voltage Controlled Filter): Low-pass, High-pass, Band-pass filters with cutoff and resonance
- ADSR Envelope: Attack, Decay, Sustain, Release with visual feedback
- Master Output: Volume control with real-time oscilloscope visualization
- 16-step sequencer with piano roll interface
- Scale-aware note input: Major, Minor, Pentatonic, Blues, Dorian, Phrygian, Lydian, Mixolydian
- Adjustable root note: C2, C3, C4, C5
- Tempo control: 40-240 BPM
- Swing: 0-75%
- Gate length: 10-100%
- Step accents: Shift+click for accent
- Pattern randomizer: Generate patterns based on selected scale
- Acid: Classic TB-303 style resonant bass
- Techno: Punchy synth for electronic beats
- Ambient: Soft, evolving pads
- Node.js 18+
- npm or yarn
# Install dependencies
npm install
# Start development server
npm run devOpen http://localhost:3000 in your browser.
npm run build
npm run preview| Key | Action |
|---|---|
Space |
Play/Pause |
- Click anywhere to initialize the audio context (required by browsers)
- Create a pattern: Click cells in the piano roll grid to add/remove notes
- Adjust the sound:
- Change waveform in VCO module
- Tweak filter cutoff and resonance
- Shape the envelope (ADSR)
- Press Play or hit
Spaceto hear your sequence - Experiment: Try the presets, randomize patterns, change scales
src/
├── audio/
│ ├── AudioEngine.js # Web Audio API wrapper
│ └── Sequencer.js # Step sequencer logic
├── components/
│ ├── Knob.jsx # Rotary knob control
│ ├── Module.jsx # Module container
│ ├── VCOModule.jsx # Oscillator module
│ ├── VCFModule.jsx # Filter module
│ ├── EnvelopeModule.jsx # ADSR envelope
│ ├── MasterModule.jsx # Master output
│ ├── Oscilloscope.jsx # Waveform display
│ ├── SequencerModule.jsx # Step sequencer
│ ├── TransportModule.jsx # Play/Stop controls
│ └── PresetModule.jsx # Sound presets
├── store/
│ └── synthStore.js # Zustand state management
├── App.jsx
├── App.css
├── index.css
└── main.jsx
- React 18: UI framework
- Vite: Build tool and dev server
- Zustand: State management
- Web Audio API: Audio synthesis
- CSS Variables: Theming
MIT
Made with 🎵 and ☕