Creative Synthesis With Yamaha XG (Part 2)

XG Masterclass
By Mike Senior

Layering voices is one of the best ways to maximise the potential of your XG module, so here are a variety of ingenious ways you can use this technique — you can even turn your synth into a high-spec step sequencer!

In Part 1, I demonstrated how to control the different XG editing parameters in real time over MIDI, producing more expressive synth parts and arpeggiations in the process. I also showed how you could creatively 'waste' your XG module's polyphony and multitimbrality by using fast note repetition and complex MIDI delays. In this month's column, I'll be looking in detail at another way you can fritter away your XG synth's horsepower in the name of inspiration: layering voices.

In order to layer XG sounds you have to make two or more of the multitimbral parts respond to MIDI messages on the same MIDI channel. Some XG modules provide a way to set this up directly, but if you can't find the parameter on your unit you can use the hexadecimal SysEx string F0 43 10 4C 08 mm 04 xx F7, where 'mm' is the multitimbral part and 'xx' the MIDI channel you want it to respond to.

Mix & Match

The most common reason I find I want to layer XG voices is to change the attack characteristics of a sound that I otherwise like. Take a listen to the bass line in Example 1a, for instance, which uses a voice based on the Oscar preset. (As with last month's article, we have placed all the sound and MIDI files relating to this workshop into a ZIP file, available from the righthand Media sidebar.) I like the high-resonance filter squelch at the start and the meatiness of the steady-state tone, but I'd prefer more weight to the attack, so I'm going to add this by layering in another sound. For this role, I need one of the more percussive sounds which automatically decay to silence regardless of how long you hold the note. One of my favourites is the MuteGtr patch, because it is clearly pitched rather than just percussive. In Example 1b you can hear the line played using this sound on its own.

As it stands, Example 1b is a bit too clicky and buzzy for my taste, but some judicious sculpting with the filter and envelope generator transforms it into the much more suitable Example 1c — the high end has been tamed and the amplitude envelope's decay shortened so that the MuteGtr will only contribute to the very start of the layered sound. Example 1d combines the two sounds, but although I've adjusted the volumes of the two parts to my liking, the high end of the attack is still dominating over the low end, so in Example 1e I've increased the attack time of the Oscar patch just enough to take the edge off its attack without destroying the filter sweep. I've also turned on the Portamento Switch parameter for the Oscar layer, so that the filter sweep doesn't necessarily trigger with each new note, even though the MuteGtr part does. (See the box elsewhere in this article for more information about how Portamento works in XG.)

By layering two voices together you can often get the best of both, as in this case. And, of course, you don't hear the result as two separate sounds, despite its actual composition.

Stealth Layering

Sometimes I've created XG sounds which seem great in isolation, but which get lost in the mix on some systems. This is often because there is not enough energy to cut through all the other sounds in a particular critical frequency range. My solution to the problem is to choose a voice with a very limited frequency bandwidth and then to layer it alongside the main voice. Then I play back my mix and adjust the Note Shift and Volume of the new layer such that it fills the gap in the main sound, bringing it forward in the mix.

My favourite voices for this task are: SineLead (a variation of SquareLd) for reinforcing specific harmonics; SoloSine (another variation of SquareLd) if you want something with a few more harmonics to fill a slightly wider gap; or Sine Pad (a variation of Warm Pad), which also provides a little stereo width. Alternatively, you can tweak the Whistle or Ocarina patches into something similar, but with a slightly fuzzier feel, using their synthesis parameters.

These patches can also be useful for layering as sub-bass tones under synth bass patches, a technique particularly beloved of hip-hop and R&B production. Just watch that you don't blow your speakers up! SineLead can create tones so low that you will hardly hear them on small speakers, but even if you can't really hear a strong sub-bass note on your monitors, it could still be causing potentially damaging wide cone excursions.

More Elaborate Layering Techniques

Even though this example is fairly simple, I've still been using the editing parameters to craft each individual voice to my needs. However, you can go a lot further with this idea. Example 2a has some basic rhythm chords played with a fairly uninteresting SineMrmb patch, albeit with a rather weird reverb effect. In order to generate a more interesting hybrid, I've layered it in Example 2b with the RevCymb1 patch. By tuning the added layer two octaves down and adjusting its filter settings, I have been able to tweak the timbre to my taste. The envelope generator has then been used to specify the length of the 'chiff' in this case, and the attack time of the SineMrmb voice has been increased to shift emphasis to the RevCymb1 part at the start of each note. The 'chiffs' track the note pitches to some extent, but I'd like the sound of the 'chiff' to change a little more organically from note to note, so in Example 2c I've added some slow flange just to the RevCymb1 voice.

This technique of replacing the attack phase of one sound with a short burst of another is a great way to resurrect many sounds which you might already have consigned to the grave. Many people completely discount all the completely bonkers sounds in the SFX voice category, but they can act as attack transplants for other patches — it's particularly worth returning to Str Slap, Fl.KClik, LaserGun, and Scratch. You may also rarely feel moved to delve into the Chromatic Percussion, Synth Effects, Ethnic, or Percussive voice sections, but browse through there with all the main envelope generator's time settings at minimum and you'll find a huge palette of attack transients perfect for grafting onto other meeker voices.

Because of the way I've programmed the composite sound in Example 2c, each note is pretty short regardless of how long you hold the MIDI notes for. This leaves me the scope to add another layer (using a slow-attack ThaiBell patch) which only makes itself known when I play longer notes. In Example 2d you can hear this new layer on its own — it contributes almost nothing to the short notes, because of its slow attack, but you can immediately hear which are the longer MIDI notes. I've put all of the layers together in Example 2e, and I've sent a little of the ThaiBell layer to the flanger along with the RevCymb1 'chiff'. A few sneaky Mod Wheel messages add a little vibrato to the SineMrmb layer as well in a couple of places.

Before we move on, here's a little foretaste of some of the advanced modulation possibilities available for layered sounds — I'll be discussing this in much more detail next month. In Example 2f, I've used the Bend Pitch Control parameter to make only the ThaiBell layer sensitive to MIDI Pitch-bend messages. This means that I have been able to waggle the pitch-bend wheel to create wacky pitch slides for the Thai Bell layer without affecting the pitch of the other layers.

How The XG Portamento Parameters Work

The way the Portamento Switch parameter works is a little more complicated than on some other synths, and it also causes different results depending on the Mono/Poly Mode parameter setting for the voice in question. So let's take a look at each scenario in turn. (In case you can't access Mono/Poly Mode directly, MIDI Continuous Controllers 126 and 127 select monophonic and polyphonic operation respectively. In hexadecimal those messages are Bn 7E 00 and Bn 7F, where 'n' in the MIDI channel number — note that the latter message needs no data byte. Alternatively, you could use the hexadecimal SysEx strings F0 43 10 4C 08 mm 05 00 F7 and F0 43 10 4C 08 mm 05 01 F7, where 'mm' is the multitimbral part.)

