There are many kinds of sound formats (WAV, MIDI, MPEG etc.). Below, we list the various formats and the applications that can be used to play them.
MIDI stands for Musical Instrument Device Interface. MIDI files
usually have the extension .mid
. They contain sequencing
information, that is, information on when to play what instrument in
what way, etc. Depending on your hardware (and maybe the software you
use to play them), the sound might be awesome, or it might be
downright crappy.
This package includes mp
(a command-line MIDI file player) and
xmp
(an XView based MIDI file player). You will need the
SlingShot extensions to use xmp
. It also contains other programs
for playing Adagio scores.
If you have a GUS, mp
can also play MOD files (see section
Modules for more information on modules).
One little annoying bug (as of version 0.5) is that the sound breaks
at the end. Namely, instead of ending the sound the way the MIDI file
specifies, it ends by playing the note right before the last one in a
long interval. It hasn't stopped me from using mp
, but it might
prevent someone from using it for `real' work. It also starts up
relatively slowly.
The package does not mention any copyright (at least none that I can find), so I assume it can be freely redistributed and modified. Don't hold me to my word, though.
It is a port of the CMU MIDI Toolkit to Linux (though there was enough
added to make this questionable) by Greg Lee
(lee@uhunix.uhcc.hawaii.edu
).
It can be found at
ftp://tsx-11.mit.edu/pub/linux/packages/sound/adagio05.tar.gz. The
binaries included here are in a.out format (linked with ancient
libraries), and the xmp
binary segfaults in a X11R6 environment
(XFree86 3.1.1, libc 4.7.2). The mp
binary works fine.
You will need a bit of hackery to compile it. Actually, it's not much
of a hackery. All you have to do is to include the -lfl
switch
at the end of SHROBJ
and XMPOBJ
in the Makefile. This is to
link in the flex
library, which is not linked in by default.
Then follow the installation instructions. And don't forget to have
XView and the SlingShot extensions installed if you want to compile
xmp
.
Some people recommend this experimental program because of good
sound quality (which is very true, it's much better than mp
on a
Sound Blaster 16, though probably won't be much different on a GUS).
However, it suffers from high CPU loads. It plays MIDI by first
converting MIDI to WAV and then plays the WAV (you can also convert a
MIDI file to a WAV file without playing if you want). This is the
reason for its CPU intensive nature.
It also has an optional ncurses, SLang, Tcl/Tk or Motif interface.
You need Gravis Ultrasound patch files to use this. Look into the FAQ
included with timidity
for more information.
The latest version of timidity
can be found at
http://www.clinet.fi/~toivonen/timidity/. This page also
contains a link to a small library of GUS patches. The Motif version
can be found at
http://www.loria.fr/~pagel.
It is written by Tuukka Toivonen (titoivon@snakemail.hut.fi
).
This is a MIDI player that plays to FM, GUS, and external MIDI. It is supposed to have a faster startup time compared to other MIDI players. It is also able to play Creative Music Files, Microsoft RIFF files, and large MIDI archives from games such as Ultima 7.
It has an X interface and a SVGA interface. It also has an option for
real time playback with tracking all the notes on each channel and the
current playback clock (included automatically with xplaymidi
and
splaymidi
).
You should do something like
$ splaymidi foo.mid; stty sane
if you are going to use the SVGA interface, since it doesn't reset the terminal tty mode properly. The SVGA interface may be removed in the near future.
It is written by Nathan Laredo (laredo@gnu.ai.mit.edu
or
laredo@ix.netcom.com
).
It can be found at ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/playmidi-2.3.tar.gz.
Modules (in computer music) are digital music files, made up of a set of samples and sequencing information, telling the player when to play which sample (instrument) on which track at what pitch, optionally performing an effect like vibrato, for example.
An advantage it has over MIDI is that it can include almost any kind of sound (including human voices). Another is that it sounds just about the same on any platform, because the samples are in the module. A disadvantage it has is that it has a much larger file size compared to MIDI. Another one is that it has no real standard format (the only `real' one is the ProTracker, which many modules aren't quite compatible with). It originated on the Amiga.
They usually have the extension .mod
. There are many other
extensions depending on what format they are in.
This very portable program (it has been ported to many platforms)
plays Soundtracker and Protracker music modules. It uses 16 bit
stereo output, and I consider the quality to be very good. If you
need a simple way to reduce CPU load use the -mono
option.
This is a giftware program (quoting the author). It is by Marc Espie
(Marc.Espie@ens.fr
).
A version of this with the Makefile already tweaked for Linux is at ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/tracker-4.3-linux.tar.gz.
This plays 4/6/8 track MOD modules and Scream Tracker 3 modules. It
uses 8 bit mono output with a sampling rate of 22000 Hz by default.
You can use the option -s
to enable stereo, -b
to enable 16
bit output, and -f
to set the sampling frequency. However, the
sound output is worse than tracker (some noise), so I recommend using
tracker
instead of s3mod
for playing ordinary MOD files
(unless you have an underpowered machine). It has a much smaller CPU
load compared to tracker.
It is copyrighted by Daniel Marks and David Jeske
(jeske@uiuc.edu
), but you can do anything you want with it
(except that you can't claim you wrote it).
It can be found at ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/s3mod-v1.09.tar.gz.
This is a music module player for the Gravis Ultrasound card. 4/6/8 channel MOD, 8 channel 669, MultiTracker (MTM), UltraTracker (ULT), FastTracker (XM), and ScreamTracker III (S3M) are the supported formats.
It requires version 3.0 or later sound driver. And a GUS, of course. You may need to modify the kernel to make volume control work the way you want.
This has an X interface. It uses the QT toolkit (needs version 0.99 or greater). Check the QT toolkit homepage for information on QT.
This can be freely distributed. It was originally written by Hannu
Savolainen, and now maintained by Andrew J. Robinson
(robinson@cnj.digex.net
).
It can be found at ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/gmod+x-3.0.1.tgz.
This beta program plays MODs (15/31-instrument, up to 32 voices),
MTMs, ULTs and S3Ms on the Gravis Ultrasound card. It can also use
packed modules if you have gzip
, lharc
, unzip
, and
unarj
installed. It cannot play Powerpacked modules or modules
packed with some Amiga composers ("PACK" signature).
This requires at least version 3.0 of the sound driver. It won't work with the 2.90-2 or earlier version of the sound driver. The text interface requires ncurses. There is also an X interface included, which uses Tcl/Tk.
It is written by Mikael Nordqvist (mech@df.lth.se
or
d91mn@efd.lth.se
).
It can be found at ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/mod-v0.81.tgz.
This portable module player plays XM, ULT, STM, S3M, MTM, MOD and UNI
formats. (The UNI format is an internal format used by MikMod.) It
has support for zipped module files. It uses 16 bit stereo for the
sound output. Use the -m
option (for mono output) if you need a
simple way to lower the CPU load.
The Unix version uses ncurses for its interface.
It is written by Jean-Paul Mikkers (mikmak@via.nl
). The Unix
version has a lot of modifications by Steve McIntyre
(sam1007@cam.ac.uk
). This is shareware that has to be registered
if you want to use it commercially. You also need permission to
redistribute it commercially (non-commercial redistribution does not
need such permission).
The Unix version can be found at ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/mikmod-2.13-unix.tar.gz.
This is an alpha module player which can play MTM, S3M, and MOD
modules. It is intended to be a module player for soundcards without
a DSP (not to be confused with what Creative Labs calls a DSP). It
has a CPU load somewhat similar compared to tracker
.
It has a feature which lets modules loop if they want to. The number
of loops can be limited by the -l
option. It uses only 8 bit
sound output (as of version 0.1).
This was written by Toru Egashira (toru@jms.jeton.or.jp
).
It can be found at ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/nspmod-0.1.tar.gz.
This alpha program was designed to play 4-channel modules using the minimum of CPU resources. It was not designed to produce high quality sound. So the only sound output it produces is 22 kHz mono output. Also, the output isn't as clean as it should be, reflecting its alpha status.
It was written by David Groves (djg@djghome.demon.co.uk
).
It is available at ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/yampmod-0.1.tar.gz.
MPEG is a standard specifying the coding of video and the associated
audio for digital storage. MPEG is usually associated with video, but
the audio part of the standard can be used separately. The audio part
of the MPEG standard defines three layers, layer I, II, and III.
Players that can decode higher layers can also decode lower layers
(e.g. layer III players can play layer II files). Layer I MPEG audio
files usually have the extension .mpg
(so if there is a file with
this extension that can't be played by a MPEG video player, it's
probably an audio stream), layer II usually have .mp2
, and layer
III usually have .mp3
. The audio compression is pretty good. A
two megabyte layer II MPEG audio file will probably take up 25
megabytes for a raw PCM sample file with the same quality.
This MPEG audio stream player only has support for layer I and layer
II streams. It lacks support for layer III as of version 1.2. It
supports 16 bit sound cards on Linux (though some 16 bit sound cards
are rumored not to work with maplay
).
It is very CPU intensive, taking up to about 55% CPU time on a
60MHz Pentium. The output is intolerable on a 66MHz 486 because the
CPU just can't catch up with the sound. If this happens to you, try
playing only one side of the audio stream (with the -l
or -r
option), instead of the default stereo.
A slight change in one of the files may be necessary in order to
compile it. Namely, you may need to add the following line to the
beginning of the file configuration.sh
.
#! /bin/sh
The author is Tobias Bading (mailto:bading@cs.tu-berlin.de
).
maplay
can be found at
ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/maplay1_2.tar.gz.
This is actually a converter that converts MPEG Layer 3 audio streams to WAV, AIFF, SND, AIFC, or just raw PCM sample files. The Linux version does not directly output the sound to the soundcard. One has to first convert it to some other format.
However, when you try to play a converted file using sox
, you'll
probably just get noise because the word order in the PCM samples is
not right (at least on Intel platforms). You need to give sox
the option -x
to solve this problem. But there are some players
that don't have to be told that the word order is wrong, so you might
not have to worry about this.
If you have a really fast computer (probably at least a 90Mhz
Pentium), then you can try to play it directly without having to first
convert the MPEG audio file to another format like in the following
example (this example assumes that you're using sox
and playing a
44.1 kHz stereo sample).
$ l3dec foo.mp3 -sto | play -t raw -x -u -w -c 2 -r 44100 -
The number after -r
is the sample rate of the audio stream, and
the number after -c
depends on whether it is mono or stereo (or
even quad). If this looks too complicated, you can use something like
a shell script or an alias. Or you can use mp3play
(found at
ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/mp3play.tar.gz),
which sets all the options and plays it for you (mp3play
includes
l3dec
and uses wavplay
, which is also included).
This is shareware copyrighted by Fraunhofer-IIS. A demo version for Linux on x86 systems is available at ftp://ftp.fhg.de/pub/layer3/l3v261.linux.tar.gz. The demo version only converts layer III audio streams.
Quote from the sox
man page:
These appear to be very similar to IFF files, but not the same. They are the native sound file format of Windows 3.1. Obviously, Windows 3.1 is of such incredible importance to the computer industry that it just had to have its own sound file format.
These usually have the extension .wav
.
Also see section sox and bplay for other WAV players besides the ones listed here.
This program has a command line interface and an X Window interface for playing and recording in WAV format. It uses locking so that only one sound may be played at a time. Its locking capabilities can also be used separately from its sound playing capabilities.
The copyright is different for each part of the program (being created
by different authors), but basically you can do whatever you want with
it as long as the proper credits are given. It was originally written
by Andre Fuechsel (af1@irz.inf.tu-dresden.de
), and the current
implementation is by Warren W. Gay (bx249@freenet.toronto.on.ca
or wwg@ica.net
).
It can be found at ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/wavplay021w1.tar.gz.
This program is based on wavplay
. It too has an X Window
interface for playing and recording in WAV format. However, it also
has some editing capabilities and can add effects.
This is still in a rather buggy stage, so the author would appreciate any bug reports, bugfixes, or new code.
This is registered freeware, in other words you can freely redistribute it as long as you register it by sending the author a color picture postcard. But it's OK to use it unregistered, as long as you don't get caught???
The author is Will Fish (fishwj@ee.port.ac.uk
).
XWave can be found at ftp://ftp.ee.port.ac.uk/pub/linux/sound/xwave0.01-1.tar.gz.
This section lists stuff that play sound formats that don't deserve a separate section (i.e. formats that have only one player available), or players that play more than one format.
This program is actually a converter, that is, it converts one sound
format to another. When invoked as play
, however, it plays the
sound (the play
application in the Sound HOWTO probably refers to
this). It supports raw (no header) binary and textual data, IRCAM
Sound Files, Sound Blaster .voc
, SPARC .au
(w/header), Mac
HCOM, PC/DOS .sou
, Sndtool, and Sounder, NeXT .snd
, Windows
3.1 RIFF/WAV, Turtle Beach .smp
, CD-R, and Apple/SGI AIFF and
8SVX formats
Since somewhere in the 1.3.6x kernels, you might have to make a small
change in one file to make it play the sound directly. Namely, you
may have to change line 179 in sbdsp.c
from
if (abuf_size < 4096 || abuf_size > 65536) {
to
if (abuf_size < 1 || abuf_size > 65536) {
But then again, you might not have to do this. But doing this won't break anything.
It is written and copyrighted by many people, and can be used for any purpose.
It can be found at ftp://sunsite.unc.edu/pub/Linux/apps/sound/convert/Lsox-linux.tar.gz.
A more recent version by Chris Bagwell
(cbagwell@mwsun026.aud.alcatel.com
) (based on the latest gamma
version of the original sox
) can be found at
ftp://sunsite.unc.edu/pub/Linux/apps/sound/convert/sox-11gamma-cb2.tar.gz.
This beta program plays raw audio, WAV, and VOC files. It's also
able to record to these files. It uses a variety of techniques to get
the highest speed possible so that it can run acceptably even on slow
machines. One of these techniques require that the installed programs
be setuid root. The paranoid hoping to use this may want to use the
Debian package by Ian Jackson (ijackson@gnu.ai.mit.edu
), which
disables the feature that needs the setuid bit.
The author is David Monro (davidm@gh.cs.usyd.edu.au
).
It can be obtained from ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/bplay-0.95.tar.gz.
This lets you listen to sound in real time over the Internet without downloading the whole sound file first. It could be used stand alone, but it is really intended to be used along with a web browser (the explicitly supported ones are Mosaic and Netscape). It cannot be used without X (you wouldn't be able to get it working with Lynx in a text console).
This is by Progressive Networks, Inc. This cannot be redistributed, modified etc. Look at the license for exact details on what you can do. It can be obtained by registering with no cost at the RealAudio home page.
One might think what cat
, the sometimes overused concatenating
utility, has to do with playing sounds. I'll show a use of it through
an example.
$ cat sample.voc > /dev/dsp
$ cat sample.wav > /dev/dsp
$ cat sample.au > /dev/audio
Doing a cat
of an .au
file to /dev/audio
will
usually work, and if you're lucky enough that the file has the correct
byte order (for your platform) etc., a cat
of a sound file that
uses PCM samples (like .wav
or .voc
) to /dev/dsp
might even sound right.
This isn't a totally useless use of cat
. It might be useful, for
example, if you have a sound file that none of your programs
recognize, and you know that it uses PCM samples, then you might be
able to get a very approximate idea on how it sounds like this way (if
you're lucky).