Pingus and Pulseaudio on Hardy

30 April, 2008

After installing pingus on ubuntu hardy (8.04) I discovered that the sound only worked when no other applications where using the sound card, which is a bit of a pain. When trying to start pingus from a gnome terminal the following message appeared;

patrickd@battlestar:~$ pingus
Welcome to Pingus 0.7.2!
data path: /usr/games/../share/games/pingus/data/
language: English (en)
font encoding: iso-8859-1
sound support: enabled
music support: enabled
resolution: 800×600
fullscreen: disabled

Unable to initialize SDL_Mixer: No available audio device
Pingus: Unknown throw caught!

The interesting thing about this error is that it doesn’t appear to be pingus specific instead a generic SDL type problem. So, once again after some googling the solution that I came up with is shown below, I had tried a couple of other ones like “$ padsp pingus”, padsp appears to be a wrapper for pulseaudio (which is the default backend for hardy) and “export SDL_AUDIODRIVER=esd et” but this didn’t work either. I even found a post which suggested using “export SDL_AUDIODRIVER=pulse” but again this didn’t work for me. In the end I installed the pulseaudio “driver” for libsdl kind of obvious when you think about it 🙂 ;

patrickd@battlestar:~$ apt-cache search libsdl | grep sdl
libsdl-image1.2 – image loading library for Simple DirectMedia Layer 1.2
libsdl-image1.2-dev – development files for SDL 1.2 image loading libray
libsdl-mixer1.2 – mixer library for Simple DirectMedia Layer 1.2
libsdl-mixer1.2-dev – development files for SDL1.2 mixer library
libsdl-pango-dev – text rendering with Pango in SDL applications (development)
libsdl-pango1 – text rendering with Pango in SDL applications (shared library)
libsdl-ttf2.0-0 – ttf library for Simple DirectMedia Layer with FreeType 2 support
libsdl-ttf2.0-dev – development files for SDL ttf library (version 2.0)
libsdl1.2-dev – Simple DirectMedia Layer development files
libsdl1.2debian – Simple DirectMedia Layer
libsdl1.2debian-all – Simple DirectMedia Layer (with all available options)
libsdl1.2debian-alsa – Simple DirectMedia Layer (with X11 and ALSA options)
libsdl1.2debian-esd – Simple DirectMedia Layer (with X11 and esound options)
libsdl1.2debian-oss – Simple DirectMedia Layer (with X11 and OSS options)
libsdl-console – console that can be added to any SDL application
libsdl-console-dev – development files for libsdl-console
libsdl-erlang – Erlang bindings to the Simple Direct Media Library
libsdl-gfx1.2-4 – drawing and graphical effects extension for SDL
libsdl-gfx1.2-dev – development files for SDL_gfx
libsdl-net1.2 – network library for Simple DirectMedia Layer
libsdl-net1.2-dev – Development files for SDL network library
libsdl-ocaml – OCaml bindings for SDL – runtime files
libsdl-ocaml-dev – OCaml bindings for SDL – development files
libsdl-perl – SDL bindings for the Perl language
libsdl-ruby1.8 – Ruby/SDL interface for Ruby
libsdl-sge – extension of graphic functions for the SDL multimedia library
libsdl-sge-dev – development files for libsdl-sge
libsdl-sound1.2 – Decoder of several sound file formats for SDL
libsdl-sound1.2-dev – Development files for SDL_sound
libsdl-stretch-0-2 – stretch functions for Simple DirectMedia Layer
libsdl-stretch-dev – development files for SDL_stretch library
libsdl1.2debian-arts – Simple DirectMedia Layer (with X11 and aRts options)
libsdl1.2debian-nas – Simple DirectMedia Layer (with X11 and NAS options)
libsdl1.2debian-pulseaudio – Simple DirectMedia Layer (with X11 and PulseAudio options)

patrickd@battlestar:~$ sudo apt-get install libsdl1.2debian-pulseaudio

Now I can happily run amarok and pingus 🙂 I suspect this will probably work for other SDL based games like frozen-bubble.