
Gt plays midi files in surround sound using patches you provide.  It
is a "soft synth" sampler derived from Tuukka Toivonen's classic program
TiMidity.  To get surround sound, you need a suitable sound card with
four or six analog connections to an external amplifier or powered
speakers and a fairly recent version of the Alsa drivers and library.


Compiling:

There are some configuration options (look at "./configure --help"), but
probably nothing you need to be concerned with.  The standard
	./configure
	make
	su
	make install
should work.


Running:

Assuming your sound system is set up ok and you have patches (see below),
cd to some directory where you have some midi files and type "gt" in an
X window or Linux console.  Then gt will play them and display the notes
and midi controls using curses.  The display is much nicer if you use
a window that can display at least 16 colors, e.g., an xterm window.
You can also give on the command line a directory containing midi
files or paths to individual midi files.

For a one page summary of command line options, type "gt -h", and for
more info, "man gt".


Patches:

Many distributions come with either GUS patches or a Soundfont set up
to work for Timidity++.  Gt knows about some other kinds of patches,
but patches set up for Timidity++ should work.  If you used configure
without options, as suggested just above, gt will expect to find
the config file "timidity.cfg" in the directory /usr/local/share/timidity/.
If it's present, but in some different location, you'll need to do
something about that.  Perhaps go back and run configure again using
the "--prefix=..." or "--datadir=..." option, or make a soft link
to your "timidity/" directory in /usr/local/share, or something along
these lines.  There's also a command line option for telling gt where
to look.

But if you don't have patches at all, you'll just have to get some for
gt to work at all.  There is a very small starter set of patches in
the examples/ directory of this distribution.  It has just a piano,
quitar, and a couple of drums, and it doesn't sound very good.  See
the README file in the examples/ directory for how to set it up.  For
a nicer set of patches, try Eric Welsh's "eawpats" GUS patches, or the
version of these at http://www.freepats.org, or else use a general
purpose GM (General Midi) Soundfont.  There are many thousands of
free Soundfonts on the web.  A nice one is Frank Wen's FluidR3,
available at http://www.ibiblio.org/thammer/HammerSound/, and there
are config files for it in the examples/ directory.

Gt can handle very large patch sets, and you could probably spend
years elaborating your patch setup, if you want to get into it.

---------------------------------------

The above might well get gt up and running.  What follows are notes
on details for special situations or making advanced use of gt.

On surround sound.

Gt produces an interleaved stream of samples with 1, 2, 4, or 6
sound channels.  Ordinarily this is sent to the Alsa sound driver
in the Linux kernel, but it can also be saved to a wave file or
an ac3 file.  There are command line options to choose the
number of channels and the destination.  The default number of
channels is the highest number possible -- for sound output, gt
tries to open the kernel driver for 6 channels, and if that fails,
it drops back to 4, quadriphonic, or 2 channels, ordinary stereo.
I haven't tried 1 channel, monophonic output for a long time, and
I don't know whether it still works.  Six channels is 5.1 sound,
and the channels, in the order in which they are produced, are
for the left, right, left rear, right rear, center, and lfe
speakers.  Four channels is 4.0 sound, and the channels are for
the left, right, left rear, and right rear speakers.  For direct
sound output, gt does not filter the lfe subwoofer channel, but
it does use a 100Hz low pass filter for output to wave or ac3
files.

Only Alsa will do.  Gt does not use the OSS, Open Sound System.
I don't have OSS on my system, and, anyhow, I don't know how to
do surround sound on OSS.  Also, to get surround sound, you need
to have 4 or 6 analog connections between your sound card and
external amplifier or powered speakers.  The digital SP/DIF
connector won't work, because the current generation of Alsa
drivers can't translate from multichannel analog to a digital
signal.  It might be possible to use digital sound with a
sound chip that has an onboard Dolby encoder, but I haven't
heard of anyone who has gotten that to work.

