$Id: DX-README,v 1.6 89/05/06 17:13:05 lee Exp $
Scott Snyder
$Log:	DX-README,v $
# Revision 1.6  89/05/06  17:13:05  lee
# rel. to comp.sources.misc
# 

  This posting adds support for the Yamaha DX7 and DX7s synths to the glib
patch editor. The generic glib code is not included, so you'll need a copy
of the earlier glib posting. I have only tested the code on a PC using
Turbo C V2.0; however, it shouldn't be hard to make it work in other
environments. I have also sped up glib in a couple of places, in order
to make it work tolerably fast on a PC.

  The following files are included:

	DX-README	this file
	dx7.mnu		DX7 synth module
	dx7s.mnu	DX7s synth module (requires dx7.mnu)
	pc-tcc.mak	makefile for Turbo C
	n001.dx7	sample DX7 bank (from Glenn Scott's DX7 patch archive)
	rom1.d7s	sample DX7s bank (downloaded from the Yamaha ROM
			  cartridge)
	patches		patches to the existing glib code

[Notes (gl): file patches is not here -- the changes are incorporated;
 For the TURBO-C and the DX7 version, one must uncomment #pragma
 directives in two places in file dx7.mnu.]

Compiling the editor:

  Mess-Dos/Turbo C: feed 'patches' into patch, rename 'pc-tcc.mak' to
    'makefile', and type 'make'. This will produce a version of glib which
    recognizes the DX7 and DX7s. To enable support for other synths, uncomment
    the appropriate lines in the makefile.

  Other systems: feed 'patches' into patch. Then adjust your makefile
    appropriately: 'dx7.mnu' and 'dx7s.mnu' should be passed through
    menutoc and linked in with glib. glib.c and list.c should be compiled
    with the preprossesor symbols 'DX7' and 'DX7S' defined. To enable the
    faster code in glib.c, define the symbol 'SSS'.

Using the editors:

    The DX7 editor works just like other glib-based editors, and shouldn't
  present any problems. However, I was unable to fit all the DX7s parameters
  on one screen, so I used a trick: some of the parameters are 'multiplexed'.
  On the DX7s screen, move the cursor to the 'Modulation Wheel' legend, then
  'increment' and 'decrement' this field: the fields below it will cycle
  through the 'Modulation Wheel', 'Aftertouch', 'Breath Control', 'Foot
  Control', and 'MIDI Control' parameters.

    Since the DX7 banks are exactly 4096 bytes long, I chose not to add
  a DataID byte to the front, to avoid wasting disk space. glib will
  identify a DX7 bank by examining the file length. DX7 banks can be read
  in DX7s mode and vice versa; the additional DX7s data will be discarded
  or replaced with appropriate defaults.

Implementation notes:

    In order to draw the pictures for the DX7 algorithms, I modified the
  showstr() function to use the PC line-drawing characters. If you are
  using another system which has such special characters, you should tell
  glib about them by adding the appropriate definitions to your machdep.h
  file (see the definitions at the end of pc-mach.h for an example of
  how this should be done). If this is not done, the graphics characaters
  will be approximated (badly) by standard ASCII characters.

    In addition to the basic cursor motion escapes (~u, ~d, ~r, ~l), showstr()
  now recognizes the following additional escapes:

	~| : a vertical line
	~- : a horizontal line
	~+ : a vertical line crossing a horizontal line
	~T : a 'T'
	~^ : an upside-down 'T'
	~< : a 'T' on its right side
	~> : a 'T' on its left side
	~{ : the upper-left corner of a box
	~} : the upper-right corner of a box
	~[ : the lower-left corner of a box
	~] : the lower-right corner of a box
	~r : 'carriage return' - the cursor returns to the leftmost column
               it has been in in this call to showstr()

    In addition, a repeat count can be specified with an escape in the form
  '~nc', where n is a sequence of digits and c is a character.

Caveats:

    Again, this code has only been tested on a PC-clone using TC V2.0.
  In addition, I don't have a Roland MPU; I tested the MIDI I/O using
  a BYTE MIDI board. The high-level interface is the same though, so it
  should work with the MPU. (By the way, if anyone is interested in BYTE
  board support for glib or the CMT, drop me a line.)

        Scott Snyder - ssnyder@citjulie.bitnet, ssnyder@juliet.caltech.edu
			(addresses valid until mid-June)
