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.
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
- Install Wine.
- Setup Wine prefix like this:
$ WINEPREFIX=~/.wine-soundcanvas WINEARCH=win32 winecfg
- Set Windows version in winecfg to Windows XP (if you don't there will be an avrt.dll error when you run the program)
- Get winetricks and install mfc42.dll like this:
$ WINEPREFIX=~/.wine-soundcanvas winetricks mfc42
- Run Sound Canvas VA's setup you downloaded from Roland's website and install it:
$ WINEPREFIX=~/.wine-soundcanvas wine SOUND_Canvas_VA_Installer.exe
- Download the Savihost x86 version (savihostx86.zip) from the author's website
- 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
- Run Savihost:
$ WINEPREFIX=~/.wine-soundcanvas wine "c:/program files/roland/SOUND Canvas VA/SOUND Canvas VA.exe"
- 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 - 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
- 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