How To: Fix Broken Sound in ScummVM under Linux

I’m running Ubuntu 9.10 64-bit, and thought I’d have a look at some old LucasArts gems today – but the version of ScummVM taken from the repos wouldn’t play any sound. So I fixed it.

  • The all-in-one complete fix:
    Fire up synaptic and install libsdl1.2debian-pulseaudio then reboot. Sound (i.e. voice, samples etc) and midi should work absolutely fine now. A potential problem with this fix is that it means you have to uninstall libsdl1.2debian-alsa, which it’s possible you might want to keep. This is the route I finally took, but if I find a bunch of apps are now without sound, I’ll update the post and try to find some other methods.
  • Oh, and if you loose all sound after this (YouTube, Totem etc), then you’ve probably got gstreamer set to use ALSA, but have now removed the sdl-alsa lib, so just run gstreamer-properties and point your audio output to PulseAudio Sound Server then log out then back in. Fixed.

    Update: Although working yesterday, I found I had no sound in flash stuff today (YouTube vids etc), so I installed padevchooser from synaptic, which dragged in a couple of other pulseaudio bits and pieces, launched padevchooser, and then from the icon in the system tray (top-right in Gnome) I just selected Default for Default Server and Default Sink – closed then re-opened firefox and everything’s working again. I guess I didn’t come across this yesterday because I already had Firefox open and using flash (npviewer.bin) with the ALSA plugin already resident in memory and in use.

  • The easy fix to get midi working using ALSA:
    Try running ScummVM from the terminal as pasuspender scummvm – if you can hear midi sound when you start a game, that’s half the battle.
  • The slightly more involved midi fix:
    If the easy fix doesn’t work, grab yourself a midi file from somewhere (like this one) and play it from the terminal with timidity name-of-file.mid. If it plays, jolly good. If not, have you got timidity installed? If you have, and still can’t play a midi, read this.

    I’ll assume you can play a basic midi file from the terminal, but there’s no midi in ScummVM games (which was the situation I was in). So, first we need to find out where our midi ports are at – to do this, run the following line from the terminal: aconnect -o -l

    The output I get is:

    client 14: 'Midi Through' [type=kernel]
        0 'Midi Through Port-0'
    client 128: 'TiMidity' [type=user]
        0 'TiMidity port 0 '
        1 'TiMidity port 1 '
        2 'TiMidity port 2 '
        3 'TiMidity port 3 '

    Midi in ScummVM wants to play on ports 17 or 65 by default, but on my box we can see that port 128 (i.e. client 128) is where the user-land midi ports are at. So now we need to modify the ScummVM config file with that data. So open up the file ~/.scummvmrc with your text editor of choice and add the line alsa_port=128:0 (or whatever your user-land aconnect -o -l output is), or if the line already exists just amend it to point at your midi port.

  • Give ScummVM another go (from the terminal so you can see its output), point the Music driver device at ALSA or Timidity now, and you should at least get midi sound, and see something like the following in the terminal output:

    Connected to Alsa sequencer client [128:0]
    ALSA client initialised [129:0]

    Really though, I think the first option is the best, as I’ve not been able to get voice/samples working with anything other than installing the pulseaudio sdl library. I’ve just put the other options in incase you’ve a strong case against getting rid of libsdl1.2debian-alsa, and if I find there’s one in my case, I’ll come back and update things. But for now, I think I might have a crack at The Dig :)

One thought on “How To: Fix Broken Sound in ScummVM under Linux”

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.