The legendary Roland TR-808, reimagined for the modern web
A fully-featured browser-based TR-808 drum machine that brings the iconic sounds that shaped hip-hop and electronic music to everyone, everywhere.
The TR-808 revolutionized music production and became the backbone of countless genres, but authentic hardware remains expensive and inaccessible. This web version democratizes these legendary sounds while showcasing the power of modern web audio technology.
No downloads. No plugins. Just authentic 808 beats in your browser.
- 16-step grid for creating rhythmic patterns
- Loop playback with visual current step indicator
- Swing support for more natural grooves
- Kicks: Classic, Deep, Punchy, Sub, Tight, Boomy
- Snares: Classic, Crispy, Fat, Dry, Clap, Rim Shot, Snap
- Hi-hats: Closed, Open, Tight, Long, Metallic
- Toms: High, Mid, Low
- Percussion: Cowbell, Congas (High/Mid/Low), Cymbal, Maracas
- BPM: Tempo control from 60 to 200 BPM
- Swing: Groove adjustment from 0 to 100%
- Master Volume: Global volume control
- Accent: 16-step accent system with volume control
- Mute/Solo: Mute and solo functions per track
- Tone Control: Pitch adjustment per track (-12 to +12 semitones)
- Multiple pattern system (A, B, C, D)
- Pattern save and load functionality
- Pattern copy between banks
- JSON export/import
- Individual or global pattern clearing
- Responsive interface for desktop and mobile screens
- Modern UI components with Radix UI
- Tailwind CSS styling
- Smooth animations and immediate visual feedback
- Node.js (version 16 or higher)
- npm or yarn
npm installnpm run devThe application will be available at http://localhost:5173
npm run buildnpm run preview- Click "+" to add a track
- Select an instrument from the dropdown list
- Click on steps in the grid to activate/deactivate beats
- Adjust volume and parameters for each track
- Play/Pause: Start or stop playback
- Stop: Stop and return to beginning
- BPM: Modify tempo
- Swing: Add groove to the rhythm
- Use A, B, C, D buttons to switch between patterns
- Copy: Copy current pattern to another slot
- Clear: Clear current pattern
- Export: Save all patterns as JSON
- Import: Load patterns from JSON file
- Accent: Enable accent and program accents on specific steps
- Mute/Solo: Control playback of each track individually
- Tone: Adjust pitch of each track
npm run dev: Development server with hot reloadnpm run build: Production buildnpm run preview: Preview production buildnpm run lint: Code linting with ESLintnpm run lint:fix: Auto-fix ESLint errorsnpm run format: Code formatting with Prettiernpm run format:check: Check code formattingnpm run type-check: TypeScript type checking
- React 19: UI Framework
- TypeScript: Static typing
- Vite: Build tool and development server
- Tailwind CSS: CSS framework
- Radix UI: Accessible UI components
- Web Audio API: Audio management
src/
βββ components/ # React components
β βββ ui/ # Reusable UI components
β βββ Grid.tsx # Sequencer grid
β βββ Controls.tsx # Playback controls
β βββ ...
βββ core/ # Business logic
β βββ AudioEngine.ts # Audio engine
β βββ SequencerEngine.ts # Sequencer logic
β βββ PatternManager.ts # Pattern management
βββ hooks/ # Custom React hooks
βββ types/ # TypeScript definitions
βββ utils/ # Utilities
- Space: Play/Pause
- Escape: Stop
- 1-4: Switch pattern (A-D)
We love contributions! Whether you're:
- π Reporting bugs
- π‘ Suggesting features
- π¨ Improving the UI/UX
- π§ Fixing issues
- π Writing documentation
- π΅ Adding new sounds
How to contribute:
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
# Clone the repo
git clone https://github.com/jeco123/beatcraftery.git
cd beatcraftery
# Install dependencies
npm install
# Start development server
npm run dev
# Run tests
npm test
# Lint & format
npm run lint
npm run formatSee ROADMAP.md for planned features and improvements.
- Roland Corporation for creating the legendary TR-808
- Web Audio API community for making browser audio possible
- Open source contributors who make projects like this possible
This project is licensed under the MIT License - see the LICENSE file for details.
Made with β€οΈ for the global music community
β Star this repo if you found it useful! β
π΅ Try the live demo | π Report bugs | π‘ Request features