Here is a step by step comparison of the Ensoniq ASR-X Tools Module 3 Translator and the built-in ASR-X Translator, along with some helpful notes on the translation process itself.

**PITCH**

The way the ASR-X does pitch is a little different than the
EPS/ASR. The EPS/ASR has a SampleRate parameter, with assorted
rates from 6.25khz to 312khz; and a Root Key, which establishes
the "anchor" MIDI note on which the sample is played
back at "unity speed". On the EPS/ASR you can change
the SampleRate (not the CONVERT SAMPLE RATE, which actually
alters the wavedata) that is listed for the particular wavedata.

For example, let's say you sample your dog barking with your EPS/ASR. With the EPS(s), you have 7 input sample rates to choose from; with the ASR-10/88, two. Let's say you sample at 44.6 with your EPS 16-Plus. Afterwards, you can go into WAVESAMPLE INFORMATION and look at the sample rate that the wavedata was sampled at. You can then change it - the higher the value, the lower the pitch (since the EPS thinks it has to pick up more information, it slows down the playback).

The EPS/ASR also has the FINE TUNE parameter, but that has a like parameter in the ASR-X, and that is translated directly across.

The ASR-X has one parameter for pitch (it's a "Root Key" with 65536 possible values (16-bit)), and no Root Key. So to arrive at the correct pitch, one must take the SampleRate and Root Key parameters and work out an equation to arrive at the correct pitch. We never found such an equation, so we worked out a table that perfectly matched what the ASR-X's translator performed.

Task finished? Not exactly - under the microscope of working on this Translator, we found that some of the pitches calculated by the ASR-X's translator were a little off. We worked with two keyboards on top of one another, and A-B'ed the results. With just a little tweaking, we got some of the pitches to more correctly match up (the 27.2 rate was especially troublesome). On the front panel of the Translator, there is a function to totally modify it to the users liking, with the ability to go back to the default at any time.

**LFO SPEED**

Surprisingly, the ASR-X's translator's solution is to add 20 to
the value that the EPS/ASR stores. That's definitely not correct
- especially when the value exceeds 99 (the X stores it as 0-99
just like the EPS/ASR). Fortunately the ASR-X doesn't crash - we
suppose it just interprets it as 99. Too bad there isn't a
value-to-realtime chart in the ASR-X manual like there is with
the EPS/ASR manual; that would have made the tabling of this
easier. What we did was manually guess, and we came up with what
we thought was a better algorithm.

(for example; not complete)

EPS/ASR.0 10 15 16 17 18
19 20 30 40 50 60 70 80 90 99

ASR-X...1 02 05 07 09 15 29 31 51 66 75 80 84 88 92 99

As you can see, there is a big jump between 18-19 - the X's LFO
is more consistent than he EPS/ASR's. You can tell there is a
difference just by listening to the EPS/ASR itself. In our
programming careers with the EPS/ASR, we've found that the
default LFO RATE of 40 is a little fast for most common things
(like simple vibrato), and we always preferred 37. Whatever the
case, most sounds LFO RATE's are around 40, and you can see that
+20 isn't always quite accurate. It's especially wrong for the
lower values.

**ENV1 MOD AMT and LFO MOD
AMT**

These are the parameters on the EPS/ASR Pitch pages that have
those strange values; -15.7 to +15.7. From a programming point of
view, it's simple - there are 127 values both ways, like
everything else. The values are just called something else.

What they don't tell you is the maximum REAL value that the parameter imparts on a sound. On the EPS/ASR, when the ENV1 Mod is set to +15.7 (max value), and the ENV1 max value is 99 (really 127), the effect is a bend spanning upward 16 half-steps. However, on the ASR-X it is 4 times that amount, 64 half-steps (which really sounds cool!). On the ASR-X the values are simply -127 to +127, so on a translation we divide by 4 and the value will never be above 32 and never below -32. Note that values below 4 will become 0.

On the LFO Mod, the ASR-X, when the LFO Depth is maximum and the LFO Mod Amt is maximum, the effect on pitch is about double of that on the EPS/ASR. So, again, on a translation, the largest possible is 64 either way. And again note that values of 1 will become 0.

Just as a note, for the Pitch Mod
Amt on the EPS/ASR, the maximum effect was about 16 half-steps as
well (I always remember that 76 meant an octave). The ASR-X, just
like the ENV1 Mod Amt parameter, can go 64 half-steps either way!
This just sounds cool when you want something to really
"bottom out" or go "sky-high".

**NOISE RATE AND PARAMETERS**

The ASR-X's translator does not translate the RANDOM/NOISE RATE
parameter; for what reason I don't know. The way the ASR-X works
is that NoiseSource Rate is set, and any modulator can access it
by choosing STEPPED or SMOOTHED. STEPPED is a square wave, where
each random change occurs immediately. SMOOTHED is more of a sine
wave, where the transitions are "smoothed".

The Tools Translator directly converts the NOISE RATE, like we
think it should. Furthermore, we need to consider the EPS/ASR's
pitch modulation parameters. Put simply, the EPS/ASR has:

EPS/ASR | ASR-X |

LFO MOD AMT | LFO MOD AMT |

ENV1 MOD AMT | ENV1 MOD AMT |

NOISE AMT | n/a |

PITCH MOD SOURCE | PITCH MOD SOURCE |

PITCH MOD AMT | PITCH MOD AMT |

n/a | PITCH MOD RANGE |

As you can see, the EPS/ASR has a dedicated Noise Mod Amount parameter. Actually, it's confusing that the NOISE RATE is on the PITCH pages, since it doesn't necessarily affect ONLY the pitch.

So the Tools Translator will convert the Noise Mod Amt in the form of the PITCH MOD SOURCE (Stepped) and the PITCH MOD AMT/PITCH MOD RANGE, only if they aren't programmed to anything that would affect the sound in any way. (By the way, the EPS/ASR could only alter the pitch 16 half-steps; the ASR-X can swing it 64 half-steps - that's 5 octaves!)