However, if you have a surround sound system that uses the
SP/DIF digital connector, it may be possible to get some
surround sound from gt by outputting to an ac3 file, then
using the ac3dec program from the Alsa tools to play it.
Ac3 files are Dolby Digital compatible encoded files.  The ones
produced by gt sound a little cheesy, I'm sorry to say.

If there is a problem getting surround sound to work on your
system, or some doubt about whether it is actually working, I
suggest using the speaker-test program from the Alsa utilities.
If that works to give you sound from all your speakers, then
gt should work.  Gt does not presuppose any special setup
of Alsa -- it should work with the defaults, provided of
course you have the right Alsa modules installed for your
soundcard.

My sound system uses 16 bit samples, not 24 bit samples.  But
gt can probably handle 24 bit output, though I cannot test
this directly.  Actually, my own soundcard, an Audigy2 zs,
supposedly will do 24 bit sound, but the Alsa driver for this
card does not yet know how to send 24 bit sound to the card.
Gt first tries to open the Alsa driver for 6 channel 24 bit sound,
and falls back to 6 channel 16 bit sound if this fails, so if
your card and Alsa driver are capable of it, you might get 24 bit
surround.  I don't know.  You can ask gt for 24 bit sound with
the "-Oa3" command line option, and you'll get it, but what
happens in this case on my system is that the Alsa driver refuses
to give 6 channels, gt falls back to 2 channels, then sends the
24 bit 2 channel signal to the Alsa driver, which down converts
the 24 bit sound to 16 bit sound before sending it to the card.
So it's pointless to ask for 24 bit sound for direct sound output
on a system like mine, though it may be useful for making wave
files using the command line option "-0w3".

For making ac3 files, the number of bits per sample is not
relevant.  32 bit samples are always used as a basis for the ac3
encoding.


On configuring and compiling.

If you need to edit the configure.ac file or the Makefile.am files,
you can use autogen.sh afterward to redo the configure and make
files.

During configuration, the ncurses and vorbisfile libraries are
looked for.  If ncurses is not found, the ncurses user interface
for gt cannot be compiled, leaving you with the "dumb" command
line interface only.  Gt will still work.  If the vorbisfile
library is not found, gt will not be able to use compressed
ogg file samples with sfz patches.  Since you will probably
not be using sfz patches, and if you do you will probably use
wave or aiff sample files with them, this will not make any
difference.  Gt will still work.  But if it's important to
you and the problem is merely that ncurses or vorbisfile are
in an unusual place on your system, the configure program has
options for telling it whare to look for these libraries.
Use "./configure --help" for information about these options.



Features:

(1) Reads extended GUS patches which contain about as
    much information about instruments as Soundfonts
    contain.  The utils directory has some documentation
    on extended GUS patches, a program "unsf" to extract them
    from Soundfonts, and a program "patinfo" to display
    their contents.

(2) Does 4 or 6 channel surround sound output.  You can
    also make 4 or 6 channel wave or ac3 files using Gt's
    wave and ac3 output drivers (use "-Ow" or "-Od").

(3) Has configuration file facilities for (a) referencing
    soundfile banks and instruments as GUS banks and
    instruments are referenced, (b) setting up alternate
    bank-instrument configurations and switching among
    them from the timidity command line, and (c)
    designating banks as various sorts of XG banks.

See the file FEATURES for a more complete list.

The utils/ directory has:

(A) unsf, for breaking up soundfonts into extended GUS
    patches.

(B) patinfo, for displaying information about an extended
    GUS patchfile.

(C) patcat, for combining two GUS patches into one extended
    stereo GUS patch.

(D) dim, a midi file disassembler.

Additional utility programs are in the src/ directory:

(E) sf2cfg, for constructing a config file for a Soundfont.

(F) sfz2pat, for deriving extended GUS patches from SFZ
    patches.


Greg Lee <greg@ling.lll.hawaii.edu>