When you turn the Portamento Switch on for a polyphonic voice, the pitch will glide to every newly played note from the previous note according to the Portamento Time parameter, regardless of whether or not the notes overlap. This means that the exact order you play the notes in chords makes a difference to how the pitch glides happen. For example, let's say that you first played a two-note chord of C3 and G3, and then released that chord before pressing down the same chord again. Given that the MIDI protocol is serial, and that it is therefore impossible for any two notes to happen simultaneously, in each chord one note must happen before the other. If you hit the C3 fractionally before the G3 in each case, then each C3 would glide down from the G3 in the previous chord, and each G3 would glide up from the C3 in its own chord. If a third chord were then played, where the G3 this time preceded the C3, the G3 wouldn't glide at all from the G3 in the second chord, but the C3 would still glide downwards, this time from the G3 in its own chord.

Although the portamento response of polyphonic voices is simple in theory, the results with chords in practice can be rather haphazard, with pitch glides sprinkled all over the place. There is a certain amount you can do to make things more predictable by programming the note order in you chords carefully, but some of the better-specified XG modules have another tool at your disposal for controlling the pitch glides: the Portamento Control parameter. This is accessed using MIDI Continuous Controller number 84 (which is Bn 54 xx in hexadecimal, where 'n' is the MIDI channel and 'xx' the data value) and acts as a kind of 'silent note' for the purposes of tweaking portamento pitch glides. The Portamento Control value specifies which MIDI note number the next MIDI note should glide from. For instance, you could defeat any pitch glide to a C3 note using a Portamento Control message with a data value of 60 — remember that, as far as Yamaha are concerned, middle 'C' is called C3 and has a MIDI note number of 60.

Even with the Portamento Switch on, each note in a polyphonic voice will always trigger its own envelope, regardless of whether the note overlaps with any other notes already sounding. With a monophonic voice, however, turning the Portamento Switch on stops the envelope re-triggering when you play a legato line (in other words, where the notes overlap). If you want no pitch glide, then simply set the Portamento time to zero, which still leaves the legato envelope action in place. If you want pitch glide, but you want the envelope to re-trigger for each note, then make sure that the notes stop just short of overlapping in your MIDI sequencer. It's probably also worth mentioning that the Portamento Control only affects the initial note in legato monophonic lines.

