Eventide DSP4000B+, DSP7500, DSP7000 User Manual

Programming Manual for
Orville and the DSP7000 family
Brand Effects
Processors.
( covering Orville™, DSP7000/7500™ and DSP4000B+™ )
Part No: 141035 Manual Release 1.2.1 17 May, 2001 ©1999 Eventide Inc., One Alsan Way, Little Ferry, NJ, 07643 USA
Harmonizer is a registered trademark of Eventide Inc. for its audio special effects devices incorporating pitch shift.
Orville, DSP7000, DSP7500, DSP4000B+and Ultrashifter are trademarks of Eventide Inc.
This page intentionally left blank
The Harmonizer
Programmer’s Manual
Table of Contents
GENERAL PRINCIPLES____________________________________________________________________________4
VERVIEW ..................................................................................................................................................................................................................4
O
Different Kinds of Si gnals 6
H
OW A PROGRAM INTERFACES WITH THE PARAMETER AREA...................................................................................................................7
Simple Interface 7 Custom Interface 8
M
ODULES................................................................................................................................................................................................................. 10
The IN and OUT “Modules” 10 The Characteristics of Modules 11
W
RAP UP ..................................................................................................................................................................................................................15
VSIGFILE ________________________________________________________________________________________ 16
System Requirements and Background Knowledge Required 16
C
OMMUNICATIONS.................................................................................................................................................................................................16
Establishing a MIDI Connection 16 Establishing a Serial Connection 17

B
ASIC FUNCTIONS .................................................................................................................................................................................................. 18
Adding Modules 18 Connecting Modules 19 Deleting Modules 19
D
ISPLAY FUNCTIONS ............................................................................................................................................................................................. 20
Selecting Modules 20 Moving Modules 20 Re-Positioning Modu les 20 Aligning Modules 21 Zooming 21 View 21
E
DITING...................................................................................................................................................................................................................22
S
ENDING PROGRAMS TO THE HARMONIZER................................................................................................................................................... 24
TUTORIAL 1 -A SIMPLE PROGRAM....................................................................................................................................................................... 24
DVANCED FEATURES ..........................................................................................................................................................................................27
A
The Specifier Display 27 Repeating Fields 31 Editing “Special” Module s 33 Updating the Parameters from the Harmonizer 33 Getting Programs from the Harmonizer 34 Creating the User Interface 35
Viewing Menupages and Menupage Modules 35 Interface Modules 36 Parameter Adjusters 37
The Harmonizer Programmer’s Manual Page 1 of 97 Release 1.2.1
1999 Eventide, Inc.
The Harmonizer
Simple “Parameter Adjuster s” 40 Menupages and Parameter Placement 45
T
UTORIAL 2 -PRETTY IN DEPTH..........................................................................................................................................................................48
NTER-DSP COMMUNICATION FOR ORVILLE...................................................................................................................................................56
I S
UPERMODULES.......................................................................................................................................................................................................57
T
UTORIAL 3 -USING SUPERMODULES .................................................................................................................................................................57
F
ILE FUNCTIONS .....................................................................................................................................................................................................62
“ *.sig” Files versus “ *.sif ” F iles 63
PATCH EDITOR __________________________________________________________________________________64
G
ET COMFORTABLE BY DOING...........................................................................................................................................................................64
The IN and OUT “Modules” 67
T
HE PATCH EDITOR AREA DISPLAY...................................................................................................................................................................68
Front Panel Controls 69 The Patch Editor Area SOFT KEY Functions 70
T
HE <MODIFY> SOFT KEY...............................................................................................................................................................................76
Modifying a delay module 76 Modifying Complex Modules 79
I
NTER-DSP COMMUNICATION FOR ORVILLE ...................................................................................................................................................80
Programmer’s Manual

C
REATING THE USER INTERFACE........................................................................................................................................................................81
Viewing Menupages and Menupage Modules 81 Interface Modules 83 Simple “Parameter Adjusters” 87 Menupages and Parameter Placement 91
The Harmonizer
Programmer’s Manual Page 2 of 97 Release 1.2.1
1999 Eventide, Inc.
The Harmonizer
Programmer’s Manual

This manual covers Orville
TM
DSP4000B+
. In the following text these will, for convenience, be referred to as 'Harmonizers'. Much of its contents also
TM
as well as the DSP7000TM family of Harmonizer Brand Effects Processors, as well as the
apply to the older 4000 family, but the reader is not advised to view this publication as an exhaustive reference for these models. This manual does not cover the Eclipse
TM
or the H3000 family of Harmonizer Brand Effects Processors.
One of the reasons Eventide’s effects units are so versatile is that their effects programs are “modular." A single program is composed of many smaller “modules." Modules might best be thought of as good old fashioned “guitar pedals” (except, of course, that unlike guitar pedals, the modules in the Harmonizer are 24 bit, crystal clear, high-end audio
processors!)
. Imagine you have a gym floor covered with guitar pedals and a coat rack draped with patch cords. You run around connecting pedals, a delay pedal to a pitchshifter pedal, the output of that pitchshifter pedal to a compressor, the output of that compressor into a filter, etc. The end result of all that patching is, to the Harmonizer, a program.
Although that picture is oversimplified, it does capture the essence of what’s going on inside VSigfile and the Patch Editor area. You’re just connecting modules (guitar pedals) to each other to produce a desired overall program.
Without going into details, the example cited above, “a delay pedal into a pitchshifter into a compressor into a filter” is shown to the right as seen in the Patch Editor. The little boxes represent the modules and the lines between them represent “patch cords." (Digital Signal Processor) running the program, delay module,
psh represents the pitchshifter module, cpr
represents the compressor module,
IN represents the inputs to the DSP
dly represents the
flt represents the filter module and OUT represents the outputs from the
DSP running the program.
Of course, if things were going to remain this simple there would be no need for this separate Programmer’s Manual. But conceptually, things are this simple! We’ll muddy things up by implementing “control” features that will make your programs easier to use in the
PARAMETER area. We’ll further muddy them by making
large programs that utilize many modules connected in ways that defy the “serial/parallel” paradigm. So the details may get a little complex, but the main idea should remain crystal clear: we’re just connecting a bunch of 24 bit, full bandwidth guitar pedals!
The first chapter in this manual, General Principles, will cover the underlying concepts involved in constructing programs either in VSigfile or the Patch Editor area. It is essential reading. The second chapter will discuss the mechanics of creating programs in VSigfile, and the third chapter will discuss the mechanics of creating programs in the Patch Editor area. It is suggested that you only read the chapter pertaining to the construction “environment” you will in fact use. The Appendix, Modules Manual, will be indispensable in all of your programming adventures. It lists the Harmonizer’s available modules along with their specifications.
The Harmonizer Programmer’s Manual Page 3 of 97 Release 1.2.1
1999 Eventide, Inc.
The Harmonizer

