A professional-grade browser-based DAW (Digital Audio Workstation) with multi-track recording, MIDI piano roll, step sequencer, mixer, effects, and real-time audio processing.
Language: HTML Dependencies: Web Audio API, Canvas API, Vanilla JavaScript, CSS Grid/Flexbox, LocalStorage API, Web MIDI API, MediaRecorder API Topics: daw, audio-workstation, music-production, midi-sequencer, audio-recording, web-audio, synthesizer, audio-effects
A professional-grade browser-based DAW (Digital Audio Workstation) with multi-track recording, MIDI piano roll, step sequencer, mixer, effects, and real-time audio processing.
- Multi-track Recording: Record and edit multiple audio tracks simultaneously
- MIDI Piano Roll: Create and edit MIDI sequences with an intuitive piano roll interface
- Step Sequencer: Program beats and patterns with a grid-based step sequencer
- Professional Mixer: Multi-channel mixer with volume, pan, and routing controls
- Audio Effects: Built-in effects including reverb, delay, compression, EQ, and distortion
- Real-time Processing: Low-latency audio processing using the Web Audio API
- Synthesizers: Built-in software synthesizers for sound generation
- MIDI Support: Connect external MIDI controllers via Web MIDI API
- Project Management: Save and load projects using LocalStorage
- Export Audio: Render and export your projects as audio files
- Clone the repository:
git clone https://github.com/yourusername/ui-shout.git
cd ui-shout- Open
index.htmlin a modern web browser:
# Using Python 3
python -m http.server 8000
# Using Node.js
npx serve
# Or simply open the file
open index.html- Navigate to
http://localhost:8000in your browser
- Create a New Project: Click "New Project" to start with a blank workspace
- Add Tracks: Use the "+" button to add audio or MIDI tracks
- Record Audio: Click the record button on an audio track and allow microphone access
- Create MIDI: Double-click on a MIDI track to open the piano roll editor
- Apply Effects: Click the "FX" button on any track to add effects
- Mix Your Project: Adjust volumes and panning in the mixer section
- Export: Click "Export" to render your project to an audio file
Space: Play/PauseR: Start/Stop RecordingCtrl/Cmd + S: Save ProjectCtrl/Cmd + O: Open ProjectCtrl/Cmd + Z: UndoCtrl/Cmd + Y: RedoDelete: Delete selected items
- Connect your MIDI controller to your computer
- Click "Settings" > "MIDI Devices"
- Select your controller from the list
- Start playing!
- Modern web browser with support for:
- Web Audio API
- Canvas API
- LocalStorage API
- Web MIDI API (optional, for MIDI controller support)
- MediaRecorder API (for audio export)
- Recommended browsers:
- Chrome 90+
- Firefox 88+
- Edge 90+
- Safari 14+
- Web Audio API: Real-time audio processing and synthesis
- Canvas API: High-performance waveform and piano roll rendering
- Vanilla JavaScript: No framework dependencies for maximum performance
- CSS Grid/Flexbox: Responsive, professional layout
- LocalStorage API: Persistent project storage
- Web MIDI API: External MIDI controller integration
- MediaRecorder API: Audio recording and export functionality
ui-shout/
├── index.html # Main application entry point
├── css/
│ ├── main.css # Core styles
│ ├── mixer.css # Mixer interface styles
│ ├── piano-roll.css # Piano roll editor styles
│ └── sequencer.css # Step sequencer styles
├── js/
│ ├── app.js # Main application controller
│ ├── audio-engine.js # Web Audio API wrapper
│ ├── track.js # Track management
│ ├── mixer.js # Mixer logic
│ ├── piano-roll.js # Piano roll editor
│ ├── sequencer.js # Step sequencer
│ ├── effects.js # Audio effects processors
│ ├── synth.js # Software synthesizers
│ ├── midi.js # MIDI handling
│ ├── recorder.js # Audio recording
│ └── storage.js # Project persistence
└── assets/
├── icons/ # UI icons
└── samples/ # Demo audio samples
- Record from microphone or line input
- Non-destructive editing
- Waveform visualization
- Punch in/out recording
- Grid-based note editing
- Velocity editing
- Note quantization
- Copy/paste/duplicate functionality
- 16-step patterns
- Multiple patterns per track
- Pattern chaining
- Velocity and probability per step
- Parametric EQ (3-band)
- Compressor/Limiter
- Reverb (convolution and algorithmic)
- Delay (stereo and ping-pong)
- Distortion/Overdrive
- Chorus/Flanger
- Filter (low-pass, high-pass, band-pass)
- Subtractive synthesizer
- FM synthesizer
- Sample-based playback
- ADSR envelope control
- LFO modulation
| Feature | Chrome | Firefox | Safari | Edge |
|---|---|---|---|---|
| Web Audio API | ✅ | ✅ | ✅ | ✅ |
| Canvas API | ✅ | ✅ | ✅ | ✅ |
| Web MIDI API | ✅ | ❌ | ❌ | ✅ |
| MediaRecorder | ✅ | ✅ | ✅ | ✅ |
| LocalStorage | ✅ | ✅ | ✅ | ✅ |
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Web MIDI API is not supported in Firefox and Safari
- Audio latency may vary depending on browser and operating system
- Projects are stored in LocalStorage (limited to ~5-10MB)
- Some audio effects may be CPU-intensive on older devices
- Cloud project storage and collaboration
- VST plugin support via Web Assembly
- Advanced automation curves
- Video sync capabilities
- Mobile/tablet optimization
- Additional synthesizer types
- Sample library integration
MIT License
Copyright (c) 2024 ui-shout
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- Built with the Web Audio API
- Inspired by professional DAWs like Ableton Live, FL Studio, and Logic Pro
- Special thanks to the web audio community
If you encounter any issues or have questions:
- Open an issue on GitHub
- Check the documentation in the
docs/folder - Join our community discussions
daw audio-workstation music-production midi-sequencer audio-recording web-audio synthesizer audio-effects