[comp.music] Review of Dr.T's X-or

whitcomb@aurs01.uucp (Jonathan Whitcomb) (02/26/91)

Thank you to the folks who wrote me in appreciation of my review
of Dr.T's sequencers.  As promised, here are my impressions of
Dr.T's X-or Universal Patch Editor/Librarian.  First, some 
background for the un-initiated.

PATCH EDITORS

The first synthesizers were made up of discrete components, such as
oscillators, filters and envelope generators. In order to create 
a sound, you had to wire the various modules together.  Every time 
you wanted to create a new sound, you had to plug in new patch cords
to connect different modules.  The term "patch" is now used as
a generic descriptor for a programmed synthesizer sound, sample,
effects setting, or any number of things.  (Lots of synthesizer
jargon has similarly archaic roots.  For instance, pitch is often
described in terms of lengths, taken from the pipe lengths used
in pipe organs.)  

A modern digital synthesizer uses logical circuits instead of
physical patches.  These logical circuits are often analogous
to the old patches.  One paradox in the evolution of the 
synthesizer is that as they became more and more complex, fewer
and fewer physical controls were provided.  Instead of knobs and
sliders, parameters were accessed by computer like menu structures 
on a tiny backlit LCD display.  While this certainly decreased 
the size and complexity (and cost) of synthesizers, it also made 
accessing parameters and controls more cumbersome.

Some operations are managable with this interface, such as 
calling up pre-programmed patches on a synth, but when it comes to 
trying to manipulate a waveform or envelope, forget it.  Because
of this, many musicians have given up trying to change the internal
patches themselves, and just live with the factory programmed sounds.
This is really a shame, because half the fun of using a synthesizer
is being able to create sounds that could not be created with 
traditional instruments.

"Patch Editor" programs provide an alternative user interface.
The patch editor runs on your computer and communicates with your 
synthesizer via the MIDI link.  Instead of a little LED and some knobs and
buttons, you have a full monitor screen that can be controlled with the
keyboard or mouse.  You can manipulate much more data at once on your
computer than you can on your synth or rack mount.  Keyboard ranges
can be selected graphically, envelopes can be drawn instead of numerically
described, and multi-function pots can be seperated into multiple 
sliders on the screen.

Patch Editors let you get into the guts of synthesis.  You can
start playing with waveforms and oscillators to create new
sounds, even if you haven't taken courses in electronics and
Fourier Analysis and think that an oscillator is a large 
flightless bird that hides its head in the sand.  You can learn 
alot about the physics of music just by playing with a few 
parameters.

When you first start out playing with a patch editor, the 
best thing to do is just start changing parameters and see
what it does to the sound.  Sometimes a small change will
not seemingly make an audible difference, or sometimes it
will convert a flute into a jack hammer.  Some of my most
interesting patches came about by accident.

Patch editors have several limiting factors.  First, a patch 
editor can't control a function that does not have a MIDI command
assigned to it.  Second, the quality of the editor depends 
upon the programmer's interpretation of how the synth's
functions should most usefully be displayed.  Third, you
have to wait for someone to write an editor for your particular
piece of gear, and if your synth never becomes popular enough to
support a patch editor, you're out of luck.  At best there is 
a several month lapse between the release of a new synth and the
appearence of it's patch editor.  Finally, you have to go out and
buy a new patch editor for each piece of gear you bought.  If 
you have several editors by different software companies, they 
are probably not compatible, and you have to learn new interfaces
for each.

PATCH LIBRARIANS

Once you have created your newest patch emulating a lizard
belching (played backwards), you will probably want to save
it for future generations to cherish.  Unfortunately, your
synth only has enough memory for 50 patches, and in order
to store the lizard, you'll have to wipe out the chorus of 
moaning Swedish milk maids.  Some synths let you store patches
on external media, such as cartidges, cassettes or disks.  These
come in all kinds of non-compatible shapes and sizes, and usually
are very pricey, and sooner or later you'll fill them up too, so
we're back to the Lizards vs. Milk Maids dilemma.

A patch librarian lets you store patches to disks on your computer.
This is nice, because computer disks are cheap, reliable, hold lots
of data, and will probably be around long after the synth manufacturer
has stopped supporting the media your synth uses.  The number of patches
that your synth can hold in active memory defines the "bank" size 
for your synth.  Librarians can usually swap individual patches,
or entire banks of patches with your synth.  Then you can create
custom banks on your computer, and load them to your synth as 
needed.  For instance, if you are playing out with your metal
band on Friday, just load up your "BONE CRUSHER DEATH SCREAM" bank,
and you're ready to go.  For your Saturday morning Polka gig, you
load your "HONKS AND OOMPAS" bank, and for Sunday's New Age wedding, 
load up "INABTRUSIVE MELLOW EARTH TONES".  Sleep in on Monday.