**ENVELOPES**

One of bigger problems facing translation is the envelope
structure. The first issue is that the X replaces the
corresponding Hard/Soft values with one LEVEL VELOCITY parameter.
Ensoniq notes in the manual that it is calculated using the
second and the third levels (yeah, I know it says 1 and 2, but
wait for that). In my opinion this is OK - we rarely, if ever,
saw any really perceptible differences. We can "see"
the HardLev/SoftLev concept easier, but the single parameter
approach works well too.

The second issue is the killer. The first Level on the EPS/ASR envelope structure should be called INITIAL LEVEL; in other words, when you hit a key, it's the level the sound immediately plays at. Then, Time 1 is the time it takes to get to LEVEL 1 (which is actually the second Level). The ASR-X eliminates the INITIAL LEVEL, and assumes it to be 0; in other words, whenever you play a note, the initial sound is at the amplitude 0. You can guess what havoc that plays on translating like-structures.

For instance, take this EPS/ASR structure:

LEVELS 99 99 80 64 50

.TIMES 10 64 25 40 20

This is translated on the ASR-X as:

LEVELS (0) 99 80 64 50

..TIMES 10 64 25 40 20

Whereas you have an immediate sound on the EPS/ASR, you have 10 "ticks" to get at full volume in the X. BAD. We have no idea why Ensoniq designed the X (originally the MR-Rack/Workstation) with this envelope parameter missing. This is my theory why the ASR-X responds more sluggish than the EPS/ASR - buts it's not just the translation, it's the fact that all sound starts at 0.

The Tools translator solves this possible in two ways. There are two possible envelope structures that are in jeopardy - I'll comment on them individually:

**ISSUE 1: SFORZANDO**

LEVELS 99 00 50 99 99

.TIMES 05 50 50 40 20

If you translate this on the X, you won't hear any sound - since the first level is assumed 0, there's no sound! So our algorithm simply moves the critical element ahead, and combines the times and levels later:

*ASR-X*

LEVELS (0) 99 00 50 99

..TIMES 00 05 50 50 20

**ISSUE 2: LONG INITIAL
TIME**

LEVELS 99 99 50 50 50

.TIMES 50 64 25 40 20

Obviously, on the X you end up having a long attack, since the first level is 0 instead on 99. The solution is the similar: combine the times and levels later:

ASR-X

LEVELS (0) 99 99 50 50

..TIMES 00 50 64 65 20

These are simplified examples; the real problems come when something significant is happening in the envelope. Then it's just a matter of sacrificing. Our algorithm works with two principles:

- 1) If the INITIAL LEVEL (averaged between HARD and SOFT) is above 30, and if LEVEL0 > LEVEL 1 by 50 or more, the values are shifted right, with the SUSTAIN LEVEL (LEVEL4) remaining constant, and the TIMES compensated to work out identically.
- 2) If the INITIAL LEVEL (averaged between HARD and SOFT) is above 30, and TIME 1 > 40, and if LEVEL0 and LEVEL1 are within 20 of each other, the values are shifted right, with the SUSTAIN LEVEL (LEVEL4) remaining constant, and the TIMES compensated to work out identically.

The third issue is that there is no Second Release feature in the X, and unfortunately, there's not much you can do about that. We didn't prefer the ASR-X's translation approach - if the Second Release Time > 0, than that's what was translated as the Release Time (5) parameter; otherwise, EPS/ASR Time 5 was translated as the X Release Time (5). Instead, if the SECOND REL LEV>-99, we added the Release and half of Second Release time to perhaps more appropriately set the ASR-X Release time more accurately.

**AMPMOD and BREAKPOINTS**

The ASR-X manual says flatly that the Breakpoints aren't
translated. Not only that, the VOLMODSOURCE and the PANMODSOURCE
parameters aren't translated either (although the AMT's are, but
since the SOURCE is always OFF, it doesn't matter). It looks like
Ensoniq intentionally avoided this area, but we wanted to
translate it. So we translate it as follows:

