Welcome to No Limit Sound Productions

Company Founded
2005
Overview

Our services include Sound Engineering, Audio Post-Production, System Upgrades and Equipment Consulting.
Mission
Our mission is to provide excellent quality and service to our customers. We do customized service.

Monday, August 30, 2021

Logical Editor

 By Mark Wherry

The Logical Editor is made up of three basic parts: the Function Menu, the Filter Condition List, and the Action List. The black status lines underneath the two List boxes show an overview of the expression you're describing with the commands in the respective List, indicating an error if you make a mistake.The Logical Editor is made up of three basic parts: the Function Menu, the Filter Condition List, and the Action List. The black status lines underneath the two List boxes show an overview of the expression you're describing with the commands in the respective List, indicating an error if you make a mistake.

Cubase contains many powerful features for processing MIDI data, such as the Logical Editor and Macros. This month we look at how using them together can create some powerful solutions to potentially tedious problems.

The Logical Editor has been a part of Steinberg's sequencing software products since the days of Pro 24 on the Atari, and its latest incarnation in Cubase SX/SL/SE remains a powerful way to process MIDI data. We've covered an introduction to the Logical Editor in previous editions of SOS, so for a complete refresher, you might want to check out May 2003's Cubase Notes. However, I'm going to start this month's Cubase workshop with a brief overview of the Logical Editor and cover a few points not described in the previous article, in addition to covering some of the same ground for new users. The first example will also be the same, so beginners can read a more in-depth explanation, making this article backwardly compatible if you will(!); after that we'll look at some more complex examples.

Not Quite Aristotle

The basic principle of using the Logical Editor window is fairly straightforward. As with most off-line MIDI processing operations in Cubase, you can use the Logical Editor to process MIDI Parts in the Project window, and in this case you need to specify the MIDI Parts you want to process by selecting them and choosing MIDI / Logical Editor to open the Logical Editor window. Bear in mind that the Logical Editor option will be disabled in the menu if the MIDI Parts you've selected don't contain any MIDI Events to be processed.

You can also use the Logical Editor to process MIDI data in a MIDI editor window. If you have an open MIDI editor displaying MIDI Events with nothing selected, the Logical Editor will process all MIDI Events in the MIDI Part (or Parts if you're displaying multiple Parts in the editor window and have Edit Active Part Only disabled on the editor's toolbar). If you have Events selected in the MIDI editor, only these Events will be considered by the Logical Editor.

The Logical Editor window contains three main elements: the Function Menu, the Filter Condition List, and the Action List. The Filter Condition List specifies which events should be processed, the Action List specifies how the events should be processed, and the command selected in the Function Menu defines the mode of operation for the Logical Editor and precisely how the Filter Condition and Action Lists should be used. There are seven different commands available from the Function list:

  • Delete erases all events specified by the Filter Condition List.
  • Transform is the default (and most commonly used function) and modifies the events in the Filter Condition List by the actions defined in the Action List.
  • Insert is similar to Transform, but instead of the filtered notes being modified to produce a different Event, the original Events are kept and the transformed Events are created as new, separate Events.
  • Insert Exclusive is, again, based on Transform, except that notes that do not meet the conditions specified in the Filter Condition List are deleted. Unlike the standard Insert function, this one creates no new Events.
  • Copy is like Insert, but instead of the newly transformed Events being created in same Part on the same track, the new Events are added to a new MIDI Part on a new MIDI track.
  • Extract is similar to Copy, except that any Events matching the Condition List are deleted and the transformed versions are created in a new MIDI Part on a new track.
  • Select selects any Events that match the Filter Condition List (and if any Events were already selected, deselects any that don't match the condition); the Action List is ignored.

Here is the Logical Editor window showing the preset for transforming the second velocity layer, as described in the main text.Here is the Logical Editor window showing the preset for transforming the second velocity layer, as described in the main text.The Filter Condition List is made up of a series of Lines, where each Line represents one expression that is part of the overall condition (if you have multiple Lines). A Line basically consists of a Filter Target, a Condition, and some data that is in one or more of three columns: Parameter 1, Parameter 2 and Bar Range, although these data columns are never used simultaneously. The Filter Target is a general category, such as a type of Event, the first data property, the length, and so on; the Condition is what evaluates the Filter Target against the data, such as Equal, Unequal, All Types, and Greater Than; and, finally, the data column specifies what the Filter Target should identify. For example, if you were looking for all notes, set Filter Target to Type, Condition to Equal, and Parameter 1 to Note.

Each Line in the Filter Condition List can only evaluate one Filter Target against one element of data, so if you wanted to find all notes equal to C3, you couldn't simply add a note pitch in the Parameter 2 column of the Line I just described. To do this would require two expressions — type is equal to note, and pitch is equal to C3 — so you'll need two Lines in the Filter Condition List. Add another line by clicking the Add Line button next to the upper List and then, on the second Line, set the Filter Target to Value 1 (which should automatically change to Pitch in the Line), make sure Condition is set to Equal, and set Parameter 1 to C3.

The Action List is very similar to the Filter Condition List in that it comprises a series of Lines that tell the Logical Editor what to do with the Events identified by the Filter Condition List. Each Line is again split up into several columns: an Action Target, an Operation, and some data (Parameter 1 and Parameter 2). Action Target specifies which part of an Event should be processed, whether it's the type, a property or value (such as pitch); Operation sets what you want to do to the Action Target, such as add, set it equal to something, and so on; and the data specifies what the Operation applies to the Action Target. For example, to transpose found notes up an octave, the Action Target would be Value 1, Operation would be Add, and Parameter 1 would be 12 (semitones).

Additional Lines can be added to (or deleted from) the Action List, but bear in mind that while each Line in the Filter Condition List is an expression of one overall condition, each Line in the Action List operates independently, one after the other, like a recipe. So if you had two Lines that were both 'Value 1 Add 12', this would be the equivalent of one Line that states 'Value 1 Add 24'.

Once you've set the Function of the Logical Editor, specified the Events to operate on with the Filter Condition List, and set up what happens to the identified Events with the Action List (unless you've chosen Select as your Function), you press the Do It button for the Logical Editor to work its magic.