"UNIVERSAL" PATCH EDITOR/LIBRARIANS

Recently, music software companies have started to release
"universal" patch editors.  These programs are designed to be
general enough to control any piece of MIDI gear.  Ideally,
this sounds great.  You just have to buy one editor and then you
are done with it.  You only have to learn one interface.  You
can now talk to all of your weird obscure old synths that nobody
ever wrote patch editors for.  You are ready to conquer the world.

Hang on there, cowboy!  There are problems in paradise.  You see,
even though the warring factions of synth manufacturers managed
to agree on an external language that allowed their synths to
communicate in general terms, they also provided for special
codes that allowed MIDI control of company proprietary features.
These codes are called "System Exclusive", and every manufacturer
has their own way of dealing with them.  The basic way they work is
that a special system exclusive byte is transmitted alerting all
synths that a SysEx message is about to follow.  The next byte
is a manufacturer's code, and all synths by other manufacuter's
are supposed to ignore all of the following data until the end
of the SysEx transmission.  Here's the problem...the contents
of the SysEx message have not been standardized, so a universal
patch editor has to be able to recognize not only every manufacturer's
code, but it must know exactly how all the features of every
existing and future synth work (single manufacturers are not even 
consistant from one synth to the next).  Well, this is impossible, of 
course.  

Another approach is to create a patch editor that is so generic that
almost all synths will be able to use it after you enter in some
specific System Exclusive codes into a menu.  The problem with this is
that a generic patch editor will most likely not support many of
the special features unique to your synth.  In attempting to create
an editor that is useful for all synths, you end up with an editor
that isn't useful for any of them.

Bob Melvin came up with a nifty solution to most of these problems.

X-OR

Bob Melvin designed most of Dr.T's machine specific patch editors
using the name "The Caged Artist".  After poring over the guts
of scads of synths, he was able to see what most of these
machines had in common, and where they differed.  He then went
about designing a skeleton patch editor program based on the 
common features of synthesizers.  This program is called "X-or",
because it deals with system eXclusive data.  The details of each 
specific synth are kept in a seperate file, called the machine's 
"Profile".  The idea is that once you buy the universal editor, 
all you have to do is get a profile for each of your individual 
machines.  You do not have to pay for the profiles, but you do
have to wait for them to be written...or, you can write them
yourself.

X-OR THE PATCH EDITOR

How can a universal editor control a synth as well as a machine
specific editor?  The secret is in the profile.  Profiles can
be as simple or as complex as your synth.  X-or graphically 
displays controllers in several forms.  Sliders are used the
same way pots are used on a physical device, and a numeric
display constantly gives the current value.  Text boxes come
in several flavors, and can be used to select options.  One
of the most powerful editing features is the Envelope Box,
which lets you graphically control several complex parameters
at once.  It is not easy to describe these features, but it
is easy to use them.  The profile writer has all of these
tools availible to him.  

X-or has some fun "extras" that are great for patch editing.
Suppose you have two patches, called GROWL and WHINE, and you
want to use some parameters from each to create a GROWLY WHINE
patch.  X-or lets you transplant sections of patches and merge
them in any way you wish.  If this sounds too tedious, a
randomizer option will do it for you, and create an entire
bank of patches using various combinations of the two parent
patches. Then you can listen to them and keep any or all
that you like.  Kind of like genetic engineering.

Complex synths may be operated in several modes (Single, 
Layered, Multi, etc.).  X-or deals with complex machines by 
breaking them down into multiple "instruments".  A typical 
multi-timberal synth may have several instruments, wheras a 
simple sample playback unit may only have one.  X-or uses
this "divide and conquer" method to break the information
into reasonable chunks.

X-OR THE LIBRARIAN

You can store patches individually, in banks, or in a library.
The library is like a giant bank with no size limit.  When you
store the patch, you can write a brief description of it, and
assign it key words.  Key word describe a sound and divide it
into several categories, like PERCUSSIVE, ELECTRONIC, HORNS,
STRINGS and so on.  Then X-or has some database like searching
functions that let you find all the patches with one or more
key words.

After you have made a library and some banks, it is easy to
mix and match patches, just by dragging a patch between
windows.  You can have a single patch in as many banks
as you want, but you can't have redundant patches in the
library. 

