***************************************************************************
*                               /\                                        *
*                              /--\                                       *
*      |\     /                      /-------\                            *
*      | \    |  /---- :     :      |          /-----\ |----\   /----     *
*      |  \   | |      |     |      |          |     | |     | |          *
*      |   \  | |----  |  ^  |      |          |     | |____/  |----      *
*      |    \ | |      | / \ |      |          |     | |  \    |          *
*      |     \|  \____ |/   \|       \_______/ \_____/ |   \_   \____     *
*                                                                         *
*                        P R O D U C T I O N                              *
*                                                                         *
***************************************************************************



Some information about UCDM - The Software Soundchip


What is UCDM?
-------------
UCDM is simply a standard for replayroutines, consisting of two parts,
Players (UMP) and Feeders. A Feeder reads the songdata, translates it
into sampleaddresses, volumes and frequencies with which it feeds the
player, that makes the actual replay (the heavy bit).

The idea is that every user shall be able to combine these two routines
so it suits him the best. I have a large variety of players from 12.5 kHz
4 voice with no volume control taking approximately 12% CPU-time on a
normal STE, to an 8 voice 25 kHz player taking approximately 95 % CPU-time.

In the same way I can easily make different feeders ranging from normal
Tracker- or Quartet-Feeders to EPSS lookalike MID-file-Feeders, thus
being able to play all known songformats without having to rewrite the
whole replayroutine. However, the only Feeder I've written so far is a
CORESONG-Feeder (my own fileformat, more about this later), the Feeder
in Octalyser is written by Code.

How do I use UCDM in Octalyser?
-------------------------------
Octalyser has a built a Feeder, so the only thing you have to do is to
load the desired Player from the UCDM-menu and activate it.
If you then play a module you will probably notice that toneslides sounds
terrible. To make it sound better you simply increase the variable in the
UCDM-menu marked 'TO' and then activate it again. The higher the value,
the better will toneslides, tonevibratos and finetune-settings sound, but
the more memory will the Player take if it uses a frequency-table (like
Tammany).


Why should I use UCDM in the Octalyser?
---------------------------------------
The internal Octalyser replay routine is written to be flexible and take
smallest possible amount of memory. My UCDM routines are more specialised
and have therefore some other advantages and disadvantages. Tammany for
example plays 8 voices in 25 kHz on a normal STE, with other words it's
a lot faster than the internal routine. On the downside it takes a lot of
memory and some calculations are a bit rough, which results in a slightly
distorted sound (you will probably not notice it if you don't listen very
carefully).
If you are a Falcon-owner you should absolutely use the Players called
Naishee and Banshee, that takes better use of Falcons increased resources.


How do I use UCDM in my own programs?
-------------------------------------
To use UCDM and Octalysermodules in your own programs you will need a
Feeder that can read modules or CORESONG-files (modules can easily be
converted to CORESONGs). If you register Octalyser, we will send you a
CORESONG-Feeder, a Module-to-CORESONG-converter and one or two more
UCDM-Players (among them Rachel, the fast 12.5 kHz player).
Why we use our own fileformat is that it is more compact than a module
(the songdata (not samples) takes about 20 % of it's original size) and
that we want to put the song and samples in two different files, so you
can have more than one song in your program using the same samples.
You will, of course, also receive a simple example-source in assembler
(if demand is high enough we can also fix examplelistings in STOS
GFA-Basic, C or Pascal).


Information about the UCDM-Players
----------------------------------
Here follows some technical information about the UCDM-Players supplied
with Octalyser. All CPU-time is referred to a standard STE if nothing else
is stated.

TERMODY - This is a 50 kHz Player taking approximately 55% CPU-time.
          I want to point out that this is a REAL 50 kHz Player and
          not a 25 kHz Multiplexer (like in Protracker). However, in
          order to make it that fast I have used some techniques that
          unfortunately distorts the sound a bit. This Player will
          in most cases sound better than the internal 25 kHz Anti-
          Alias-Replayroutine, but in some cases it doesn't. You
          simply have to hear for yourself and see which sounds best
          to which module.
          In addition to that it really EATS memory! A good hacker named
          Lance has found out a way for me to decrease the memory
          consumption to 10 % of the original AND speed it up, but
          unfortunately I haven't had time to implement it yet.
          It doesn't run on Falcon. It does not support CIA-timing and
          it doesn't sound so good if you run it with 60 Hz screenupdate.
          One more thing: TERMODY IS DESTRUCTIVE! It converts the samples
          to 7 bits before playing. So only use TERMODY to listen to
          modules after having saved them!

TAMMANY - This is a 25 kHz Multiplex 8 voice Player taking a maximum of
          about 95% CPU-time, but it varies a lot depending on the
          amount of voices actually playing and effects in use.
          It takes about half the amount of memory that TERMODY does.
          It distorts the sound a bit, but much less than TERMODY, making
          it almost impossible to hear (you can only hear it on some
          very special sounds and then you have to listen carefully).
          Falconcompatible and uses the blitter. Because of this, it
          will make the lower border flicker when playing in Octalyser
          with 60Hz screenupdate. Does not support CIA-timing. 

NAISHEE - Is a 4 channel 16-bit 50 kHz Falcon-only player. Since I can't
          program the DSP yet, this runs on the 68030, taking nearly half
          it's processortime. The reason that it's this slow is that I
          have used the slowest kind of replayroutines in order to increase
          the replayquality as high as possible. It doesn't distort the
          sound at all and the 16-bit output makes sure that it takes
          use of all eight bits of the samples even when playing at low
          volume. Supports CIA-timing. Takes almost no memory at all.

BANSHEE - This is an 8 voice version of NAISHEE. It's slow, but plays
          eight voices at highest possible quality.

NIKITA  - This is a slow 25 kHz multiplex, 4 voice Player taking nearly
          no memory at all. No distortion either. It should give the
          same soundquality as the internal player. The only difference
          is that this uses multiplex instead of Anti-Alias, so all of
          you that have argued about which method gives the best
          quality can now make comparisons. The reason I wrote this
          is that there absolutely is need for a normal allround-player
          for gameintros etc.  Falcon compatible.

And to all of you that wonder why I name the players like this I have
no good answer except that it's easier to talk about 'NIKITA' than
25KHZM4V.UMP and that I give them names that I like.

If anybody out there is interested in writing UCDM Players and/or Feeders,
then feel free to contact me for information.

The converters and feeders for CORESONG are NOT completed yet. They are
functional but still under development, why users might have to wait a
while for these files after registration.

If somebody out there want to write UCDM-Players for the Amiga or Macintosh
in order to create a standard (would be useful when converting games
between platforms) they are very welcome to contact me.

IMPORTANT! We have recently found some kind of bug in Naishee and Banshee!
Unfortunately I haven't been able to locate and correct it (it's really
strange!) so they might crash the computer all of a sudden when using them!
I really recommend composers to make regular back-ups when using them until
I have supplied a safe version.


Happy UCDM-using out there!


                         Best wishes

                 Tord Jansson ( Blade of New Core )
