Translation Issues

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:

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:

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

Back to ASR-X Knowledge Base Index

Close Window