Programmer’s Manual
GENERAL PRINCIPLES

OVERVIEW

This section will describe in general terms just what goes into constructing a program. Return to this section if you ever feel like you’re being mired down in details later on.
First, the primary “stuff” of program construction is the “module." Modules are small, functional “chunks." Some modules may have names that will be familiar to you, such as delay, reverb, filter,
pitchshifter, and eq. As you would expect, a delay module delays the signal at its input. A reverb module adds reverb to the signal at its input. A filter module filters the signal at its input.
And so on.
Before going any further, let’s say you wanted to construct a program that delayed and filtered a signal. You would begin either in VSigfile or the Patch Editor area with a “blank slate” that contained nothing but representations of the inputs and outputs of the DSP that would run the program. You would then add a delay module and a filter module. Lastly, you would connect one of the DSP’s inputs to the delay module, the delay module’s one of the DSP’s outputs. The result, as seen in VSigfile, is shown above.
Most modules, delay and filter included, have “control inputs” that allow you to change parameters associated with a given module. For example, a delay module has a control input that allows you to change the delay time for the module (will it delay the signal 20ms or 1000ms?). A filter module has three control inputs: one for the cutoff frequency, one for the resonance at the cutoff, and one to select the type of filtering done by the module (lowpass, highpass, notch, or band).
We normally construct programs so that parameters such as the ones described above can be altered in the
PARAMETER area of the Harmonizer (like the factory presets you’ve probably already played with). Some things called
userobject signals” are used in the construction of a program to create and organize menu pages of parameters in the
The three paragraphs above capture the three cornerstones of program construction in the Harmonizer.
1. We must connect appropriate modules to achieve a desired, overall audio effect.
2. We must control the parameters of the modules in a program so that the desired audio effect is
achieved.
3. We must make some of the parameters available in the PARAMETER area so that the user can “tweak” the program to fit a particular situation.
PARAMETER area.
output to the filter module, and the filter module’s output to
The Harmonizer
1999 Eventide, Inc.
Programmer’s Manual Page 4 of 97 Release 1.2.1
The Harmonizer
Programmer’s Manual
Much complication will now be heaped upon the three cornerstones, but all of the complication is introduced in order to achieve the goals set out in the three cornerstones! Don’t lose sight of the three cornerstones, as they motivate everything that follows! Get it - cornerstones !
To gain a greater appreciation for what we are doing when we construct an the Harmonizer program, consider the following analogy:

