A web-based emulation of the classic Minimoog Model D analog synthesizer
Experience the Minimoog Model D emulator in your browser:
- Live Demo: minimoog.app
- Install as App: Click the install button in your browser to download as a native app
Actual Minimoog Model D (hardware)
Web-based Minimoog Model D Emulator (this project)
This project recreates the iconic Minimoog Model D synthesizer in the browser using modern web technologies. It provides an authentic recreation of the original instrument's sound and interface, making the legendary synthesizer accessible to anyone with a web browser.
- Authentic Sound: Faithful recreation of the synthesizer's oscillator characteristics and filter behavior
- Real-time Performance: Low-latency audio processing for live performance
- MIDI Enabled: Works out of the box with most MIDI keyboards (plug and play).
- Progressive Web App: Installable as a native app with full offline functionality
- Three-Oscillator Architecture: Classic waveforms (sawtooth, triangle, square, reverse sawtooth, pulse)
- Authentic Mixer: Individual volume controls for oscillators, noise, and external input
- 4-Pole Ladder Filter: Authentic Minimoog ladder filter using Huovilainen WASM implementation with resonance and key tracking
- Dual Envelope Generators: Filter and loudness contours with authentic response curves
- Modulation Sources: LFO, Noise, Oscillator 3, and Filter Envelope
- Performance Controls: Glide, Pitch Bend, and Modulation Wheel
- Virtual Keyboard: On-screen keyboard with mouse and touch support
- QWERTY Keyboard: Use computer keyboard to for real-time control
- MIDI Support: Use MIDI keyboard for real-time control
- Digital Delay: Variable delay time with feedback control for echo effects
- Convolution Reverb: High-quality reverb with tone filtering and adjustable mix
- Interactive Onboarding: 13 step guided tour for new users
- Learning Mode: Shows tooltips for each control describing what it does.
- Preset System: Curated collection of Minimoog sounds
- URL State Persistence: Save and share current settings via URL parameters
- Knob Magnification: Option to magnify knobs for more precision control
- Installable: Download as a native app on desktop and mobile devices
- Offline Functionality: Works completely offline once installed
- Automatic Updates: Service worker ensures you always have the latest version
- Node.js: Version 18.0.0 or higher
- npm or yarn: Package manager
- Web Browser: Chrome, Firefox, Safari, Edge (any modern browser with Web Audio API support)
# Clone the repository
git clone "https://github.com/stevebarakat/minimoog"
cd minimoog
# Install dependencies
npm install
# Start development server
npm run dev
The application will be available at http://localhost:5173
npm run dev # Start development server with hot reload (includes --host)
npm run build # Build for production
npm run preview # Preview production build locally
npm run test # Run tests with Vitest
npm run test:ui # Run tests with interactive UI
npm run test:coverage # Run tests with coverage report
npm run lint # Run ESLint for JavaScript/TypeScript code quality
npm run lint:css # Run Stylelint for CSS and auto-fix issues
npm run lint:css:check # Check CSS without auto-fixing
npm run analyze:css # Analyze CSS structure and organization
- Fork the Repository: Create your own fork of the project
- Create a Branch: Make changes in a feature branch
- Follow Guidelines: Adhere to coding standards and practices
- Test Changes: Ensure all tests pass
- Submit PR: Create a pull request with clear description
- Accessibility: Improve UX for tabbed navigation and keyboard controls
- Design: Improve UI for smaller screens
- Misc: Any other ideas are welcome!
This project incorporates several third-party libraries, algorithms, and research contributions:
- Research: Based on work by Antti Huovilainen (2004, 2010)
- Implementation: Adapted from CSound5 implementation by Victor Lazzarini
- License: LGPLv3 (original CSound5 implementation)
- Reference: Non-Linear Digital Implementation of the Moog Ladder Filter
- Zustand - Lightweight state management
- License: MIT
- Radix UI - Accessible UI primitives
@radix-ui/react-toast
- Toast notifications@radix-ui/react-tooltip
- Tooltip components@radix-ui/react-dialog
- Modal component
- react-rnd - Resizable and draggable component
- License: MIT
- clsx - Conditional className utility
- loglevel - Lightweight logging
- Lucide React - Icon library
- Typed Storage - Type-safe localStorage wrapper
- License: MIT
- React - UI library
- TypeScript - Type safety
- Vite - Build tool
- Vitest - Testing framework
- License: MIT
All third-party code is used in compliance with their respective licenses:
- MIT License: Most libraries and utilities
- LGPLv3: Huovilainen filter implementation (CSound5 derived)
This project is licensed under the MIT License - see the LICENSE file for details.
The MIT License allows you to:
- Use the software for any purpose
- Modify the software
- Distribute the software
- Distribute modified versions
- Use it commercially
The only requirement is that the original license and copyright notice be included in all copies or substantial portions of the software.
ยฉ 2005 Steve Barakat