Combining Velocity Responses

The previous example showed how voices in a layered sound could be set up to respond differently to different note lengths, but you can also make the different layers respond very differently to velocity by using the two Velocity Sense parameters: Depth and Offset. Figure 1 shows how these two parameters affect the response of a given voice to the complete range of MIDI note velocities from one to 127 — the default response is shown as the centre of the nine graphs.

Figure 1. The effects of the Velocity Sense Offset and Velocity Sense Depth settings.

These different responses provide a lot of flexibility in practical terms. For example, for your first layer in a composite sound you could set Depth to its minimum value and Offset to 40, so that the layer responds to all incoming MIDI notes as if they had velocity values of 40. Then you could set the Offset of a second layer to its minimum value and the Depth to its maximum, so that the layer would only respond to MIDI notes with velocities higher than 64. Now if you combined these layers with another which used default Velocity Sense settings, you would get the following result: at low velocities the first layer would dominate over the third layer, and the second layer would be silent; by the velocity value of 64, the third layer would dominate over the first, with the second layer still silent; and at higher velocity values the third layer would add progressively to the second, until both layers were equally strong at maximum velocity. This kind of setup would perhaps suit a bass sound, where you want the sub-bass weight to remain consistent (first layer), the more audible low and high mid-range parts of the sound to respond naturally to velocity (third layer), and a stronger attack element to be introduced for accents (second layer). Juggling different velocity responses can seem a little daunting at first, but it allows you timbrally to differentiate MIDI notes of different velocities in much more interesting ways than those enshrined within the preset XG multisamples.

Here's a practical example to give you a feel for how this technique can offer more scope for expression. The electric piano sound in Example 3a has been set up with its Velocity Sense Depth at 40 and its Offset at 100. These parameter values have the effect of reducing the sensitivity to velocity, which keeps the level fairly consistent.

As it stands, this sound is a bit lifeless and cheesy, especially given the limited velocity response, so I'm now going to add a layer to dirty up the sound at higher velocity values. You can hear this part on its own in Example 3b — it's a mellower electric piano patch which has been sent to the Amp Simulator Variation effect. The voice's Dry Level parameter has been set to zero so that you only hear the output of the effect, and the heavy overdrive does a good job of turning the line into a mush! However, you'll also notice that this sound is responding much more selectively to the MIDI notes. This is because I've set the Velocity Sense Depth to 100 and the Offset to 50, which gives a velocity curve a little like that at the bottom right of Figure 1 — very soft MIDI Notes hardly register at all, but as the note velocities increase, the voice becomes louder much more quickly than with default settings.

You can hear the combined result in Example 3c, where the clearer electric piano sound provides the pitching and definition for the composite, and the distorted sound gives a bit of attitude and a more expressive timbral change with velocity. This is a sound which simply wouldn't be possible in XG without layering, but it's much more fun to play than most single XG voices and easy enough to set up.

That said, there are some practical points to mention here. Firstly, although I have isolated the two layers for demonstration purposes in Examples 3a and 3b, I actually set up the synth parameters for the two voices from scratch while playing the composite sound from the keyboard. This is important, because adjusting the relative Velocity Sense settings, effects send levels, and volume levels is a delicate balancing act which is most easily done by ear.

The second thing to mention regards Example 3 in particular. Because an XG voice's send to the Variation effects block is post-fader when you're not in the global Insert Variation Mode, adjusting the main Volume parameter also adjusts the send to the Amp Simulator, which of course alters the tone along with the level. To control only the level of the effect, use the Variation Return parameter instead. This parameter can be accessed using the hexadecimal SysEx string F0 43 10 4C 02 mm 56 xx F7, where 'mm' is the multitimbral part and 'xx' the effect return level (which defaults to a value of 64).

Switching Timbres From The Keyboard

If you assign several voices to a single MIDI channel, but set each voice to respond only to a single note number, you can use the keyboard to control timbre rather than pitch — each note plays a different sound, in much the same way as in an XG drum kit. The parameters you need in order to cordon off the required note per voice are Note Limit Low and Note Limit High, and these parameters can be accessed by the hexadecimal SysEx strings F0 43 10 4C 08 mm 0F xx F7 and F0 43 10 4C 08 mm 10 xx F7 respectively, where 'mm' is the multitimbral part and 'xx' the MIDI note number.

