There's more to plug-ins than audio, as we discover when digging deep into the world of MIDI plug-ins and effects.
There's a lot of excitement these days about plug-ins, whether they're audio processors or soft synths. But the humble MIDI plug-in (which Cakewalk calls MFX), long a fixture in Cakewalk products, and now supported in Cubase SX, also deserves some attention. Granted, it may not be quite as sexy to massage MIDI data as it is to warp audio beyond all recognition or play a dead-on accurate emulation of some impossible-to-find vintage synth, but MIDI plug-ins definitely have their uses. We already covered one MIDI plug-in application, Sonar's Session Drummer, in the August 2002 Sonar Notes — and now it's time to go deeper.
MIDI plug-ins work very much like the audio kind: they can process a track or input signal in real time, or be applied destructively to anything from individual clips to complete tracks. There are three ways to process MIDI data inside Sonar with a MIDI plug-in:
- In the Track view, right-click on a track's FX field, and navigate to the desired plug-in.
- In the Console view, right-click on the black FX bin just below the track name at the top, and navigate to the desired plug-in.
- Select the clip(s) to be processed, then go Process / MIDI Effects and choose the desired plug-in.
Options one and two happen in real time: as you play the input device or track, the MIDI effect processes the data. To make this processing permanent, select the clip(s) to be processed and go Process / Apply MIDI Effects.
Option three works somewhat differently. When the effect appears, it has an 'Audition' button. Click on this to hear the effect applied to a portion of the data. If the Piano Roll view is open, Sonar will re-draw the data to show the effect of adding the plug-in (for example, if you're using the Echo Delay plug-in, you'll see the additional echoed notes). These changes are also visible in the Clips pane.
When you click on 'Stop', the clip ceases playing, and the data reverts to how it looked before. Click 'Cancel' and the selected data remains unchanged. Click 'OK' to apply the effect to the data permanently.
Actually 'applying' MIDI effects is crucial if you save your file as a Standard MIDI File, because MIDI effects are not part of the SMF spec. When you deliberately apply the effects to a track, saving the file makes the track's data reflect the results of any MIDI processing.
- In Sonar's Synth Rack view, you can step through the synth patches using the '-' and '=' keys to decrement and increment patch numbers, respectively.
- Will you need to pay for a Sonar upgrade? Generally, versions where numbers change to the right of the decimal point are free upgrades; if numbers change to the left of the decimal point, it's a paid upgrade.
- To change the Draw tool in the Piano Roll view to an Erase tool, just hold down Alt. Memorise this and it will save you lots of time!
- Go Transport / Record Options to determine whether material being recorded to an existing track will replace old data or blend with it.
Sonar comes with several MIDI plug-ins, of varying usefulness. Here's a brief rundown:
- Chord Analyzer: This looks at MIDI input or track data every 1-128 MIDI ticks (you set the 'sampling rate'), displays the notes being played on a keyboard and on a staff, and tells you what chord it recognises. If the chord is ambiguous (for example, the voicing is the same for an F-major chord or A-minor+5, 2nd inversion), the analyser will display all voicings it recognizes. This plug-in won't make a profound difference to the course of Western civilisation, but it's a useful learning tool.
- Echo Delay: If I could keep only one of the MIDI FX, this would be it. You can specify delay in ticks, milliseconds, or rhythmic value (or tap tempo), and also set the number of echoes, the velocity decay rate from one echo to the next, whether echoes are transposed (chromatically or diatonically, up or down, and the interval), and — something you won't find on standard plug-ins — specify a Swing value. Cut this baby loose on 50 percent Swing and you'll be impressed. Echo Delay makes it particularly easy to create those staccato, 'dugga-dugga-dugga' synth parts that serve as rhythmic underpinnings to many dance tracks. The only downside is that long, languid echoes eat up synth voices.
- MIDI Event Filter: You may already be familiar with the Edit / Select / By Filter option, which applies editing only to specific types and/or values of events. The MIDI Event Filter is a quicker way to achieve some types of filtering, as you can easily create presets governing which data to remove (for example, Channel Aftertouch or Key Aftertouch), as well as defining specific value ranges (such as all Key Aftertouch events with values under 10, or all notes with durations under five ticks). I find the way to get the most out of this plug-in is to create presets that take care of common editing situations, such as removing unwanted aftertouch data.
- Arpeggiator: This is the MIDI plug-in I should like the best, but it has a couple of problems. Although it works fine with real-time input, it does not operate properly on data within a track. Furthermore, when applied it does create arpeggiation — but each note has a duration of a single tick, so you generally need to quantise note length to a particular rhythmic value using Process / Quantize. As a result, this is a fairly cumbersome plug-in to use, albeit one with potential if it is cleaned up a little in future versions of Sonar.
- Quantize: Doesn't Sonar already have a quantise function? Yes, but remember the plug-in works in real time. I find this indispensable for doing quick quantisation on, say, a drum part while laying down tracks. The part remains unaltered, so I can take off the plug-in later and do any permanent quantising with a bit more finesse. This plug-in offers what you'd expect from a quantisation process: resolution, strength, swing, window, offset, randomisation, and so on.
- Transpose: This flexible plug-in has capabilities that far exceed the usual Process / Transpose procedure. It will transpose by intervals or diatonically, but can also transpose from one key to another, and change scales in the process, as well as showing which notes are mapped to which target notes. It's possible to create a custom transposition map (which can also serve as a drum mapper if you're not into using Sonar's drum-grid), and constrain notes to a particular scale if they fall outside the 'accepted' range of notes for a given scale.
- Velocity: Offers tricks not possible with Process / Scale Velocity, such as setting all velocities to a constant, scaling to a percentage of the current value, randomising, and limiting range (ie. velocities lower than a certain value are brought up to that value, while velocities higher than another value are reduced to that value). This last function is well suited to 'compressing' the amplitude of MIDI data.
Owners of Cakewalk's Project5 will know that it includes an excellent MIDI plug-in step sequencer called Synchron 32. It's just about to be incorporated into Sonar 3, as it happens (see news pages), but until that's out, you can still use this sequencer within Sonar. It just takes more work because functions 'in the background' with Project5 need to be undertaken manually within Sonar.
Each Synchron 32 pattern can be triggered by a specified MIDI note. If you right-click on the Note Listing, you can specify the lowest trigger note. For example, choose C0 and pattern A1 plays when Synchron 32 receives C0, pattern A2 plays with C#0, pattern A3 plays with D0, and so on.
Enter the note corresponding to the pattern you want to play in the MIDI track being processed by Synchron 32, and extend the note for however long you want the pattern to play (Synchron 32 won't latch to a note). You can trigger multiple simultaneous patterns by entering several notes, allowing you to build up polyphonic step sequences from several monophonic sequences.
A trip to the web will reveal several manufacturers of MIDI plug-ins for Sonar (and also for Cubase SX). One company, MidiFo (www.midifo.com), has released several useful plug-ins, including MIDI LFO, Step Sequencer, and four plug-ins designed to process Continuous Controller signals.
Step Sequencer has much in common with Project 5's Synchron 32 (see box above). Patterns are mapped to notes and, as with Synchron 32, you need to enter a note within the track being processed by the step sequencer to play the pattern. The Midifo sequencer offers up to 64 steps, with independent control over note value, gate and velocity value, and up to four controller values per note. Additional parameters control swing, step length, and loop type (for example, forward, reverse, random). It's also possible to play just a portion of the sequence, by entering a start and end step, and because you can map each of 128 patterns to various notes, playing multiple notes plays multiple patterns simultaneously.
MIDI LFO is a novel and useful plug-in that generates waveforms including sine, square, random, sawtooth, and various harmonic sines. You can also select a step sequence to create more of a sample-and-hold effect from the controlling waveform. Of course, all of this is tempo-sync'd. The output can be continuous controllers, NRPN values, pitch bend, aftertouch, or even SysEx.
One of the presets — an oscillator drift function that adds random pitch changes — gives an idea of this plug-in's versatility. I use MIDI LFO to generate periodic controller waveforms, which are written to the track when you apply the effect. I've always liked the feature in Cubase SX where you can 'draw' tempo-sync'd control curves based on particular waveforms, and MIDI LFO takes this concept further, although admittedly it also takes more work to get where you're going.
The MidiFo Continuous Controller processors are not as novel, but have their uses. Thin CC does what you'd expect — thins out a controller to minimise the odds of MIDI choke, filtering on the basis of time (how close together the messages are) as well as value. Quantize CC is less standard. It quantises the values of a controller to one of several possible values. For example, if you quantise volume into four steps (the maximum is seven), anything falling within a value range of 0-32 would be set to 32, values between 33 and 64 would output at 64, and so on. This isn't always the case, as there are highest and lowest value scaling sliders, but you get the idea. The output will sound 'stepped' with low quantise values, but in some ways that's the point.
Velocity CC outputs the specified controller whenever it receives a note-on command, but with its value scaled by the note-on's velocity. This makes it easy to tie particular controller values to velocity, so that playing hard produces more of some particular effect. Finally, Random CC produces a random value of a particular controller when triggered by either a note-on or note-off command.