Computer programs basically compute things. The computer user however, is not directly involved in actual computation (tha nk goodness). The user does direct the computer regarding what computations it should carry out and receives the results of those computations through a “user interface." The user interface on a computer is typically a monitor, a keyboard, and a mouse. The lucky individual who designs a computer program on the other hand, needs to cons ider both the actual computations that the computer performs and the way those computations will be controlled and displayed at the user interface.
By analogy, when you construct a program for the Harmonizer you must consider the actual audio manipulations carried out by the program controlled and displayed at the user interface
PARAMETER area in conjunction with the front panel keys and display. Don’t worry, constructing programs for the Harmonizer is decidedly easier than even the easiest computer programming!
(cornerstones one and two) and the way those manipulations will be
(cornerstones two and th ree). In this context, the user interface is the
Unfortunately, we must discuss these two charges “bass ackwards." with user interface coming first and actual audio manipulations coming second. The latter can’t be properly understood without the former.
you’ve ever learned a computer language, the first thing they teach you is how to print “Hello” on the monitor!)
But first we’ll take a brief detour and look at the different types of signals that interconnect modules in the Harmonizer. After that, we’ll talk about the user interface.
(If
The Harmonizer Programmer’s Manual Page 5 of 97 Release 1.2.1
1999 Eventide, Inc.
The Harmonizer

Different Kinds of Signals

To achieve the goals set out by the three cornerstones, we must employ four signal types. Signals connect modules together. The four signal types are:
Audio Signals Used to pass full bandwidth audio between modules in accordance with cornerstone
one. Audio signals are represented numerically by a value between -1 and +1.
Control Signals Typically used to pass parameter values between modules in accordance with
cornerstone two. Control signals are low speed and are updated at a variable rate, depending on how busy the Harmonizer is. Control signals are represented numerically by a value between -32768.0 and +32767.999.
Mod Signals Used to pass “modulation signals” between modules. A “modulation signal” is a 1/4
bandwidth audio signal. Mod and audio signals may be interconnected, but not without a loss of signal quality.
Although mod signals look like audio signals, they actually work to achieve cornerstone two (controlling the parameters of a module). In some cases, control signals are too slow to alter a parameter without “clicking” or “stuttering." For instance, if you wanted to alter a delay time quickly to produce a flange effect, a control signal might not be equal to the job. Thus certain modules (moddelay for instance) come equipped with a mod input. Other modules (such as the low frequency oscillator (LFO)) come equipped with a mod output. By interconnecting the two, fast, smooth parameter adjustment can be executed that would defy control signals.
Userobject Signals Used to pass
cornerstone three.
There exist module inputs and outputs for each of the four signal types. They are named (logically enough):
audio inputs/outputs
control inputs/outputs
mod inputs/outputs
userobject inputs/outputs
Only inputs and outputs of a similar type may be interconnected module will only have those types of inputs/outputs that are pertinent to its function.
PARAMETER area menu page information in accordance with
Programmer’s Manual
(except for audio and mod inputs/outputs). A given

The Harmonizer
1999 Eventide, Inc.
Programmer’s Manual Page 6 of 97 Release 1.2.1
The Harmonizer
Programmer’s Manual

HOW A PROGRAM INTERFACES WITH THE PARAMETER AREA

Simple Interface

Because you really shouldn’t be reading this manual if you haven’t already read the User Guide, we’ll assume you’ve seen menu

pages in the
PARAMETER area.
A menu page, with an associated
SOFT KEY, is created by connecting a module’s userobject output to a
userobject input on something called the “head” module. Every program has one (and only one) head
module. The actual parameters that will appear on a menu page created this way depend on the module being connected. They will usually be the values of all unconnected control inputs..
For example, consider the simple delay module connected to a filter module we started this chapter out with for these modules we’ve connected their userobject outputs to the userobject inputs on the head module
the lower right corner. The observant user will spot that t he head “module” doesn’t really look like the other modules)
(again, as shown in VSigfile). Now that you’ve learned a little more, we’ve “unhidden” the control inputs
(the unconnect ed ones on the left) and the userobject outputs (the ones on the lower right). As you can see,
(the disembodied “1” and “2” in
.
If we run this program and go to the
PARAMETER area, we see
the screen to the right. A menu page exists for each module that contains parameters pertinent to its functioning.
Note that the order of the connections to the head module’s userobject inputs dictates the order of the SOFT
.
KEYS
Constructing programs this way is fast and easy. Just concentrate on the audio connections and then connect every modules’ userobject output to the head module. However, the user interface isn’t very “slick” and may be cumbersome to use. That’s where “custom” interface construction comes in. . .
The Harmonizer Programmer’s Manual Page 7 of 97 Release 1.2.1
1999 Eventide, Inc.
The Harmonizer
Programmer’s Manual

Custom Interface

There is one very special module that is used to create custom menu pages. It’s called (appropriately) the menupage module. It has any number of userobject inputs

(the example shown to th e right has only one) and a single userobject output. The menupage
module will create a menu page out of the userobject outputs that are connected to it.
The menupage module is typically used with a special group of modules called the “interface” group. Most of the modules in the interface group have a userobject output and either a single control output or a single control input. The interface modules that have a control output
(like the “knob” module shown to the right) are connected to the control input of
another module. The interface module then “takes over” that control input. Similarly, interface modules that have a single control input
(like the “monitor” module shown to the right) are
connected to the control output of another module to display the value of that control output.
create a user interface. Still others exist to manipulate control signals.)
(It should now be clear that not all modules exist to deal with audio. Many, such as the interface modules, exist to
For example, we could utilize two knob modules and a menupage module in the program we’ve been working on. One knob module will take over the delay time control input on the delay module. The second knob module will take over the
frequency control input on the filter module. The userobjects
of both knob modules are connected to the menupage module, which is in turn connected to the head module.
When we run the program on the Harmonizer, the screen shown to the right appears in the
PARAMETER area. Notice that the
order that the knob modules’ userobject outputs are connected to the menupage module dictate their order on the menu page in
PARAMETER area.
the Also notice that because the second knob module “took over”
the filter module’s
frequency control input, that parameter
no longer appears on the filter module’s menu page.
The Harmonizer
Programmer’s Manual Page 8 of 97 Release 1.2.1
1999 Eventide, Inc.
The Harmonizer
The menu pages found in the factory presets were almost exclusively made with interface modules and menupage modules.
Now that you have some understanding of audio signals, control signals, and userobject signals coupled with an understanding of how they all play a role in making a program both functional and accessible from the
PARAMETER area, we can discuss modules in a little more depth.

Programmer’s Manual
The Harmonizer Programmer’s Manual Page 9 of 97 Release 1.2.1
1999 Eventide, Inc.
The Harmonizer
Programmer’s Manual

MODULES

Modules are the magic that make the Harmonizer shine. They are signal processing “nuggets” that are interconnected (via the signals discussed above). Before we discuss aspects of the typical modules like the delay module, the filter module, the pitch shifter module, etc., we need to look at the more specialized IN and OUT “modules."

The IN and OUT “Modules”

Orville
Orville’s programs are loaded and run one at a time on a given DSP. The DSP running the program provides the program with four channels of input audio (where that input audio comes from is a function of the routing configuration, see the Harmonizer’s User Manual). The DSP running the program also takes the four channels of output audio from the program (where it is subsequently sent is again a function of the routing configuration).
DSP7000
The DSP7000’s programs are loaded and run on its single DSP. The DSP provides the program with two channels of input audio and takes two channels of output audio from the program. The remainder of this manual will show Orville-style four channel processing, but the idea is the same with the DSP7000’s two channels. If you send a program that has more than two inputs or outputs to your DSP7000 from VSigfile, it will not be accepted.
The input audio and output audio connections to the program are handled through a pair of pre-defined modules called IN and OUT. The IN module has up to four signals to send to the program, labeled 1, 2, 3, and

4. Since these signals are coming from the module, they are called
outputs of the
module. A small amount of confusion might result because the IN module has
outputs. Similarly, the OUT module has inputs labeled 1, 2, 3, and 4. This
difficulty is minor compared to the gain in consistency created by using the word
output to refer to all signals that come from a module, and using the word input
to refer to all signals that go into a module. In the simplest of conceivable programs, the IN module’s
outputs are connected directly to the OUT module’s inputs
(this is the
Thru’ program in bank 0). Normally, other, optional
modules are inserted in-between the IN and OUT modules. The IN and OUT modules always remain as part of the program.
The Harmonizer
Programmer’s Manual Page 10 of 97 Release 1.2.1
1999 Eventide, Inc.
The Harmonizer

The Characteristics of Modules

There are several characteristics associated with any module. All modules have:
a module type
a module name
Modules use memory and processing resources that can be divided into the following groups:
audio memory
signal processing
user interface and control signal memory
control processing
Different types of modules use different amounts of these resources. Modules that have audio inputs and outputs introduce a six-sample delay in the processed signal. More complex modules have some or all of these items:
specifiers
audio inputs (and/or mod inputs)
audio outputs (and/or mod outputs)
control inputs
control outputs
userobject outputs
userobject inputs
The following sections will discuss all of these attributes in depth. . .

Programmer’s Manual
M
ODULE TYPE
There are many kinds of modules at our disposal. The “module type” simply defines a module as being a particular kind of module. When a module is added to a program, it is selected by module type. Once added, the module type cannot be changed. If a different module type is needed, the “offending” module must be deleted and then the correct module type must be added anew.
The Modules section in this manual is sorted by module type. When a module is mentioned in this document, it is referred to by module type. For example, a module whose module type is “samphold” would be referred to as a samphold module.
MODULE NAME
The module name is a text string that is stored with a particular module. It is helpful to change the module name immediately after adding a module so that modules of the same type can be told apart. Choose a name that reflects both the purpose of the module within the patch, and the module type. The name may be up to 18 characters in length. To the right we see gate type module named “Ch1 Hiss Gate."
The Harmonizer Programmer’s Manual Page 11 of 97 Release 1.2.1
1999 Eventide, Inc.
The Harmonizer
Programmer’s Manual
ESOURCES
R
A resource is something that is needed for the operation of a Harmonizer program -there are several different kinds of resources. A program cannot run if it needs more of a particular resource than is available.
Audio memory
Modules that store audio for brief periods of time use audio memory. Modules that use audio memory

include modules in the delay, filter, pitch shift, and reverb groups. Some modules contain “specifiers”
(see below)
that increase or decrease the amount of audio memory used by either varying the number of audio channels or by specifying the amount of delay explicitly.
Signal Processing
Modules that perform operations on audio use signal processing. The amount of processing performed by a module can only be changed via specifiers (see below.) This is important, as the amount of signal processing that can be done in any given period is finite. Modules that perform complex effects on audio use more processing than those that perform simple effects. For example, the reverb_a module uses more processing power than the delay module, even though the delay module might use more audio memory.
User Interface and Control Signal Memory
Interface memory includes memory used to store text, adjustable range limits, default values, control inputs, control outputs, and any data used by “control” modules. Modules that use text fields consume a large amount of this kind of memory. For instance, it is possible to use up all of the user interface memory with just two textblock modules if each contains enough lines of text (See the Modules Section for a closer look at the textblock module).
Control Processing
Control processing is a resource that cannot be exhausted, though it can be strained. The Harmonizer will repetitively process everything that comes under the control process category as often as possible. Control operations will get slower as more operations are required. For instance, if a single menu page has eight values displayed that are all changing rapidly, the display may appear to update slowly. Typically, control values are updated about 100 times a second.
PECIFIERS
S
A specifier is a control that affects a module's behavior. For example, a delay module might have a specifier that sets the maximum delay time a user can enter. A pitchshifter module might have a specifier that sets the number of pitchshifting voices used by the module. A module may have several specifiers.
Specifiers are only
PARAMETER area). There is no input or output for specifiers; they reside “inside” a module (you’ll learn how
adjustable in the Patch Editor area or in VSigfile (i.e. specifiers can never be altered in the
to access the “inside” of a module in the VSigfile or Patch Editor chapters).
Specifiers have the following features:
they are extremely efficient in terms of resources. (A module with a specifier for a given characteristic is more efficient than a module with a control input for that characteristic.)
they can change the amount of resources that a module needs.
The Harmonizer
Programmer’s Manual Page 12 of 97 Release 1.2.1
1999 Eventide, Inc.
The Harmonizer
Programmer’s Manual
they can change the number of audio, mod, and control inputs and outputs, or even the number of
other specifiers (!) for a module.
they can be numerical, multiple choice, or text. The Modules Section in this manual lists all of the module types and their associated specifiers.

UDIO INPUTS
A
An audio input is used to pass high fidelity audio into a module. An audio input can be connected to at most one audio or mod output. Unconnected audio inputs are actually attached to a special “null signal” provided by the Harmonizer's operating system. The null signal simulates a zero voltage, noise-free audio source. Audio signals range if value from -1 to +1, or full negative to full positive. Audio inputs are always found on the left side of modules.
A
UDIO OUTPUTS
An audio output is used to pass high fidelity audio out of a module. An audio output may be connected to any number of audio or mod inputs. Audio outputs are always found on the right side of modules.
ONTROL INPUTS
C
One module can control the parameter of a second module by connecting to the second module’s control
(as we saw the knob modules doing in the “Custom Interface” section). The range of values a control input can accept may
input be set by a specifier, by fixed internal programming, or even by another control input. A few notes concerning control inputs:
Control inputs are always found on the left side of a module.
The value of a control input cannot change the amount of resources used by a module.
The existence of a control input takes up processing and memory resources. In modules with a variable
number of control inputs (like the c_switch module), reducing the number of inputs reduces the amount of resources used. (In such modules, specifiers control the number of control inputs.)
Control inputs can be connected to only one control output.
CONTROL OUTPUTS
A control output sends a numerical value to another module by connecting to one of the other module’s control inputs. A single control output can connect to any number of control inputs. Control outputs are always found on the right side of a module.
OD INPUTS
M
A mod input is used to pass a high performance modulation signal into a module. A mod input may be connected to at most one audio or mod output. Unconnected mod inputs are actually attached to a special “null signal” provided by the Harmonizer's operating system. The null signal simulates a zero voltage, noise-free audio source. Mod signals range if value from -1 to +1, or full negative to full positive. Mod inputs are always found on the left side of a module.
Although mod signals are high performance modulation signals, they kind of stink at passing audio signals
(they were never really meant t o! Remember, they act to achieve cornerstone two - to control the parameters of modules). An audio signal passed
through a mod in/mod out on a module will lose fidelity. This is because the sampling rate used for mod signals is 1/4 that used for audio signals.
signals might be right up your alley!)
(Of course if you go for that retro, “aliasing." dawn-of-the-samplers kind of sound, mod
The Harmonizer Programmer’s Manual Page 13 of 97 Release 1.2.1
1999 Eventide, Inc.
The Harmonizer
Programmer’s Manual
OD OUTPUTS
M
A mod output is used to pass a high performance modulation signal from a module. A mod output may be connected to any number of audio or mod inputs. Mod outputs are always found on the right side of a module. See the comments made immediately above concerning the “low-fi” status of mod signals.

U
SEROBJECT OUTPUTS
Most modules have a userobject output. The userobject output can be connected to the userobject input on a menupage module, the head module, or a gang module. Such a connection will allow the module’s parameters to be accessible in the
PARAMETER area. The existence or use of a userobject does not affect
system resources or memory. This means that menu pages can be created without using much in the way of resources or program memory.
In VSigfile, userobject outputs are always found on the right side of a module. In the Patch Editor area, userobject outputs are not explicitly shown.
SEROBJECT INPUTS
U
A handful of modules (gang, head, and menupage) have userobject inputs. This means that these modules can accept as inputs other modules’ userobject outputs. For instance, a menupage module may be used to create a
PARAMETER area menu page by accepting the userobjects of other modules.
In VSigfile, userobject inputs are always found on the left side of a module. In the Patch Editor area, userobject inputs are not explicitly shown.
The Harmonizer
Programmer’s Manual Page 14 of 97 Release 1.2.1
1999 Eventide, Inc.
The Harmonizer
OK, so that completes our birds-eye view of the program construction process. Recall that all of our constructing is done to satisfy the three so-called “cornerstones”:
1. We must connect appropriate modules to achieve a desired, overall audio effect.
This is achieved by connecting audio-manipulating modules via audio signals. The “heart” of the program lies in its audio construction.
2. We must control the parameters of the modules in a program so that the desired audio effect is achieved.
This is achieved by using mod signals and control signals to alter the parameters of the audio­manipulating modules.
3. We must make some of the parameters available in the PARAMETER area so that the user can “tweak” the program to fit a particular situation.
This is achieved by connecting userobject outputs to the head module. Additionally, menupage modules may be used in conjunction with interface modules to create custom menu pages.
That completes the theory of program construction, but much remains in the way of execution. We’ll cover that in the VSigfile Chapter and the Patch Editor Chapter. You should now proceed to either the VSigfile Chapter or can use with VSigfile, you really ought to use it (see the VSigfile Chapter for system requirements). VSigfile is decidedly easier to use than the Patch Editor area, especially for constructing large programs.
the Patch Editor Chapter, depending on which you plan to use. If you have a computer that you

Programmer’s Manual

WRAP UP

The Harmonizer Programmer’s Manual Page 15 of 97 Release 1.2.1
1999 Eventide, Inc.
The Harmonizer

Programmer’s Manual
VSIGFILE

System Requirements and Background Knowledge Required

To run VSigfile, you will need a PC-compatible running Microsoft Windows 3.1, 3.11, 95, 98, NT3.51, or NT4.0, fitted with a minimum of 8M ram (16M for NT). Macintosh users have had some success running Vsigfile under the "Virtual PC" Windows emulator, but Eventide is unable to assist in replicating this operation.
To communicate with the Harmonizer you need either a Windows supported MIDI interface (typically Creative Technology’s “Soundblaster”) or an IBM PC type RS232 serial port. You can create programs on VSigfile without the Harmonizer connected, but you can’t run them on the Harmonizer until they’re uploaded (and this, of course, requires connecting the Harmonizer to your computer!).
This chapter assumes that you’re familiar with the operation of a PC and with the Windows operating environment and that you’ve read the User’s Manual and the General Principles Chapters in this manual.

COMMUNICATIONS

You will create programs in VSigfile and then send them to the Harmonizer to be run, or you will receive programs from the Harmonizer to edit in VSigfile. Either way, there needs to be a communications link between VSigfile and the Harmonizer. You have your choice of a MIDI connection or a serial port connection. We’ll look at each in turn.

Establishing a MIDI Connection

Assuming you’ve launched VSigfile, choose Comms under the Preferences menu. Choose MIDI as the Comms Type in the dialog box that opens.
Then choose MIDI config.
The dialog box that opens allows you to select an input interface and an output interface from the possibilities that exist on your particular computer. Select the interface(s) you want to use. Make sure that the output goes to the external MIDI socket, not to the internal (usually wavetable) synthesizer.
You will need to connect the MIDI Output on the Harmonizer to your chosen MIDI Input interface on your computer and vice versa One way communication is not sufficient.
.
The Harmonizer
1999 Eventide, Inc.
Programmer’s Manual Page 16 of 97 Release 1.2.1
The Harmonizer
Programmer’s Manual
On the Harmonizer, ensure that MIDI is enabled and system

exclusive
menu page in the
is on. You will find these parameters on the [midi]
SETUP area.
If you find that your PC is “unhappy” about the speed of transmission (as in “it’s too fast!”), lower the parameter on the “second”
[midi] menu page in the SETUP area.
sysex speed
This will dumb down the Harmonizer’s transmission speed.

Establishing a Serial Connection

Assuming you’ve launched VSigfile, choose Comms under the Preferences menu.
Choose Serial as the Comms Type in the dialog box that opens. Choose Serial Config to select the comms port you would like to use.
You must also ensure that the
Harmonizer and VSigfile. These parameters are found on the “third”
baud rate, the data bi ts, the stop bits, and the parity agree on the
[midi] menu page in the SETUP area
in the Harmonizer (as shown above right) and in Serial Config under the Preferences menu in VSigfile (as shown above left) . The higher you set the
baud rate the faster the communication will be between the
Harmonizer and your computer. However, most computers have a ceiling above which errors occur. You should set the baud rate as high as you can (on both machines) without incurring errors. On the Harmonizer, ensure that on the
[midi] menu page in the SETUP area.
serial is enabled and system exclusive is on. You will find these parameters
Connect your computer’s serial port to the Harmonizer’s serial port and ensure that no other device on your computer is hogging the comms port (the modem is a common offender on the author’s computer).
If VSigfile is unable to access its assigned comms port, you will get the message shown to the right. It means that there is a device (or another program) hogging the comms port or that there is something wrong with the selected comms port. Either way, you’ve got a problem to ferret out.
VSigfile will itself hog the comms port. To “disconnect” VSigfile from the comms port (so that you can use another device), choose Disconnect from the Midi menu.
The Harmonizer Programmer’s Manual Page 17 of 97 Release 1.2.1
1999 Eventide, Inc.
The Harmonizer

BASIC FUNCTIONS

All right, so now you have VSigfile communicating with the Harmonizer (you do, don’t you?). Now we can take a look at how we actually add, connect, and manipulate modules in VSigfile.
Before we look at anything, verify that the View menu is “checked” as shown to the right. That way, the structures we describe will be visible to you.
In VSigfile, signals are color coded:
audio and mod inputs, outputs, and signals are coded green.
control inputs, outputs, and signals are coded blue.
userobject inputs, outputs, and signals are coded pink.
The black and white (damn!) screen capture shown to the right is similar to
Programmer’s Manual

what you should see if you were to begin a new file (by pressing the button). The green to the DSP that will eventually run the program. The blue the left correspond to the “global” control corresponds to the first userobject
Use the Add Module command found under the Edit menu to add modules to a program. The dialog box shown to the right opens. The left side of the box selects a group (a collection of similar modules) and the right side selects a module type inside that group. Additionally, you can change the Num field to insert more than one instance of a particular kind of module. Go ahead and insert a IIR module from the “Filter” group as shown above.
“ins and outs” correspond to the audio inputs and outputs
“1, 2, 3, and 4” on
outputs. The pink “1” on the right
input on the head module.

Adding Modules

The Harmonizer
1999 Eventide, Inc.
Programmer’s Manual Page 18 of 97 Release 1.2.1
The Harmonizer
To connect an input to an output simply click on the input or output you want to start with, drag to the output or input you want to connect to, and release. Go ahead and connect the IIR module to the other stuff as shown to the right.
Also note that when you “hover” the pointer over an input or output for a second, a “bubble” appears that describes what that input or output is.
Additionally, the lower left corner of the VSigfile window displays the Module type you are hovering over, its name, the input/output name, and what it is connected to (if anything).

Programmer’s Manual

Connecting Modules

Deleting Modules

To delete modules, first select the module slated for deletion by clicking on it (its module type name will turn red). Then press the “Delete” key on the keyboard or select the Delete Module command from the Edit menu.
To delete more that one module at a time, just click and drag over the area that contains the modules you would like to delete (in the
screen capture to the right, the multiply and the peak modules are being selected)
the modules that you select will have red module type names. Then press the “Delete” key on the keyboard or select the Delete Module command from the Edit menu.
UNPLUGGING CONNECTIONS
To unplug a connection, click on the input that terminates the connection and press the “Delete” key on the keyboard. Away it goes. . .
. All of
The Harmonizer Programmer’s Manual Page 19 of 97 Release 1.2.1
1999 Eventide, Inc.
The Harmonizer
Programmer’s Manual

DISPLAY FUNCTIONS

Now that you can add modules, we can discuss a few of the display-related features of VSigfile. These functions don’t have anything to do with the actual construction of a program; they simply make it easier to view and manipulate the display.

Selecting Modules

A single module can be selected by clicking on it. Several modules can be selected simultaneously by clicking and dragging over the area on the screen that contains the

desired modules
(as shown to the right) or by clicking on all of
the desired modules while pressing the “Shift” key on the keyboard. The selected module or modules will have red module type names
.
names)
(modules that aren’t selected have gray module type

Moving Modules

You can move modules around on the screen at will. Doing so can help to make a patch more “viewable." Simply click on the module you want to move and drag it to its new position. All of a module’s connections will stay with the module.
To move more than one module at a time, first select the modules you would like to move. All of the selected modules will have red module type names. Then click on any one of the selected modules and drag the whole bunch to its new location.

Re-Positioning Modules

To make a patch more “viewable." a function under the Edit menu exists that automatically re-Positions all of the modules on the screen. There are times when this is very useful; particularly when you’ve downloaded a program from the Harmonizer to work with on VSigfile. There are other times where using re-Position will just make things less “viewable."
Trouble is, the re-Position function is not “Undoable” (see below). As a work- around, Save a program just before you use the re-Position function. If the result is worse than the original, simply reopen the saved version.
The Harmonizer
Programmer’s Manual Page 20 of 97 Release 1.2.1
1999 Eventide, Inc.
The Harmonizer
You can align a group of modules either along their top edge or their left edge. First, select the modules you would like to align. Then select either Top or Left from the Align menu. The add and bound modules have been selected to the right.
The result of Top aligning them is shown below. Nice, eh?
You’ll find that as a patch gets very large it’s hard to see the names or input/outputs of individual modules when the whole patch is in view. A zoom function exists to let us zoom in or zoom out. Under the Zoom menu you’ll find four choices:
In Get closer relative to the current display. Out Get further away relative to the current display. to Fit Zoom such that the entire patch just fits on the screen. Selected Zoom such that the currently selected modules just fit on the screen. Modules are
selected by clicking and dragging over the area that contains them.
Programmer’s Manual

Aligning Modules

Zooming



View

As your programs become more complicated, you’ll often want to “hide” certain kinds of signals to make a patch more “viewable." A check mark next to an item under the View menu indicates that that sort of signal is shown. The absence of a check mark next to an item indicates that that sort of signal is “hidden."
Audio
Shows or hides all audio/mod
Control
Shows or hides all control
Misc
Shows or hides all userobject
Unconnects
Shows or hides all unconnected inputs and outputs. Hiding all the unconnected inputs and outputs is useful when trying to follow the logic of a patch.
The Harmonizer Programmer’s Manual Page 21 of 97 Release 1.2.1
1999 Eventide, Inc.
(green) connections, inputs, and outputs.
(blue) connections, inputs, and outputs.
(pink) connections, inputs, and outputs.
The Harmonizer
One of the benefits of using VSigfile over the Patch Editor area is that Editing patches in VSigfile is considerably easier than editing patches in the Patch Editor area (despite its name!).
Select All
Selects every module in a program. This is the same as clicking and dragging over all the modules in a program, only easier.
Cut, Copy, and Paste
VSigfile makes use of the standard “clipboard” associated with the Windows operating system. The clipboard is a temporary holding area for text or modules. The Cut, Copy, and Paste commands work with the clipboard as follows:
The Cut command deletes the currently selected text, module, or modules and places what it deletes on
the clipboard connections exist between those Cut modules, then those connections will exist on the clipboard as well.
(if something was already on the clipboard it will be overwritten!). If more than one module is Cut and
Programmer’s Manual

EDITING


The Copy command copies
it copies on the clipboard Copied and connections exist between those Copied modules, then those connections will exist on the clipboard as well. You can also Copy by pressing
the
The Paste command places the contents of the clipboard into the patch. A version still exists on the clipboard so that you can Paste more than once. If text is selected
with the contents of the clipboard. You can also Paste by pressing the button.
Undo
Selecting the Undo command under the Edit menu reverses the last change that was made to the patch. You can Undo many times in a row.
button.
(as shown to the right), the Paste command will replace the selected text
(does not delete) the currently selected text, module, or modules and places what
(if something was already on the clipboard it will be overwritten!). If more than one module is
The Harmonizer
1999 Eventide, Inc.
Programmer’s Manual Page 22 of 97 Release 1.2.1
The Harmonizer
Context Dependent Menus
By right clicking the mouse, a “context dependent menu” will appear as shown to the right. The available commands will depend on what’s going on in the “vicinity” of the right click. Once you get more familiar with VSigfile, using context dependent menus will save you time.
Shortcut Keys
There are several “shortcut” keys that perform menu commands. They are listed next to their command in the various menus. For example, the Cut command can be accomplished by holding down the “Ctrl” key and the “x” key simultaneously. Once you get proficient with VSigfile, these shortcut keys will save you
(and you know what they say about time. . .).
time

Programmer’s Manual
The Harmonizer Programmer’s Manual Page 23 of 97 Release 1.2.1
1999 Eventide, Inc.
The Harmonizer
Programmer’s Manual

SENDING PROGRAMS TO THE HARMONIZER

Once you’ve constructed a program in VSigfile, you’ll want to send it to the Harmonizer so that it can be run. This is accomplished by selecting the Send command under the Midi menu. Make sure that the Harmonizer is in some area other than the Patch Editor area when you Send, lest errors occur! Be warned: the program running on the currently displayed DSP will be “bumped out” by the program you Send! Save any changes before you Send!

Your compute r mu s t be communicating with the Harmonizer f or this to work! See Communications on page 16.

TUTORIAL 1 -A SIMPLE PROGRAM

We can couple our new found knowledge of VSigfile with the material we learned in the General Principles Chapter to create a simple, but meaningful, program. We’ll create a modulating filter.
To begin, start with a clean slate by pressing the
button. You should see a
work area that looks like the one shown to the right. The green “in1 >” and in2 >” on the left represent the inputs 1 and 2 on the DSP that will eventually run the program
(we’ll learn how to do quad programs for Orville later, but the idea is the same).
Similarly, the green “> out1” and “> out2” on the right represent the outputs 1 and 2 on the DSP that will eventually run the program. The blue “1, 2, 3, and 4” on the left represent the “global inputs” (these only have meaning for Orville’s d ual DSPs,
and we’ll learn about them in “Inter-D SP Communication” on page 56)
. The pink “1” on the right represents the first userobject input on the head module. Recall that the userobject outputs of modules are connected to the head module so that their menu pages will appear in the
PARAMETER area.
To create a “modulating filter” program, we’ll need just two modules: an LFO (low frequency oscillator) module and a modfilter module. Go ahead and add these modules to the program by using the Add Module command from the Edit menu. You’ll find the LFO module in the “Oscillator” group and the modfilter module in the “Filter” group.
The Harmonizer
Programmer’s Manual Page 24 of 97 Release 1.2.1
1999 Eventide, Inc.
The Harmonizer
Programmer’s Manual
After adding both modules, the screen should look similar to the one at the right. The modules are overlapping and nothing is yet connected. Move (by clicking and dragging) the modfilter module to the right so that both modules are clearly in view. Note that the DSP outputs and the head module input “move out of the way."
The screen should now look similar to the small one at the immediate right.

Now connect the modfilter module
over an input or output for a second, a “bubble” will appear that describes the input or output)
Connect
out1
(“low” is the lowpass output of the filter).
Connect
>out2 (“high” is the highpass output of the filter).
Connect
modfilter module.
cutoff frequency will vary as a function of the signal applied to this input.)
in1 > to in on the modfilter module by clicking on in1 > and then dragging to in on
(recall that if you “hover” the pointer
. Similarly,
low on the modfilter module to > high on the modfilter module to out on the LFO module to fmod on the
(“fmod” is a modulation input. The filter’s
The result should look similar to that shown right.
Let’s take a moment and analyze these connections. A signal comes into the DSP’s input 1 and then into the modfilter module. We refer to the Modules Section to learn what exactly the modfilter module will do with the signal. It reads:
Modfilter: This module implements a classic state-variable audio filter. It provides simultaneous lowpass, bandpass, highpass, and notch outputs. It has variable Q. . . and frequency and has mod rate frequency and q factor modulation inputs.
So, not surprisingly, it will filter the signal applied to its input. All of the frequencies in the input signal that lie below the cutoff frequency will be output at the cutoff frequency will be output at
high. Furthermore, the LFO module’s output signal will modulate
low, and all of the frequencies in the input signal that lie above
the cutoff frequency. We’ve now satisfied “cornerstone one” of program construction: We’ve connected appropriate modules to achieve a desired, overall audio effect.
The second and third “cornerstones” of program construction state that:
We must control the parameters of the modules in a program so that the desired audio effect is
achieved.
We must make some of the parameters available in the
PARAMETER area so that the user can “tweak”
the program to fit a particular situation.
In our simple program these will be one in the same. We will arrange to have the parameters for both
modules available in the
PARAMETER area by connecting their userobject outputs to the userobject inputs of
the head module.
The Harmonizer Programmer’s Manual Page 25 of 97 Release 1.2.1
1999 Eventide, Inc.
The Harmonizer
Programmer’s Manual
First click on the head module’s userobject input 1 (the pink square below the DSP outputs). Then select the Add Repeating Field command from the Edit menu. A second userobject input should appear.

Connect the modfilter’s head module’s
userobject userobject
userobject
output to the head module’s input 2. The screen should look similar
userobject
input 1 and the LFO’s
output to the
to the one on the right.
OK, now we’re ready to send the program to the Harmonizer to be run. Make sure the Harmonizer is in some area other than the Patch Editor area and then select the Send command from the Midi menu.
If you aren’t connected to the Harmonizer, read “Communications” on page 16.
The Harmonizer should flash “coding file from remote” and
loading progra m." You should then find yourself in the
then “
PARAMETER area with a screen that looks like the one to the
right. After turning the
0.0Hz, mess with the [modfilte] /freq and freq mod parameters.
[lfo] /freq to something other than
And that’s basically it. You can create simple programs by concentrating on “cornerstone one” and then satisfying the other two “cornerstones,” by liberally connecting userobject outputs to the head module. Now that you’ve been introduced to the basics and have some hands-on experience, let’s move on to more advanced topics in program construction.
The Harmonizer
Programmer’s Manual Page 26 of 97 Release 1.2.1
1999 Eventide, Inc.
The Harmonizer

ADVANCED FEATURES

The Specifier Display

Some mention was made in the General Principles Chapter of “Specifiers." The astute reader will note that no mention has been made of these creatures since! Well, now’s the time. Go ahead and add a delay module from the “Delay” group.
Once it’s added, double­click on it. You will call up the “VSigfile Specifier Display” shown to the right. We’ve entered the “guts” of the module. Here we have access to all kinds of cool stuff. Cells that contain black type can be altered, while those that contain gray type cannot. Let’s take each row in turn. . .
Programmer’s Manual

Title Line
The first row gives a general description of each column (more or less).
The type column describes what type of input or output a row pertains to
inputs or outputs (like the first two shown above), the ‘type’ column is of little value)
The MODULE column contains most of the alterable information in the Display. The title of the column
(in this case, “DELAY”) is the module type.
The description column gives a marginally useful description of each row.
The min and max columns list the minimum and maximum values that can be entered in the MODULE
column.
The visible column allows you to “hide” input or outputs in the normal VSigfile display.
Module Name
The second row, MODULE column cell allows you to alter the name of the module. The module name is a text string that is stored with a particular module. There is a default module name that is usually the same as the module type. It is helpful to change the module name immediately after adding a module so that modules of the same type can be told apart. Choose a name that reflects both the purpose of the module within the patch, and the module type. The name may be up to 18 characters in length, and no two modules in a given patch may share the same name.
The Harmonizer Programmer’s Manual Page 27 of 97 Release 1.2.1
1999 Eventide, Inc.
.
(if a row doesn’t have anything to do with
The Harmonizer
Programmer’s Manual
Additionally, you can change the name of a module from the normal VSigfile display by double clicking on the name.
If you plan to use multiple copies of a particular module type, it’s wise to tack a “1” onto the end of the first instance and then Copy and Paste that instance. The subsequent copies will be numbered sequentially, as shown to the right.
Specifiers
The third row contains a “specifier” for the delay module. Remember specifiers from the General Principles Chapter? It read:

A specifier is a control that affects a module's behavior. For example, a delay module might have a specifier that sets the maximum delay time a user can enter. A pitchshifter module might have a specifier that sets the number of pitchshifting voices used by the module. A module may have several specifiers. The range of permitted values for a specifier is fixed.
Specifiers are only PARAMETER ar ea). There is no input or output for specifiers, they reside “inside” a module
adjustable in the Patch Editor area or in VSigfile (i.e. specifiers ca n never be altered in the
Whadaya know? We’ve got a delay module here, and the specifier at hand sets the maximum delay time for it. By looking at the min and max columns, we can see that the minimum delay time is 1 (millisecond) and the maximum delay time is 32500 (milliseconds). The maximum delay time is something you set as the program’s creator; the user will not be able to alter it. This is important, because, like most things in life, the amount of delay the Harmonizer has available is finite. As a result, it is necessary to divide this among the modules, so that each has enough. Setting the maximum amount that each module can use in this way, makes sure that there is enough left for the others.
Different types of modules will have different types of specifiers; some may have no specifiers at all and some may have many. The Modules Section describes what the specifiers for a given module do. Let’s look at the VSigfile Specifier Display windows for a few other types of modules to see what sorts of specifiers they have:
Here we see the single specifier
for the IIR module. This module is a resonant filter and the n_sections specifier selects the number of “poles” used. The number of poles used is something you set as the program’s creator; the user will not be able to alter it. Here the number of poles controls the behaviour of the filter, but it also determines the amount of DSP resources the filter will use.
Here we see the single specifier
for the easytaps module. This module produces a tapped delay line and the taps specifier selects the maximum number of taps that the user can select. As with all specifiers, the maximum number of taps is something you set as the program’s creator; the user will not be able to alter it.
The Harmonizer
Programmer’s Manual Page 28 of 97 Release 1.2.1
1999 Eventide, Inc.
Loading...
+ 69 hidden pages