Sound Canvas VA and DOSBox under Linux

Sound Canvas VA is a proprietary plug-in for DAWs (digital audio workstation, software used in music production) developed by Roland. It's basically a MIDI synthesizer that should sound nearly identical to a real hardware Sound Canvas SC-55, SC-88, SC-88 Pro or SC-8820. It costs around as much as the real hardware, but a free trial version is available that works for 10 minutes before it needs to be restarted.

Sound canvas va linux dosbox.png

What's nice about it is that you can run the plug-in standalone with the tiny tool Savihost in Wine, and have native DOSBox (or other programs) send MIDI data to it. That way you can achieve authentic Roland GM/GS sound in games.

How-to

  1. Install Wine.
  2. Setup Wine prefix like this:
    $ WINEPREFIX=~/.wine-soundcanvas WINEARCH=win32 winecfg
  3. Set Windows version in winecfg to Windows XP (if you don't there will be an avrt.dll error when you run the program)
  4. Get winetricks and install mfc42.dll like this:
    $ WINEPREFIX=~/.wine-soundcanvas winetricks mfc42
  5. Run Sound Canvas VA's setup you downloaded from Roland's website and install it:
    $ WINEPREFIX=~/.wine-soundcanvas wine SOUND_Canvas_VA_Installer.exe
  6. Download the Savihost x86 version (savihostx86.zip) from the author's website
  7. Extract the Savihost executable to ~/.wine-soundcanvas/drive_c/Program Files/Roland/Sound Canvas VA and rename it to the same base name as Roland's .dll file: Sound Canvas VA.exe
  8. Run Savihost:
    $ WINEPREFIX=~/.wine-soundcanvas wine "c:/program files/roland/SOUND Canvas VA/SOUND Canvas VA.exe"
  9. In the menu go to Devices > Wave and setup like this:
    Option
    Input port * No Wave *
    Output port DS: Pulseaudio
    Sample rate 44100 (or 48000, going higher would be silly)
    Buffer As low as you can go without getting stutter (to reduce latency), ie. 1050 samples
  10. In your DOSBox .conf file, setup MIDI (you can check the Midi Through Port-0 with ALSA's aconnect -l):
    [midi]
    mpu401=uart
    mididevice=alsa
    midiconfig=14:0
  11. Launch your game's setup and configure it for GM/GS music. Run the game and enjoy.

Example launcher script

You can launch DOSBox/Sound Canvas VA anyway you like, but I use a simple launcher script that I just slightly modify for each game.

#!/bin/sh

if ! pgrep "SOUND Canvas VA.exe" > /dev/null
then
    WINEARCH=win32 WINEPREFIX=~/.wine-soundcanvas wine "c:/program files/roland/SOUND Canvas VA/SOUND Canvas VA.exe" &
    killscva=true
fi

ROOTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$ROOTDIR"/wineprefix/drive_c/GOG\ Games/"Gabriel Knight - Sins of the Fathers"/DOSBOX
/usr/bin/dosbox -conf "$ROOTDIR"/gknight.conf -conf ../dosboxGK.conf -conf "$ROOTDIR"/../generic.conf -noconsole -c exit

if killscva==true; then killall "SOUND Canvas VA.exe"; fi