SpessaSynth is a SoundFont2-based real-time synthesizer and MIDI library written in vanilla JavaScript. It’s a powerful and versatile library that allows you to:
- Play MIDI files using SF2/SF3/DLS files
- Write MIDI files
- Write SF2/SF3 files
- Convert DLS to SF2 (and back)
- and more!
The library has been split from this repository. It only contains the web application now. Read more here
This repository contains the web application. For the library, see spessasynth_core and spessasynth_lib
The complete GUI for spessasynth_lib, allowing remixing, experimenting, and playing MIDIs in the coolest way possible.
- Visualization of the played sequence: with cool effects like visual pitch bend and note-on effects!
- Playable keyboard with various sizes: mobile friendly!
- Integrated controller for the synthesizer with numerous options: Edit instruments, controllers, and more!
- MIDI Lyrics support: Karaoke!
- Kar Lyrics support: Karaoke but fancy!
- ASS Subtitle support: Karaoke but even fancier!
- Music player mode: with support for album covers in .rmi files!
- Mobile-friendly UI (synthesizer performance not optimized for mobile... don't tell anyone!)
- Multiple language support:
- English
- Polish
- Japanese
- French (translated by Davy Triponney)
- Portuguese (translated by Lucas Gabriel)
- Custom locale management system, created specifically for this project
- Description of buttons: Hover over the buttons to see what they do!
Web MIDI API
support: Use your physical MIDI devices!- WebMidiLink support
- Numerous exporting options:
- Render the MIDI file (modified or unmodified) to .wav
- Render each channel as a separate .wav file
- Export the modified MIDI file to .mid
- Export the trimmed SoundFont to .sf2
- Export a DLS file to .sf2
- Export an SF2 file to .dls
- Or compress it as .sf3!
- Bundle both as .rmi with metadata such as album cover!
- Comes bundled with a compressed GeneralUser GS SoundFont to get you started
Local edition comes with easier soundfont management than the demo version, also allowing to use it offline!
Important
Firefox is recommended due to Chromium's Web Audio bug and memory limit. A decent computer is also recommended for handling large SoundFonts.
Recommended high-quality SoundFont (better than the built-in one)
Local Edition requires Node.js
- Download the code as a ZIP file and extract, or use
git clone https://github.com/spessasus/SpessaSynth
. - Put your SoundFonts into the
soundfonts
folder (you can select SoundFonts in the program). - Double-click
Open SpessaSynth.bat
. - Enjoy!
- Clone the repository:
git clone https://github.com/spessasus/SpessaSynth --depth 1 cd SpessaSynth npm start
- Put your SoundFonts into the
soundfonts
folder (you can select SoundFonts in the program). - Enjoy!
If you would like to help translate SpessaSynth, please read this guide (and thank you!)
If you like this project, consider giving it a star. It really helps out!
- FluidSynth - for the source code that helped implement functionality and fixes
- Polyphone - for the soundfont testing and editing tool
- Meltysynth - for the initial low-pass filter implementation
- RecordingBlogs - for detailed explanations on MIDI messages
- stbvorbis.js - for the Vorbis decoder
- OggVorbisEncoder - for the MIT Vorbis encoder
- fflate - for the MIT DEFLATE implementation
- foo_midi - for useful resources on XMF file format
- Composers - for the demo songs
- Falcosoft - for help with the RMIDI format
- Christian Collins - for the bundled GeneralUserGS soundfont and various bug reports regarding the synthesizer
- And You! - for checking out this project. I hope you like it :)
- 0.0.1 - Initial release
- 1.0.0 - Removed the 2-sample limit
- 2.0.0 - Implemented the worklet system and added support for modulators
- 3.0.0 - Moved to audioWorkletGlobalScope for offline audio rendering
Copyright © 2025 Spessasus. Licensed under the Apache-2.0 License.
This project is in no way endorsed or otherwise affiliated with the MIDI Manufacturers Association, Creative Technology Ltd. or E-mu Systems, Inc., or any other organization mentioned. SoundFont® is a registered trademark of Creative Technology Ltd. All other trademarks are the property of their respective owners.