X-OR THE SYSTEM MANAGER

X-or does more than just replace your instrument specific editors,
it helps you manage all of your sound and effects modules in such
a way that it lets you treat them all as a single instrument.  Say
that on your future hit single "I'm a Hairy Chested Guy With Huge
Private Parts", you are using two sounds on your multitimbral synth
(SEXY STRINGS and BEEFY BONES), your sampler (with CRIES OF AMAZEMENT), 
and a digital delay (...ELAY...ELAY...ELAY...).  Then you want to
load up your follow-up single, "Well Size Isn't Everything" using
SORROWFUL STRINGS and MOURNFUL MARIMBA on the synth, HYSTERICAL
LAUGHTER on the sampler, and FAST SLAPBACK on the delay.  Doing
this by hand can be tedious, and X-or simplifies the process
considerably, by taking a snapshot of the configurations of all
of your machines, and saving them in a file called a "performance".
The next time you want to use these performance settings, select
"Load Performance" from the menu, and X-or will sequentially restore 
the patch settings of each of your machines.

There is a catch here.  Since many System Exclusive data transfers 
require handshaking ("I'm okey, you okey?", "Sorry, I just washed my 
hair...", "I'll wait...Ready yet?", "Yep.", "Okey, here it comes!"),   
X-or must have  a two way communications link with all of your 
modules...even your slaves.  In order for X-or to talk to all of your
machines, you either have to constantly re-patch your system, or
buy a programmable MIDI patch bay (frankly, once you have more
than 2 MIDI devices, you'll probably want a patch bay even if you
don't get a univeral editor).  When X-or loads a performance, it
first instructs your patch bay to set up a two way MIDI link between
your computer and your synth, and then loads the previously saved
patch.  It does this for each machine in sequence, until all are
playing the patch that was used when you saved the performance.
Now you don't have to spend ten minutes fiddling with knobs
and buttons every time you change song settings.

X-OR AND KCS

If you run X-or as a module in Dr.T's Multi Program Environment (MPE),
you can access KCS sequences from X-or. In X-or the right mouse button
can be configured to play a note or glissendo on the currently selected 
synth, or you may play the current cue loop in KCS or Tiger Cub.  This
is great if you are playing with a patch and want to listen to it in
the context of a song.

The new version of Dr.T's song editor will let you load an X-or performance
without even leaving the song editor.  (Actually, this feature is
implemented in the song editor, but we'll have to wait for the next
version of X-or before this is working.) An MPE module "X-Load" can
also load a performance from within KCS.

The extended MIDI channels are not currently supported by X-or, but
will be in the next release.

Oh, you'll need more than one meg of memory to run X-or and KCS at the
same time (I can fit KCS, X-or, TIGER and the song editor in 2 megs
on my ST).  MIDI software tends to eat up lots of memory.  You can
configure the buffer sizes of X-or so it only uses as much as you 
need for your setup.

X-OR THE MOVIE

It takes a bit of work to configure X-or to work with your system.  You
need to set up a seperate folder for each instrument, and you will have
to set up a patch for your MIDI switcher for each instrument to communicate
with X-or.  Then you may have to tweak some timing parameters to
get everything working.  However, once you've gotten it going, you'll 
never believe you got on without it.

I think of X-or as a work in progress.  It is so big and so ambitious, that
it is a miracle it works at all, let alone as well as it does.  It does
need some refinement, however.  Occasionally my MIDI switcher chokes on
all of the Sysex data being thrown around, and behaviour isn't always
predictable.  Bob Melvin is accessable through Dr.T's bbs, and is
always helpful.  He actually borrowed my old Korg 707 and spent two
solid days writing the profile for me last summer (before I learned to
do it myself).

Note that synths aren't the only machines that can benefit from
X-or.  I program my MIDI patch bay from X-or, and you can also
set up patches for effects boxes, guitar amps, mixers, and anything
else that speaks MIDI.

X-OR THE BARBARIAN (E-OR)

If a profile doesn't exist for your synth, you are not entirely
out of luck.  You may write your own profile using a program
called "E-or", which comes with X-or (or at least it did with
the Atari ST version).  Profile writing should only be attempted
by people with programming experience and a knowledge of 
MIDI, because the documentation is sketchy, and the program
has it's own assembly-like language.  (It also helps to be
able to think in binary and hex.)  And that's not the
bad part!  The bad part is that synth designers are the
most warped group of hackers on the planet, and some of the
things they do to get their synths to work are just plain
weird.  You will need a complete MIDI spec on your synth 
before you can embark on your journey (write the manufacturer).
Having said all this, I will say that I have written
two profiles and have modified another, and it is a most
satisfying hack.  

E-or is divided into several screens, and most of the dirty work
of writing a patch editor is done for you.  For graphics, all you
have to do is choose what kind of interface box you want (slider,
text box, envelope box, etc.), assign it to a function, and
assign the screen coordinates.  Modules and functions are listed
in tables, so this is done simply by matching table index
numbers (it's easier than it sounds).  Most of the I/O routines you
will need have already been written, and all you have to do
is map them to graphic modules.  The only times you have to
get into the E-or programming language is when you have to
work around some ugly kludge on the part of the manufacturer,
or if you want to do something "creative".  Okey, you also
have to program the basic transmit and receive routines, but
they are pretty trivial.  Bob makes it easy by letting you
specify one of several data packing schemes used by 
manufacturers by making the details invisible to the programmer.
My main complaint with E-or is currently you can't comment
your code.  The editor is a little cumbersome, but never
really gets in your way.  The programming language is
broad enough to tackle most tasks, and has many MIDI specific
opcodes that make the low level stuff invisible to the
programmer (i.e. you won't have to worry about device drivers
and interrupt  handlers).  It can be easily understood
by anyone who has worked with an assembly language.  

Even if you don't want to write your own profile, you may
want to go into E-or to customize an existing one.  This is
much easier than writing one from scratch.  In fact, if all
you want to do is re-arrange the way the controls appear on
the screen, or want to re-label some parameters, you don't
have to get into the "programming" part of E-or at all.

X-OR THE END

If you only have one synth, you probably won't need X-or if an
instrument specific editor is availible.  Even so, you may
find that the hooks to KCS and Tiger Cub make the extra expense
worthwhile.  If you have several synths and hate having to re-wire
and re-configure your system all the time you change scenes, you'll
find if very useful.  If you have an obscure or obsolete synth that
nobody wrote an editor for, you'll find it will not only make your
life easier, it will breathe new life into your old synth.  If you
only work with pre-programmed patches and samples, the library
functions alone will make this a good investment, and if you like
to get into the guts of your machines and tweak parameters, it's the
only way to go.

Although X-or is somewhat difficult to set up, you only have to
do it once.  It is very easy to use once it has been configured.  
Adding on new synths is not difficult once you've gotten the initial 
setup working.

Currently there are over 100 profiles availible (they come with
the program on a separate disk), and more and more people
are writing them and uploading them to bulletin boards (Dr.T's
uses the Berklee BBS in Boston for tech support, and new
profiles show up there regularly).  Now that X-or has been ported
to the PC, and the Mac version is due out in March, there should
be lots more profiles coming out (they are transportable between
machines).  I'm not sure if there is an Amiga version of X-or, but
if not, there will be in a matter of months.  Poor Bob has been
very busy!

The fact that X-or will be running on four platforms (ST, Mac,
PC and Amiga) bodes well for it's survival prospects.  Some 
manufacturers are paying Dr.T's to develop profiles for new synths 
as they are released.  Since profiles are transportable, it is 
conceivable that this format will out live the machines it is 
currently running on.

X-OR THE ADVERTISEMENT

Oh, and if anyone needs a profile written, I'll be glad to do it
if you'll buy me the synth first.  :^)

-Jonathan the verbose.
**********************************************************************
Jonathan Whitcomb                    UUCP: <...!mcnc!aurgate!whitcomb>
(919) 850-6231                       I'm not a software engineer,
Raleigh, NC                          but I play one on TV.

glennd@athena.arc.nasa.gov (Glenn Deardorff) (02/28/91)

I wasn't successful in sending a personal reply, so I'm posting here:

Jonathan -

I very much enjoyed your reviews of the Dr. T's products.  I don't have your
sequencer reviews on hand, but I wanted to get something clarified.  Can
you essentailly use TIGER as a graphic interface for KCS, within MPE? 
The idea of being able to arbitrarily trigger multiple sequences sounds
very appealing to me, but I've always been put off by the lack of
graphics "sex appeal" of KCS.  I suppose that TIGER could do the more
common functions of a sequencer, but KCS would be used for the more
esoteric stuff (event-list editing, maybe)?  

Anyway, I have X-Or and enjoy it very much.  I may be interested at some
point in purchasing your extra copy of KCS Level II, if you still have it.

								- Glenn