Cubase News

Hypersonic 2 features an updated user interface that allows full access to all the parameters of the underlying sound engine.Hypersonic 2 features an updated user interface that allows full access to all the parameters of the underlying sound engine.Of interest to Cubase users this month will be Steinberg's announcement of Hypersonic 2, an update to the popular virtual workstation released by Steinberg and Wizoo at the end of 2003 (reviewed SOS February 2004). Although the original point of Hypersonic was to be an economical all-purpose sound source that you could get good results with even if you were using an older computer system, many people wanted the gigabyte sound library to compete with products like IK Multimedia's Sampletank. So Hypersonic 2 comes with a 1.7GB sample library (up from the original 250MB content) with 800 new patches and revised versions of the original 1000 presets supplied with Hypersonic 1.

Hypersonic 2 also includes Hyperphase, a rather good polyphonic arpeggiator that includes 200 phrases, and the ability to import your own as a Standard MIDI File. What's more, the updated user interface makes it possible to edit every parameter in Hypersonic's different sound engines, which you couldn't do in the previous version. One user interface change I didn't like so much was that the semi-circle value displays in the Mix page of version 1 have been replaced with more traditional horizontal rectangular bars, which personally I didn't find so effective — but if that's the only gripe I have, it's probably not a serious criticism of the product!

15-To-1

I recently encountered a curious problem when a composer I was working with needed to use newer versions of some multisampled orchestral instruments, featuring many velocity layers, which were being played back via MIDI from various Cubase Projects. The composer in question is a meticulous programmer and had balanced the velocity layers very precisely so the appropriate samples within the instrument were triggered; but in the newer versions of the instruments the velocity ranges had changed, even though the samples were the same. So the problem was how to rebalance the velocities used for notes that had been programmed with one version of the instrument so they would play back using the same samples in the new versions. And since the Cubase Projects that needed altering were large and numerous, this was definitely a job for the Logical Editor.

One of the instruments in question had six velocity layers and the old version had these velocity layers programmed with the following splits: 0-30, 31-52, 53-74, 75-98, 99-113 and 114-127. And as I explained, the new version had the velocity layers programmed slightly differently, so the new splits were as follows: 0-80, 81-90, 91-100, 101-110, 111-120, and 121-127.

Cubase's Logical Editor is a great way of processing MIDI data, but its Transform feature is only capable of transforming one condition into one result. An example of one condition would be 'find all the velocities between 0 and 30' and an example of one result would be 'scale these velocities to 0 and 80'. If I had multiple conditions for different velocity layers, they'd all have to be processed by the same Action List, so all velocities would end up between 0 and 80, which would be useless. Therefore, each velocity layer transformation has to be dealt with using a separate Logical Editor operation; so what we'll end up learning here is how to combine multiple Logical Editor operations into one command to create more powerful (and convenient) Logical Editor commands.

Once you've created Logical Presets, you can combine them together into one command by creating a Macro in the Key Commands window.Once you've created Logical Presets, you can combine them together into one command by creating a Macro in the Key Commands window.The first step is to open the Logical Editor window by selecting MIDI / Logical Editor. Start by selecting the Init Preset (click on the Presets pop-up menu and choose 'init') to make sure any previous operations in the Logical Editor are reset, and make sure that the Transform Function is selected. The first Line in the Filter Condition List should read '(Type Is Equal Note)', and next we need to set the range for the incoming velocities by adding two further Lines to the List, clicking the Add Line button twice.

Set the Filter Target for the lower two Lines to 'Value 2' by clicking underneath the column in the appropriate row and choosing 'Value 2' from the pop-up menu. Once you make the selection, you should notice how Cubase will display this entry as Velocity in the Line. Next, set the Condition on the second row to 'Bigger or Equal' and the third row to 'Less or Equal', and enter the velocity boundaries for the first velocity layer (0 and 30) as Parameter 1 on the second and third rows.

Now the Filter Condition List has been set, we need to set up the operation to scale velocities between 0 and 30 to 0 and 80 instead. To do this, on the first Line of the Action List, Action Target should be set to Value 2, Operation to Multiply by and Parameter 1 to 2.67. To get this scaler value (2.67) you divide the range of velocities in the destination (80) by the number of velocities in the source (30), and I rounded the result to two decimal places, which is easily accurate enough for the seven-bit integer values used to describe velocity in the MIDI protocol. And that's it. Store the Preset by clicking Store, entering a name, and clicking OK, and we have a Logical Editor operation that can scale velocities between 0 and 30 to 0 and 80.

