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 rudimentary support for all modern versions of Windows for both MIDI input and audio output. Windows has however no default MIDI sequencer, so you will either need to have a hardware MIDI port with appropriate device driver, or you will have to use a "virtual loopback MIDI cable" program. There is unfortunately no free software alternative for the latter alternative today, but for example LoopBe1 and loopMIDI are freely available for non-commercial use.
There is rudimentary support for macOS 10.6 and newer for both MIDI input and audio output.
Download the source tree and build with GNU build tools:
./autogen.sh
./configure
make
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.
Note that Clang is needed for compiling MIDI support on macOS. For ALSA support in Linux you need to have the libasound2-dev package installed.
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.