
2000-aug-16

-------------------------------
Christian's Virtual Synthesizer
-------------------------------

Version 1.3

(c) 2000 by Christian Schler 
Email: cschueler@gmx.de
Homepage: europa.spaceports.com/~schueler/synth


Quick Guide to Version 1.3
--------------------------

Go to the DOS prompt and type

   synth music/space01.txt

and lean back!
(heheh)

Here I present version 1.3 of my half-a-year 
fast synthesizer-project. Version 1.3 means the version
is still 1 but revision 3. So I have touched the sources
3 times since the original release in april? No way! I am
playing with them each night as if they were my hottest
girlfriend ... ok, ok now this time I needed some reverb
to do some spacey music for my other project, "Space Glider",
so here is the result, among with some other spin-off.


CHANGES to 1.3
--------------

- added a parametrisable reverbenator section (see reverb.txt)

- added command line options to add "out-of-the-box" reverb 
  presets to old music files

- more commandline options for fine tuning tempo and for
  setting an overall gain (finally!)

- command line parameters can be specified in the music file now

- hunted down a nasty bug that if you were playing tracks with
  different signatures they would wander out of sync due to
  integer roundoff!

- fixed: program did hang if input file not found

- better behaviour: if you specify -q and give a sample rate with
  the -f option, the program doesn't look for a soundcard anymore
  (so you can run synth even if it doesn't recognize the card)

- more music


Usage of current version
------------------------

synth [options] inputfile [outputfile]

"inputfile" is a text file containing the commands to generate
the music. See the files in the music directory as example. 

"outputfile" is optional and will be the record of the synth
output in native signed 16 bit binary format.

Options are:

   -q           Enter quiet mode. Here no realtime sound out-
                put is produced, so if you don't specify an
                output file, it's nothing more than a silent
                CPU-cycle burner. :-)
                Note that since the soundcard is required for
                autodetection of the sample rate, you must 
                use the -f option (see below) if you want the
                program to bypass all soundcard specific code
                (should run on *all* platforms then)

   -fx          Set the destination sample rate to x (must
                follow the -f without blank). If you don't 
                specify this, the sample rate will be autodetected
                (22050 on anything else than DOS, 22727 for
                DOS SB16 and 22729 for DOS ESS Audiodrive)

   -gx		Set overall gain in dB from -20 to 20.

   -Tx		Set tempo strech where 10000 is neutral. 
                Higher number means faster tempo.

   -tx          Set the global transpose in x semitones (must
                follow the -t without blank). Range from -16
                to 16.

   -ex		Set the enhancer to off (x=0), +3 dB (x=1) or 
                +6 dB (x=2). The enhancer does to the sound,
                what "sharpen" does to pictures.

   -rpx         Apply a reverb preset and igrnore all reverb
		specification in the input file. The presets are

                   1: my *very* small dorm room 
                   2: a misty jazz club
                   3: an open-air stage
                   4: an indoor-sports hall
                   5: the Freiburg Church
                   6: a dirty oil canister 

                   (just don't take this too serious :)

   -rmx         Set the mix level of the reverb from 0 (completely 
                dry) to 8 (completely wet).


Read "synth.txt" for an in-depth explanation about how the 
synthesizer works and the commands it can understand, "drums.txt"
about the drum models, and "reverb.txt" for documentation about 
the reverbenator.


LEGAL & CO
----------

I'll put this program under the GNU public license (GPL).
You can view the GNU public license in the file "GPL.txt"

The GPL is mainly about that you can redistribute and modify this
piece of software freely as long as you do not privatize it. 
(ie. steal from the communitiy by making it, or parts of it, non-free)

If you appreciate my program, you may send me a postcard from where 
you're living, because I collect them :-)

Send to:
(the 8 bit characters are in ISO Latin 1 encoding)

   Christian Schler
   Emil-Andresen-Strae 34 c
   22529 Hamburg
   Germany


References
----------

 * For the theory behind the waveform generator see Stilson, 
   Smith: "Alias Free Digital Synthesis of Classic Analog Waveforms" 
   at 

      http://www-ccrma.stanford.edu/overview/publications.html

 * This program uses the Allegro Game Programming Library by 
   Shawn Hargreaves at 

      http://www.talula.demon.co.uk/allegro/

 * Music:
   Most of the example music is covered from C64 game music.
   What's the C64? It was the most popular home-computer of the
   80's. An archive of original C64 music can be found here

      http://www.c64.org

   Just search for "Rob Hubbard" (a famous composer) and you will
   find a listing of SID-files. They're really tiny so they're not
   even zipped. To play them you can either download a WinAmp-
   plugin for playing SID files or a stand alone SID-player like 
   "SidPlay for Windows":

      http://www.student.nada.kth.se/~d93-alo/c64/spw/index.html

