Emulating the Sound Canvas


EmuSC is a software synthesizer that aims to use the ROM files of the Roland Sound Canvas SC-55 lineup (and perhaps the SC-88 in the future) to recreate the original sounds of these ’90s era synthesizers.

EmuSC is currently in an early development stage and is not able to reproduce sounds anywhere near the original synths, but the goal is to be able to reproduce sounds that will make it difficult to notice the difference. If you are interested in emulating the SC-55 today your best bet is to try the SC-55 sound font made by Kitrinx and NewRisingSun.

This project is in no way endorsed by or affiliated with Roland Corp.


We are currently able to decode most of the ROM’s content and recreate the correct PCM samples for each instrument. Current focus is on investigating how to apply some kind of RIAA filter and adding support for ADSR (volume) envelope. Note that development is for the time being focused on the original SC-55 (mkI) ROMs. Other versions, such as the mkII, might not work at this stage.


In order to emulate the Sound Canvas you need the original control ROM and the PCM ROM(s). These ROM files can either be extracted from a physical unit by desoldering the ROM chips and read their content, or you can download the ROM files from the Internet.


ALSA sequencer is needed for MIDI input. Both ALSA and PulseAudio are supported for audio output. Note that PulseAudio has a lot of latency in its default configuration so it is recommended to use ALSA if possible.


There is currently no support for MIDI input on windows. There is however support for audio output through winmm, but this has limited value without MIDI input (it is possible to do basic audio tests via keyboard commands).


Currently not supported, but work in progress.


Download the source tree and build with GNU build tools:


A C++17 compiler with support for std::threads is required. Library dependencies depends on which MIDI input and audio output systems that are needed.


Interested in contributing to this project? All contributions are welcome! Download / fork the source code and have a look. Create an issue if you have any questions (or input / suggestions) and we will do our best to help you out getting the hang of how it all works!

All source code is released under the GPL 3+ license.


View Github