Creating an operation to scale the next velocity layer is almost the same: the process of setting up the condition is identical, except Parameter 1 in the lower two rows should now be 31 and 52 to represent the range of the second velocity layer. The most significant change this time is that the Action List is a little more complicated, because we need to first subtract the lowest velocity (31) from the velocity of the note we're processing, so we can scale the velocity correctly, and then add the value of the lowest velocity for the new instrument to this number so that it's put back into the correct range again. Therefore, the Filter Condition List should now consist of three Lines: 'Value 2 Subtract 31', 'Value 2 Multiply by 0.43', and 'Value 2 Add 81'. 0.43 is the scaler because it's the division between the range of velocities in the old second later and the range in the new second layer ((90-81=9)/(52-31=21)=0.43).

So now we have two Logical Editor Presets to deal with the first two velocity layers, and by substituting the numbers from the remaining velocity layers you should be able to build presets for the other transformations, as they're all based on the second layer Filter Condition and Action lists described in the previous paragraph.

Countdown

Once you've finished, you'll have ended up with six different velocity layers with which to process each MIDI note where you want to rescale the velocities. To execute all these operations simultaneously you can build a Macro (which we covered in January 2003's Cubase Notes), as Logical Editor Presets appear in the Process Logical Preset Key Commands category. The important thing is that the Presets are run in reverse order, so you process the highest velocity layer first — otherwise, each Preset would operate on the results of the previous operation, so a small velocity could end up scaling to 127 if you weren't careful. By running the Presets in reverse order, there's less chance of this happening.

So to build the Macro, open the Key Commands window (File / Key Commands), click Show Macros, click New Macro, type in a name for the Macro and press Enter. Find the Logical Presets you created in the Process Logical Preset category in the Commands list and select the first Command to add to the Macro (the last Preset you created, the one to process the highest velocity layer). Now, click the Add Command button to add that Logical Preset to the Macro, and then repeat this process for the rest of the Logical Presets. When you've finished, you can assign a Key Command to the Macro itself if you want, or just click OK to close the Key Commands window.

If you haven't assigned a Key Command, you can run the Macro by selecting it from the Edit / Macros submenu — just remember to have some MIDI Event selected before you run the Macro, and also to make sure the Logical Editor window itself is closed. Triggering Logical Editor Presets via Key Commands or Macros with the Logical Editor window open will select those Presets for editing in the Logical Editor rather than actually running the process on available MIDI data.

Hopefully this will have helped you to get a better handle on the Logical Editor, and will have made you think about the possibilities of combining Logical Editor Presets with Macros. Join me next month for some action in the exciting world of Boolean operators...


Published January 2006

Friday, August 27, 2021

Q. What determines the CPU reading in Cubase SX?

 By Martin Walker


I remain baffled by the CPU load in Cubase SX 2 (as shown in the VST Performance indicator). I'm particularly curious to know why in my larger projects the indicator shows a constant load (typically 80 percent or more) even when I'm not playing anything back! What exactly is the CPU doing when nothing is happening in the project? My projects typically have 15 to 25 audio tracks, five to 10 virtual-instrument tracks and a couple of MIDI tracks, with five or so group channels and maybe a couple of FX Channels. Some of the channels have an insert effect or two, typically a compressor or gate, and there's a couple of aux channels for send effects.

SOS Forum Post

PC music specialist Martin Walker replies: When Cubase isn't playing back, the CPU overhead is largely down to the plug-ins, all of which remain 'active' at all times. This is largely to ensure that reverb tails and the like continue smoothly to their end even once you stop the song, and it lets you treat incoming 'live' instruments and vocals with plug-ins before you actually start the recording process. However, this isn't the only design approach — for instance, Magix's Samplitude allows plug-ins to be allocated to individual parts in each track, which is not only liberating for the composer, but also means that they consume processing power only while that part is playing.

Freezing tracks, adjusting the buffer size and using single send effects instead of multiple inserts can all help reduce CPU overhead.Freezing tracks, adjusting the buffer size and using single send effects instead of multiple inserts can all help reduce CPU overhead.

Of all the plug-ins you'll be using frequently, reverbs are often the most CPU-intensive, so make sure you set these up in dedicated FX Channels and use the channel sends to add varying amounts of the same reverb to different tracks, rather than using them as individual insert effects on each track. You can do the same with delays and any other effects that you 'add' to the original sound — only those effects like EQ and distortion where the whole sound is treated need to be individually inserted into channels.

The other main CPU drain for any sequencer when a song isn't playing back comes from software synths that impose a fixed overhead depending on the chosen number of voices. These include synth designer packages such as NI's Reaktor and AAS's Tassman, where their free-form modular approach makes it very difficult to determine when each voice has finished sounding. However, fixed-architecture software synths are more likely to use what is called dynamic voice allocation. This only imposes a tiny fixed overhead for the synth's engine, plus some extra processing for each note, but only for as long as it's being played.

If you use a synth design package like Reaktor or Tassman, try reducing the maximum polyphony until you start to hear 'note-robbing' — notes dropping out because of insufficient polyphony — and then increase it to the next highest setting. This can sometimes drop the CPU demands considerably. Many software synths with dynamic voice allocation can also benefit from this tweak if they offer a similar voice 'capping' preference.

Anyone who has selected a buffer size for their audio interface that results in very low latency will also notice a hike in the CPU meter even before the song starts, simply due to the number of interrupts occurring — at 12ms latency the soundcard buffers need to be filled just 83 times a second, but at the 1.5ms this happens 667 times a second, so it's hardly surprising that the CPU ends up working harder. For proof, just lower your buffer size and watch the CPU meter rise — depending on your interface, the reading may more than double between 12 and 1.5ms. You'll also notice a lot more 'flickering' of the meter at lower latencies. If you've finished the recording process and no longer need low latency for playing parts into Cubase, increase it to at least 12ms.

Finally, if some of those audio or software synth tracks are finished, freeze them so that their plug-ins and voices no longer need to be calculated. Playing back frozen tracks will place some additional strain on your hard drive, but most musicians run out of processing power long before their hard drives start to struggle. 


Published February 2006

Wednesday, August 25, 2021

Creative Use Of Effects Within Cubase SX

As described in the main text, SX provides very flexible routing options when using audio effects.As described in the main text, SX provides very flexible routing options when using audio effects.

The world is awash with plug-in audio effects, but don't miss out on those included within Cubase SX — there are some excellent creative possibilities on offer.

Far be it from me to admit to a touch of 'sequencer envy', but one of the things I've enjoyed most about the new DVDs that have accompanied SOS every few months has been Paul White's practical and creative tips on using the audio effects built into Logic, as demonstrated in the 'Experimental Guitar Processing' and Studio SOS pieces on November's DVD002 [Note: these DVDs have long-since sold out]. As an ex-Logic user (I switched to SX soon after Apple took over Emagic), the only area of SX that has ever left me with any regrets has been that of the bundled audio effects plug-ins where, frankly, Logic's offerings seem a little slicker, certainly in appearance. However, Steinberg's more recent additions — such as the Tonic filter and Roomworks reverb — are certainly impressive to look at. And anyway, it is the sounds we should be interested in rather than the looks. So, inspired by Paul's examples using Logic, what sort of creative sound manipulation possibilities are possible with the audio effects supplied with SX, and what is the best way to configure SX to experiment with these effects?

On The In

The Chopper plug-in using the Swirl preset to provide a smooth tremolo effect.The Chopper plug-in using the Swirl preset to provide a smooth tremolo effect.

While there are an almost unlimited combination of effects that you might wish to apply if you come over all experimental with your audio, perhaps the first decision that requires some thought is the position within the signal chain to place them: either you can record your audio through them, so that you can hear the effects as you play and/or sing a part into SX; or, alternatively, you can record the audio first and then apply the effect as part of the mixing process. Fortunately, SX, like most modern sequencers, offers plenty of flexibility to accommodate both of these situations. As Paul demonstrated in his Studio SOS piece with Bella Saer, there is all sorts of fun to be had with effects applied at the input stage, so let's start there...

Provided that you have a system that can achieve reasonably low audio latency, perhaps the biggest advantage to being able to hear the effects as you play and record a particular part is that you can adjust your playing to interact with the effects — essentially, you are 'playing' the effects as an element of the musical performance. However, depending upon how you route the audio through the SX mixer, you can either 'print' the effects (that is, record them as part of the audio track) or you can simply monitor them as you play, recording the performance 'dry'. This latter route offers greater flexibility as the same effects can then be applied to the part during the mixing stage, but you can continue to fine-tune them so that they work to their best within the complete musical arrangement. By the way, before attempting the examples described below, it is probably best to switch off any Direct Monitoring provided by your audio interface.

Add a touch of wah-wah with Metalizer.Add a touch of wah-wah with Metalizer.

These different approaches can be illustrated via the Mixer screenshot above. This shows a simple SX Mixer with two input channels, three audio tracks, an FX channel and the stereo output channel. If we wished to simply record the effects as part of the audio track, then a combination of Input Channel two and Track one would be most suitable. Here, a series of effects have been placed as Inserts on the input channel. (I'll come back to this particular set of effects in a minute but, for the moment, let's concentrate upon the audio routing.) In order to hear the effects, the Monitor button (the small speaker icon located next to the track's Record button within both the Mixer and the Arrange windows) needs to be engaged. This enables software monitoring and, as this means your audio is passing through SX and the various effects, before being sent via the SX outputs to your amp and speaker monitor system, it really requires a computer system capable of fairly low latencies — although, these days, almost all modern Macs and PCs with suitable soundcard/driver combinations ought to be up to the task. Anything that is recorded to Track one will then be 'as heard' — including all the effects.

If you would rather just monitor the effects with a view to being able to fine-tune them later as part of the mix process, then two alternative signal routings are available. If Track two is armed for recording and the Monitor switch engaged, the insert effects placed on this channel of the mixer will be heard as you play, but only the 'dry' signal will be recorded. On playback, the insert effects are applied again, so the end result is identical to what was heard when recording the original performance. The advantage is, however, that the effects can subsequently be tweaked if some adjustment is required.And top it off with some warm overdrive via the Tonic filter.And top it off with some warm overdrive via the Tonic filter.

If you wish to apply the same series of effects to several audio tracks, placing them as a series of inserts into those tracks is obviously going to chew up further CPU resources. In this case, it is more efficient to use the combination shown in Track three and the FX Channel. Here, Track three has its Monitor switch engaged and its first Send control is routing the signal to the FX Channel. Again, the dry signal is recorded and, on playback, the dry signal is again sent to the FX Channel so that the effects are re-applied. This effects chain could, however, also be used to serve any other audio tracks that require the same processing options, saving replication of the effects plug-ins (and therefore CPU grunt) within each track.

There is one other thing worth noting about Track three; the Send has the 'pre-fader' switch activated (illuminated orange). This means that the amount of the input signal fed to the FX Channel is controlled only by the FX send control and it is totally independent of the main channel fader. This is helpful, as it means that the channel fader can be used to set an appropriate balance between the dry signal and that produced by the effects chain. Lowering the channel fader to the bottom of its travel will therefore, effectively mute the dry signal so only the output from the effects will be heard — great if you are after something a little more extreme!

Going Free

One of the examples Paul White used in his Studio SOS visit to Bella Saer was chaining a pitch-shifter (set to plus one octave) and reverb to process a guitar input. This produces an almost ghostly, synth-like sound that can sit behind the guitar part. While SX features excellent pitch- and tempo-shifting for off-line processing of audio, unfortunately it does not feature a dedicated pitch-shifter plug-in for real-time use. Of course, SX users should not despair, or feel envious of their Logic-using friends — there are plenty of third-party pitch-shifters (and an almost endless supply of other) plug-ins available via the web. And if you are happy to deal with the occasional bit of flaky coding(!), there are all sorts of freeware and shareware VST plug-ins to be downloaded.

While a quick search on Yahoo or Lycos will soon turn up a host of possible links, a couple of suitable starting points would be the software sections of Harmony Central (www.harmony-central.com/Software) or the KVR Audio web site (www.kvraudio.com). The latter is dedicated to information and news on all forms of audio plug-ins, whether they be VST, DirectX or Audio Units. It includes plenty of interesting and useful information and links to both commercial and shareware/freeware plug-in effects.

On The Chain Gang

So much for the routing, what about the effects themselves? The example included in the main screenshot is based upon a chain of ChopperMetalizerTonicRoomworks and Dynamics plug-ins. This is a combination that I find can work really well with a guitar input but, if the dry guitar signal is kept at a low level (using the Track three/FX Channel combination described above), some very synth-like sounds can be created. In this chain, Roomworks and the Dynamics module are simply being used to provide a little ambience and to add a noise gate to clean up the output — the bulk of the 'sound' is provided by the Chopper (giving a smooth tremolo effect), Metalizer (creating a wah-wah effect) and Tonic (adding some overdrive) plug-ins.

Place the MIDI Gate plug-in as an insert effect on the audio track that you want to process.Place the MIDI Gate plug-in as an insert effect on the audio track that you want to process.

Set the MIDI output to MIDI Gate for the MIDI track used to control the MIDI Gate effect.Set the MIDI output to MIDI Gate for the MIDI track used to control the MIDI Gate effect.As shown in the individual screenshots, all three are based upon presets supplied by Steinberg. Both Chopper and Metalizer are being sync'ed to the Project tempo, although at different values (1/16 and 1/1 respectively). The result of this lot is a very rhythmic sound with plenty of movement in the stereo image and a nice warm overdrive. If you completely remove the dry guitar sound, this chain works well with muted arpeggios, sustained power chords or rapid strumming — just watch the final output levels from the FX Channel so that no nasty clipping reaches your speakers. Incidentally, the Drive preset for Tonic is a nice starting point for warming up any sound requiring a touch more grit — not a substitute for a dedicated amp modelling plug-in such as Amplitube perhaps, but, as with Quadrafuzz, well worth experimenting with nonetheless. Tonic can also achieve tremolo-style 'chopping' effects on its own — just check out some of the other presets.

Top Chopper

The routing option using Track three and a send to the FX Channel is, of course, exactly how you would configure things if you wished to apply some processing to pre-recorded audio during a mix — perhaps just to spice it up a little or perhaps just to see if something conventional such as a guitar or synth part could be suitably mangled to create something a little more off-the-wall.

If you want more control over the type of tremolo-style effect described above, perhaps SX's best weapon is the MIDI Gate plug-in. With any sustained part (perhaps a pad sound or sustained power chords from a guitar), this can be used to create some fantastic rhythmic effects from an audio track. The end result is not unlike that of the Chopper in that a range of tremolo effects are created by the opening and closing of a noise gate. However, with MIDI Gate, the rhythm of the gate's opening and closing is totally controlled via MIDI notes — either from a pre-recorded MIDI track or via live playing from a MIDI input. To make this work requires a number of steps. First, the MIDI Gate plug-in (found alongside SX's Dynamics plug-ins) needs to be placed as an insert effect in the audio track to be processed. Next a MIDI track needs to be created and, via the Inspector, the output of the MIDI track needs to be set to MIDI Gate. If the MIDI track is then selected, once playback is started, any MIDI notes arriving at the MIDI input are used to control the action of the gate, effectively 'chopping' the part on the appropriate audio track.

The MIDI Gate plug-in itself.The MIDI Gate plug-in itself.The MIDI Gate screenshot shows all the controls at zero. With these settings a MIDI Note On message instantly opens the gate while a MIDI Note Off message instantly closes it. This is great for creating strong rhythmic patterns from a simple pad sound. Of the various controls, one in particular is worth experimenting with for slightly different effects. With the Velocity To VCA control set to zero, the gate is either fully open or fully closed when a MIDI note is played and then released. This means that, when open, the loudness of the audio heard is controlled only by the loudness of the original recording. However, as the Velocity To VCA control is shifted further to the right (towards a maximum value of 127), the degree to which the gate opens becomes increasingly controlled by MIDI note velocity — essentially, the MIDI input to the gate is controlling both when the audio is played and its loudness; play softly on the MIDI keyboard driving the gate and the audio will be quieter when the gate opens; play at higher MIDI velocities and the gate will open more fully giving louder output. With a suitable pad sound, this can produce some excellent additional expressive control.

Can I Have More, Please?

Of course, given the range of plug-ins provided with SX, there are plenty of other possibilities for creative, rather than corrective, use of audio effects. This is certainly a topic that can be returned to in a future Cubase column. Hopefully, however, with the various routing options described above and the two short examples provided to whet your appetite, you will be encouraged to get creative and do some experimentation for yourself. A final word of warning — just be careful out there. When exploring the wilder side of any audio plug-in effects chains, do tread carefully with your use of the various filters until you are sure what is happening — don't blow your ears or your speakers! 

Tiny Tips

The Use Up/Down Navigation Commands For Selecting Tracks Only option makes track selection using the cursor keys more straightforward.The Use Up/Down Navigation Commands For Selecting Tracks Only option makes track selection using the cursor keys more straightforward.The Cubase SX 3.1 update has been with us for a little while now, but I'm still finding all sorts of useful things within the new features added. What might appear to be one of the most modest is actually one that I have found most useful. Under the Editing section of the Preferences dialogue, there is now a Use Up/Down Navigation Commands For Selecting Tracks Only option. Selecting this option means that the up/down arrows on the computer keyboard only cycle through the tracks within the Arrange window, rather than also moving between individual events on the track. I find this behaviour much less likely to cause confusion, as it means I'm not accidentally selecting a part when, really, I just want to move between tracks.

A further new option that can considerably speed the workflow is the Scroll To function available in the Project & Mixer section of the Preferences dialogue's Editing page. This has a number of different settings that may suit different users depending upon how they work, but the setting I prefer is Channel. This causes the display within the Mixer window to automatically scroll to the channel for the track currently selected within the Arrange window. If you flip between the two windows a lot during the editing and mixing of a complex project, this avoids a lot of scrolling back and forth within the Mixer window — very neat! 



Published February 2006

Monday, August 23, 2021

Logical Editor

 By Mark Wherry


The Logical Editor supports simple Boolean operators to facilitate the building of more complex expressions in the Filter Condition List.The Logical Editor supports simple Boolean operators to facilitate the building of more complex expressions in the Filter Condition List.

We delve into the Boolean operations in the Logical Editor, offer some tips for entering numeric values in the Transport Panel, and take a first look at Cubase running on dual-processor, dual-core systems.

In January's edition of Cubase Techniques we began an in-depth look at Cubase's Logical Editor, a powerful way of processing MIDI data using logical operations. Although we were able to carry out some fairly advanced functions when combining Logical Editor Presets with Key Commands and Macros, the actual conditions we were using to select certain MIDI Events in the Filter Condition List were fairly straightforward. However, in order to offer more complexity in how each line of the Filter Condition List is used to build an expression, you can use Boolean algebra to build sets of conditions and express how one set relates to another.

If the thought of reading about Boolean algebra in Sound On Sound is somewhat unappealing, don't worry: the amount you need to know to make use of the Logical Editor is minimal. However, should you want to learn more about this subject, an easy-to-read book I'd recommend that doesn't require a degree in discrete mathematics is Charles Petzold's Code (ISBN: 0735611319), which covers this and many other related topics.

Transport Trickery

The Add window enables you to add an amount of time to the current position of the Project Cursor and Left and Right Locators if you press '+' on the numeric keypad when editing a time value in the Transport Panel.The Add window enables you to add an amount of time to the current position of the Project Cursor and Left and Right Locators if you press '+' on the numeric keypad when editing a time value in the Transport Panel.A tip that we previously covered in Cubase Technique was that to enter the position of the locators on the Project Cursor numerically, you can press either Shift+L, Shift+R, or Shift+P to trigger the Input Left Locator, Input Right Locator or Input Position Key Commands respectively, enter the time (using the left and right cursor keys to navigate between the different parts of the location value) and press Return. However, once you have triggered one of the Input transport commands, you can press '+' on the numeric keypad to open the 'Add' text input window, enabling you to enter a time value that will be added to the current time.

For example, if the Project Cursor is at 5.1.1.0 and you press Shift+P (Input Position), followed by '+', type in 5 and press return, the Project Cursor will be set to 10.1.1.0. Although you can't press the '-' key on the number keypad in the same way to enter a negative value, you can enter a negative value in the Add window that appears when you press the '+' key instead. This method works for the Left and Right Locators as well, and while the Secondary Time Display doesn't have an 'Input' Key Command, if you are editing this Time Display you can still use the addition function we've been describing.

The only caveat to the Add feature is that it doesn't work correctly when the Project is playing back and you use the Input Position command to modify the Primary Time Display. You can carry out the instructions as described, but there will be no effect on the position of the Project Cursor, although you can make additions to the Left and Right Locators — and the Secondary Time Display — and this will work as expected. Interestingly, the addition command will work for the Primary Time Display if you drag the values in the Add window with the mouse instead of entering them with the keyboard, but this is far less convenient. Hopefully this will be fixed in a future version.

Tell Me The Truth

At a basic level, Boolean algebra is all about truth: is a given condition true or not? In the case of the Logical Editor, consider the condition 'type is note': if you have a MIDI Part selected containing both MIDI note and controller Events, this condition will only be true for Events that are notes, so only the notes would be selected. Now consider adding a second condition, as we did previously: 'pitch is C3'. Because we want to select only the notes that equal C3, we need both conditions to be true, which requires the use of the AND operator from Boolean algebra. So the complete condition would be 'type is note AND pitch is C3'.

At this point, you might have noticed the Filter Condition List has a 'bool' column for Boolean operators, and by default Cubase has added an AND after the first condition. The Boolean operator used to join conditions can either be AND or OR, and you toggle between these by clicking on the operator you want to change in the Filter Condition List. When using the OR operator to associate two conditions, an expression is true if either one of the conditions is true, which we'll look at in more detail in just a moment.

If you make a mistake with Boolean operators in the Filter Condition List, the status line below will report a 'Syntax Error' instead of displaying the full expression. Can you spot the mistake here?If you make a mistake with Boolean operators in the Filter Condition List, the status line below will report a 'Syntax Error' instead of displaying the full expression. Can you spot the mistake here?The Filter Condition List also supports sets, so you can use open and close brackets to indicate a set within an overall expression via two columns, one on either side of the Filter Condition List, that enable you to specify the state of the open and closed brackets by clicking in the relevant space and choosing brackets from a pop-up menu. By default, one set of brackets encompasses the entire expression, and you'll notice an open bracket (the left column) in the first condition and a closed bracket (the right column) in the second condition. This is actually explained more clearly in the status line below the Filter Condition List, which for the 'find notes that are C3' example will read: '(Type = Note AND Value1 = C3)', clearly showing the use of Boolean algebra.

To explain this a little more practically, let's say we want to build a condition that selects notes that are either C3 or D3. Since this condition has three expressions ('type is note', 'pitch equals C3' and 'pitch equals D3'), we need three Lines in the Filter Condition List, and the crucial thing here is how these expressions are grouped with Boolean operators. There are two possible input expressions: a note that's C3 and a note that D3, so you could express this in the Filter Condition List in four rows with two sets of brackets: (Type Is Equal Note AND Pitch Is Equal C3) OR (Type Is Equal Note AND Pitch Is Equal D3). If either expression is true for an Event, that Event will be processed.

However, I mentioned we can do this in three lines, and since in both of the two expressions described above there is the Line 'Type Is Equal Note', we can factor this out so we end up with just three lines: Type Is Equal Note AND (Pitch Is Equal C3 OR Pitch Is Equal D3). Pretty neat. And another nice thing is that if you make a mistake when setting up the grouping of a condition with brackets, the status line below the Filter Condition List will read 'Syntax Error', instead of displaying the full condition.

Dual-Core Cubase

In November's Cubase Techniques I mentioned that Cubase SX 3.1 now supports more than two processor cores, enabling it to take full advantage of machines with four cores, such as the new dual-processor, dual-core systems now becoming available. This month I had chance to briefly try out a few experiments on a Boxx 7400-series workstation (www.boxxtech.com/products/7400.asp) featuring dual AMD dual-core Opteron 280 processors (with each core running at 2.4 GHz), 4GB memory, the 32-bit version of Windows XP Professional with Service Pack 2, and an RME Hammerfall DSP 9652 audio card.

Systems featuring two AMD dual-core Opteron processors, like the Boxx 7400-series workstation, are ideal for demanding Cubase users.Systems featuring two AMD dual-core Opteron processors, like the Boxx 7400-series workstation, are ideal for demanding Cubase users.For general use, the system felt pretty fast, of course, but no more so than any other fairly powerful system (dual-core or not) that I've used recently, and this is to be expected since tasks like managing the user interface won't really benefit from multiple cores. Where I did see an obvious gain, though, was in DSP performance, since Cubase effectively has two more cores to run instances of plug-ins when compared to dual-processor, single-core configurations.

While the details of how an application such as Cubase makes use of multiple processors is the subject of another article I'm working on, the basic principle is that each channel (and any processing associated with that channel, such as VST Instrument or effects plug-ins) is presented to the mix engine as a task, and the tasks are distributed amongst processor cores that have time to deal with them. This means that a four-core system can process four channels' worth of processing simultaneously; but it also means that a single channel on the mixer can't exceed what can be calculated on one processor core — in other words, the processing for a single channel cannot be (or, rather, is not) split across multiple cores. So if you consider that you can now carry out four channels' worth of processing simultaneously, this roughly explains why four cores gives you practically double the processing power, even if you take out the other overheads of running the operating system and the application itself.

To give an idea of actual performance, just for old time's sake I decided to see how many Reverb A plug-ins I could run, and, as it turned out, the system was capable of 176 Reverb A plug-ins split across 22 Channels with a buffer size of 12ms. Not bad. Turning to a more intensive plug-ins, I was able to run six instances of Waves' IR1 per core (adding seventh instance to a channel overloaded the system, although was actually possible with a buffer size of 24ms) giving 24 in total. Finally, and again just for fun, I went back to Pro 53 to see how many voices were now possible on a modern system, and this number was a staggering 765 voices, again with a 12ms buffer size.

While the clock speeds of current multi-core processors are slower than single-core equivalents, this is only marginal, and the benefits reaped by having two extra cores have huge implications for DSP-intensive applications. In the IR1 test, for example, a similarly clocked single-core, dual processor system would manage just 12-14 instances — literally half of what's possible on the dual-core, dual-processor system. So, if you're a power-hungry Cubase user, even on first impressions, it's hard not to recommend a dual-core system.

Easy Accents

Let's look at another example where the Boolean operators can come in handy, and the idea for this one came from the same composer who needed to readjust velocity layers in one of the previous column's examples. Say you have a repeated semiquaver sequence in a 4/4 bar and you want to accent the first semiquaver beat of every crotchet (beats 1/16, 5/16, 9/16 and 13/16); normally you'd select the notes falling on these beats and increase the velocity for these selected notes. But it can be really tedious to select these notes manually — especially if the basic rhythm of the sequence continues for many bars — and while you could investigate the groove quantise options to make this process easier, building a Logical Editor preset to select the appropriate notes is much more flexible because you can do more to the selected notes once they're selected than just change the velocity.

Start with the 'Init' preset in the Logical Editor window again, giving you a Filter Condition List Line with 'Type Is Equal Note', and set the Function to Select. Remove the brackets from the first Line in the Filter Condition List by clicking the open and close bracket columns and selecting 'All Off' and add four lines (for each beat/area of the bar we want to specify), setting the Filter Target to Position and the Condition to 'Inside Bar Range'. Next, put a single open bracket before the second Line and a closed bracket at the end of the fifth Line, and set the bool column to the second, third and fourth Lines to OR by selecting the appropriate Line and clicking on AND in the bool column to toggle it to OR. The 'Inside Bar Range' Condition allows the bar positions you specify to apply to every bar, as opposed to specifying absolute positions, such as bar one to bar two.

Here's an example described in the main text: a Logical Editor operation to select the first semiquaver beat in every crotchet of every bar.Here's an example described in the main text: a Logical Editor operation to select the first semiquaver beat in every crotchet of every bar.Notice how the Bar Range column becomes active, giving you a visual overview of a bar, and you can either specify the range in ticks numerically using Parameters 1 and 2, or visually by dragging the Bar Range graph — personally, I prefer the former as it can be hard to be accurate when doing the latter. The tick resolution is 480 PPQN (Parts Per Quarter Note), so a semiquaver is worth a quarter of this value meaning that the length of semiquaver in ticks is 120 at this resolution.

What we're doing is saying all notes within a given range should become selected, so in order to select the first, fifth, ninth and thirteenth semiquaver beats, set Parameter 1 and 2 as follows for the Lines in the Filter Condition List: 0 and 119, 480 and 599, 960 and 1079, and 1440 and 1559. Now when you press Do It, the appropriate beats in the bar will become selected, making it easy to adjust the velocity of these selected Events in the Event Infoline.

This preset is designed to select the appropriate notes, and the Select function works on all Events available in the selected MIDI Part (or Parts) if nothing is selected already, or looks at only the selected Events, if you've made a selection to start with. In this latter case, Events that don't apply to the condition in the Filter Condition List become unselected. So the next step for example of accenting certain beats in a bar is to come up with a Logical Editor preset that increases the velocity of selected notes.

Make sure you have saved the current operation in the Logical Editor as a preset and then select the 'init' preset again to start afresh. Make sure the Function Menu is set to Transform, and that the first line of the Filter Condition List states 'Type Is Equal Note'. Now, in the Action List, set the Action Target to Value 2, the Operation to Add, and Parameter 1 to the amount you want to accents the notes by; say, 10. Now, you can either use the selection and the velocity presets separately, or you could create a Macro, as described in January's Cubase Technique article, to execute both commands with one keystroke.

From here, you might want to create the corresponding -10 velocity preset as well, and you could take the whole method further by building other presets to select different beats of the bar, or perform other manipulations, such as length adjustments. In fact, that's the great thing with the Logical Editor: once you know how data is selected and processed, it's pretty easy to come up with interesting manipulations, or faster way to solve common tasks. Although we've reached the end of our exploration for the time being, a good next step would be to start exploring the presets supplied with Cubase, figure out how they work, and see if you can modify them (or combine them via Macros) to do other appealing, and perhaps out-of-the-ordinary effects. 


Published March 2006