The concept of mapping different voices across the keyboard can be used to create a flexible step sequencer, simply by triggering a series of XG voices from a repeating scale in your MIDI sequencer. Just as on an analogue step sequencer, the step pitches can be individually defined by using the Note Shift parameter for each XG voice. However, whereas an analogue step sequencer will rarely offer more than a couple of control-voltage outputs per step, each voice in this XG step sequencer can be completely transformed using all of the XG synthesis and effects parameters. Furthermore, you can edit the MIDI trigger sequence to create complex patterns of steps which go far beyond the capabilities of most traditional step sequencers.

Figure 2. In Example 6, six different voices are set to the same MIDI channel, and then each one is restricted to one note by setting the Note Limit Low and Note Limit High parameters appropriately.

To get a grasp on some of the possibilities available here, have a listen to Example 6a, where I've programmed six identical XG voices to respond to one MIDI note number each and I've then triggered them in a complex pattern using a repeating 16-note MIDI sequence. Despite a few small velocity swells, this is hardly the greatest step-sequencer part of all time, but you can improve it dramatically by selecting slightly different patches for each voice, as in Example 6b.

But the best is still to come. Because all of the voices are responding to the same MIDI channel, a single MIDI Continuous Controller message will adjust them all. Messing about with the filter settings immediately makes things much more interesting in Example 6c, and various effects rides (using Tunnel, Celeste, and Phaser algorithms) transform the sound from moment to moment in Example 6d. And now the icing on the cake: by using the hexadecimal SysEx string F0 43 10 4C 08 mm 23 58 F7 (where 'mm' is the multitimbral part again) for each voice, you can set the pitch-bend range for all of the voices to two octaves, which means that you can sweep the pitch of the sequence around while it's playing. In Example 6e I've waggled the pitch-bend control around, and I might even have laughed maniacally while I was doing it...

And the fun doesn't stop there. You could set the Note Limit parameters to provide, say, an octave of each voice instead of a single note, which gives you limited pitch control from the keyboard alongside the timbral switching. Plus, there's still scope for independent real-time control of the individual voices using SysEx messages, which can be directed to the different multitimbral parts regardless of the MIDI channels they're set to receive, as discussed last month.

Full-fat Pad Sounds

So far I've been looking at layering different sounds together, but there are some cases where you might want to layer the same sound against itself. One of the problems with synths which are based on samples is that the pad sounds in particular can tend to sound a bit static and boring. And easy way to liven them up is to layer two or more voices on each note and then detune the voices against each other. This is similar to the way you might layer oscillators in an analogue synth, but the differences here are that there is a much larger range of waveforms available and that each voice can have completely independent synthesis and effects settings.

I've deliberately chosen one of the most monotonous synth-style patches I can find to create the pad part in Example 4a, in order to highlight the kind of difference that this technique can make. In Example 4b, I've layered two further voices with it, using exactly the same synth settings, with the exception that the second layer has its Detune parameter set to -0.8Hz and the third layer has its Detune parameter set to +0.6Hz. Already the layered sound is more involving than the unlayered one, as the different layers interfere with each other over time.

But there's much more you can do. If you pan the second and third layers to opposite sides, this widens the sound and makes the interference patterns move around the stereo image, as in Example 4c. You can also add more movement by setting up subtle pitch LFOs for each of the layers, but with slightly different settings for each, which gives the more lush sound of Example 4d. Then you might adjust the Pitch EG for each part so that each note starts out of tune and then drifts onto a more stable pitch, as in Example 4e. And this is all before you've even thought about having different filter, envelope, or effect settings for the different layers... Who knows? Maybe you might even be able to find a use for that stupid Bagpipe patch after all!

Livin' On A Layer

To round things off for this month, I've combined all the above example sounds into Example 5, which you can also download as an XG MIDI file from the SOS web site if you want to have a look at exactly how I've set everything up. You'll notice that Example 5 also includes an extra solo treble synth line, which is there to show that the Trumpet patch doesn't have to be unusable just because is sounds cheesy in its basic form! You can transform cheesy sounds into something more inspiring by using them out of their normal range, tweaking the synthesis parameters, and using real-time controllers and MIDI delays.

Next month, I'll be looking at using the ideas from the first two parts of this series to do weird real-time modulations with layered sounds. Plus, I'll show you how to morph between completely different sounds while you're playing.

Go to: Creative Synthesis With Yamaha XG (Part 1 of 3)
Go to: Creative Synthesis With Yamaha XG (Part 3 of 3)

Published May 2004

From the same manufacturer