From: whitcomb@aurs01.uucp (Jonathan Whitcomb) Subject: Review of Dr.T's X-or (LONG) Date: 25 Feb 91 22:09:47 GMT 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.