The PAN is easy - just translate the source as well as the AMT. (BTW, with the Original EPS, the PAN parameter is different, and in a different location, so we programmed that in.)

The ABCD stuff is really an AR envelope applied to the VOLMOD parameters. The EPS/ASR VOLMODAMT parameter is really a level on how much the ABCD envelope affects the amplitude in regard to the VOLMODSOURCE parameter.

When the VOLMODSOURCE=KBD, there is a special function in the ASR-X called ROLLOFF. This enables an amplitude reduction above OR below a certain MIDINote. Since the EPS/ASR ABCD system allows FadeIn AND FadeOut, there's no way of translating BOTH if it's programmed as such. Nevertheless, we decided to translate any KBD mods to the ROLLOFF command - only if they are obvious, such as this:

FADE IN

A B C D

x y 127 127

FADE OUT

A B C D

0 0 x y

(in both case, where y>x)

Where the VOLMODAMT>0 and the VOLMODSOURCE is not OFF and something different than KBD, we use this algorithm to translate the ABCD envelope into the ASR-X's +127/-127 VOLMODAMT parameter:

- if C>A (if FadeOut is at a higher level than FadeIn)
- (A-B)-(C-D), then we factor in the effect of the EPS/ASR VOLMODAMT

Although we usually don't program this way, we've seen many times where programmers use the VOLMOD section to program velocity amplitude. (We always use ENV3 - it's better suited for it.) Take this structure:

EPS/ASR (SOFT to HARD)

VOLMODSRC | VOLMODAMT | A | B | C | D |

VEL | 99 | 0 | 127 | 127 | 127 |

We translate this as:

ASR-X

VOLMODSRC | VOLMODAMT |

VEL | +127 |

**OR**

VOLMODSRC | VOLMODAMT | A | B | C | D |

VEL | 99 | 0 | 0 | 0 | 127 |

We translate this as:

ASR-X

VOLMODSRC | VOLMODAMT |

VEL | -127 |

This is even more critical when it comes to the WHEEL source. I know many times I use the ABCD to have the Mod Wheel lower the amplitude of a sound. Since the FadeOut of the ABCD envelope is enabled, this effectively performs this modulation.

Lastly, it should be mentioned that ASR's VOLMOD section directly affects the entire volume of the sound, where on the ASR-X it does not. For example, to perform a NOTHING-to-FULL Mod Wheel amplitude sweep on the EPS/ASR, you do not have to touch the VOLUME parameter. With the ASR-X, you have to set VOLUME=0, and then set VOLMODSOURCE=WHEEL and VOLMODAMT=+127. These are supported in the Tools Translator. (NOTE: There is a Volume parameter that is NOT the Pad Volume parameter - it's just hidden from view. Similar to the Transwave Looping parameter value - see the WAVE MODULATION section.)

**PITCH TABLES**

These aren't imported, and we can see why. The ASR-X has great
built-in pitch tables, but they are not programmable and also
operate on a Instrument-basis, rather than Layer-basis. We
haven't done it, but we'll attempt to translate a pitch table by
transcribing the differences into the wavesamples, but that will
have to wait until later. Which brings a nice idea - can you
imagine a massive "Pitch Table" macro that alters the
individual waves in a Layer within ASR-X Tools?

If you are thinking, what about the RAM tables? Those are brought in by MIDI Tuning Standard commands, and aren't storable on disk.

BTW, the NO PITCH pitch table is translated under the KeyTrack PITCH parameter - a value of 0 turns any Pitch Tracking by the keyboard/pads/MIDINote off.

**WAVE MODULATION**

Ensoniq did a good job here - although as the manual states, only
START, LOOP-START-X, and TRANSWV (and OFF!) are translated,
because of the implementation of the StartEndIndex features in
the ASR-X.

**EFFECTS**

These are not translated yet - please look for this in the next
release.

**LIST OF ADDITIONAL ASR-X
PARAMETERS TO TWEAK AFTER TRANSLATION**

**RESONANCE FILTERS**

This obviously is a good one.

**RELEASE MODULATION**

This is an under-rated, but great feature. Take a trumpet player
blasting a note, then he releases hard with a spitting sound.
Release Modulation allows you to perform an operation based on
how quickly the note is released from it's Note-On state - like
the trumpet player.

**PITCH MOD RANGE**

We're big progressive rock fans, and we love the way Eddie
Jobson of UK used the pitch ribbon of his CS-80 to have pitch
bends of many octaves. Although it doesn't affect pitch bends,
the PITCH MOD RANGE allows you to modulate the pitch over 5
octaves - very cool!

**VEL CURVE**

With the EPS/ASR you have 3 velocity curves to choose from - here
you have 10, with some strange stuff in between. By switching
effects at different times or rates, or using different sounds to
start with, you can achieve several variations on this phenomena.
The main drawback of this features is that you can't directly
sample this into the ASR-X because you cannot record and change
the effects setting simultaneously. You must record using another
device from the main out and then sample back into the ASR-X.

**Contributor: Garth
Hjelte**