After creating gtkmod and releasing a few versions I started to realise limitations in the sound system. I developed the system using a soundblaster 2.0 under linux using the Open Sound System, when I had some time on my hands.

After mixing the samples together in software I simply wrote them to /dev/dsp. When I bought a soundblaster awe 64 I started thinking about supporting the /dev/sequencer so that I could use the hardware to do the mixing for me and hopefully get a corresponding performance increase. However the architecture I had developed for gtkmod was not flexible enough and I needed to refactor it. At the same time I started working at a new job and didn't have much free time for programming.

After stumbling across the PenguinPlay website I noticed that weren't making much progress and had almost no sound code. I fixed up my sound system and it became PenguinSound.

I have still not fixed up all the code for gtkmod. The playback of mods works fined but the changes I made to the sound system broke the support for instruments. I also discovered that the /dev/sequencer was designed to work with notes and not frequencies, so my code needs to be fixed up a bit. I also ported the code to windows but directsound does not support looped samples very well and I need to do a bit of a work around.


I now have an sb live value. The linux driver for the sb live doesn't support /dev/sequencer. I don't think it supports the effects that the sb live provides either.

I have recently discovered a better user interface toolkit called fltk. Its fast, light and has been ported to both linux and windows. I've decided to do all my future user interaces in fltk. I did a bit of experimenting with qt but its non-free in windows. The is a port of gtk to windows but it seems to be still in heavy development.

GTKMOD is a mod, s3m and xm player with a GTK interface. The module player code is separated from the interface and exists as a static libary. This has made it easy to create other interfaces for the player. I have created an ncurses version, a gtk version and a qt version.

The source, which was written in c++, is available under the GNU GPL. Simple documentation for the code can be generated from the source using doxygen.

To get all the functionality from the source, you'll need gtk, ncurses and esound. You'll also need PenguinPlay.


  • GtkMod source from 18/10/1998.
  • The PenguinPlay site.
  • I like getting mail, as long as its not spam, so don't hesitate to mail me.

    pcburns at

    Last modified: Mon Jan 22 22:47:49 EST 2001