Predictive Loading in Gig Performer

Predictive Loading in Gig Performer

We are very excited about a new feature introduced in Gig Performer 1.5. It’s something we’ve wanted from the very beginning and it’s something that we believe many people will really find incredibly useful.

Normally, Gig Performer preloads all rackspaces, which means that all plugins that will every be needed are created as Gig Performer starts up. While this can use a large amount of RAM, particularly with plugins that depend on samples, the advantage is that you can switch instantly from any rackspace to any other rackspace and experience no glitching. At the other extreme, some hosts load just one set of plugins at a time. That has the benefit of significantly reducing the amount of RAM you need but has the serious disadvantage that you can’t instantly switch from one set of plugins to another. It might only take 1/2 second, but that’s still not instant.

However, in many if not most live situations, musicians tend to follow a setlist. If you position your rackspaces based on the order in which you will need them, then with the new Predictive Loading feature enabled, Gig Performer will manage plugins dynamically as you move through your setlist. So while you are performing with one rackspace, the plugins for the next few rackspaces will be prepared in the background for when you reach them.

The results are amazing. Instead of requiring 10 or 20 gigabytes of RAM, you can get away with 2 or 3 gigabytes. Also, it turns out that a surprising number of plugins use CPU cycles even when they are not actually doing any audio processing. We have seen quiescent plugins add an extra 3% CPU utilization for each one loaded. So much of that overhead disappears as well.

Like most good things in life, there is a tradeoff but we think it’s a very reasonable one. If you use Predictive Loading, for the most part you cannot jump to an arbitrary rackspace and expect an instant response. You can only move instantly within the range of rackspaces that have been loaded. However, if you think about it, this isn’t really much of a restriction. You may be thinking that there are some rackspaces you really need to use often and now you can’t just jump to them. But you don’t have to. You can duplicate that rackspace as many times as you need so that an instance is available in every song. With this mechanism, you can have thousands of rackspaces without paying a significant RAM or CPU cost.

Gig Performer, collection of rackspaces, predictive loading

Take a look at the picture of a collection of rackspaces to the left. If you’ve seen earlier versions of Gig Performer, you’ll immediately notice one significant difference, the use of color on either side of each rackspace name. First, we can see that  we are currently playing “Jazz Guitar”, it’s colored green. Notice however, that the two rackspaces before and after have faded green markers as well. That means that you can switch to any of those (but typically the intent is to switch to the next one) and have the usual instant glitchless response. Patch Persist, if enabled, will work also. So if you now click on (or use a MIDI command to move to) the next rackspace, “Choir Ohhh_E”, that rackspace will just work. However, while you are playing, Gig Performer will be preparing “Serum PD Quasor” in the background and it will also remove Choir Ohhh_A which it now presumes is no longer needed.

Rackspaces that are not instantly available have red markers on either side. If you jump to a rackspace that is red, then you will have to wait a moment while Gig Performer prepares that rackspace. Now, even in this situation, you mightn’t have to wait more than a second or two, it depends on what the plugins have to do but please don’t expect instant response in this situation.

We want to emphasize that Predictive Loading is not for everyone. If your live environment is such that you just have to be able to switch to arbitrary rackspaces on the fly, then you will have to have all rackspaces preloaded. That’s fine, it works very well, still using less resources than other products, but you’ll still want to pay some attention to how efficient are your selected plugins in terms of CPU and RAM usage so that you can maximize your usage. By the way, here is the entire CPU usage of Gig Performer while Jazz Guitar is playing.

Gig Performer uses 8.7% CPU utilization

Yes, 8.7% total CPU utilization. The audio processing CPU utilization at this point was under 2%. Now obviously everyone’s system will behave differently and I’m using a reasonably modern iMac but you gotta admit, that’s pretty damn good!

Now, we have seen one or two plugins that don’t always behave properly in this dynamic environment. We’ve worked hard to optimize our system so that such plugins don’t actually fail but we have run into one plugin where it took an unreasonable amount of time for it to load its samples. We’re not ready to mention any names though. We do however need to be clear that in such cases, it is generally the plugin that is going to be at fault, the designer most likely having made assumptions that weren’t necessarily valid. In such cases, we will try to work with that plugin’s developer to resolve the issue.

At some point soon we will start maintaining a list of plugins that we have found to be reliable with Predictive Loading but so far we have found that plugins from Native Instruments, Arturia, GForce Software, AAS as well as a few individual plugins such as Repro (U-He), VPS Avenger and Serum work beautifully. Obviously we can’t have available every plugin in existence so we will also depend on reports from users to verify (or not) other plugins.

We will also soon be providing users with a little command line plugin exerciser. Unlike the plugin validation that most hosts (including us) run to check that a plugin is safe to run, our plugin exerciser  will do things like repeated loading, initialization and unloading of the plugin many times. In particular, it will load the plugin multiple times to see how well things go when multiple instances are trying to access shared resources. If a plugin makes it through that exerciser, we can have quite a bit more confidence in its stability.



The Global Rackspace can receive audio from whatever rackspace is currently active. Instead of inserting effects in every rackspace, simply insert them once in the Global Rackspace and all your local rackspaces will have access to them. The Global Rackspace can also send audio to the currently active rackspace. So you can insert a looper that receives audio directly from your guitar (say) and then send the looped audio to different effects in different rackspaces. If a particular instrument such as a piano or organ is needed everywhere (or almost everywhere), put it in the Global Rackspace.

 

Gig Performer 4 provides a virtual view allowing you to spread out your blocks and connections to make them easier to see and manage, even if you have a very small screen. You can zoom in or out and you can use the Auto-Fit option to position your blocks to fit in the available space.

Scaling curves allow you to control the shape of the output of a widget or convert an incoming note velocity to a new velocity. Various predefined curves are available and they can be tweaked as necessary. You can also just draw your own curve as well to achieve the effect you require.

You can load up to 128 MIDI song files in a single plugin instance. Switch from one song to another, mute tracks and/or change their channel numbers. Tempo can be controlled by individual songs or you can use the global tempo and tap tempo to control the BPM interactively.

Create a sound by placing and interconnecting your desired plugins, such as a synth, some effects and perhaps a mixer. Select them all and then save the selection as a named favorite. The favorite will subsequently show up in all plugin insert menus, making it easy for you to recreate that configuration whenever you need it again. This feature is also very powerful for creating your needed sounds on your studio computer and then transferring them to your touring laptop.

Parameters you select in an open plugin are captured into the Probabilistic Sound Designer dialog window. When you click Randomize, you're only adjusting those selected parameters. Each entry in the PSD dialog has a curve but unlike widgets where the curve controls scaling, in the PSD the curves are used to define the probability of particular values being selected. Make sure the filter cutoff never gets too slow so as to block all sound. Perhaps adjust the max range of the VCA attack parameter so that the sound doesn't have too much delay. Constrain the octave ranges of the oscillators, perhaps ensuring that 1/3rd of the time we select 8' and 2/3rds of the time we select 4'. The possibilities are endless.

Numerous new widgets are included in Gig Performer - a new sustain pedal, plastic knobs, drum pads and more colored sliders. Shapes can be colored with different borders and fill colors and morphed from rectangular to circular. Your creativity is now the limit to creating fabulous front panels in Gig Performer.

Select MIDI devices by name. Choose the MIDI message type and adjust the appropriate parameters for the specific type

 

Gig Performer supports arbitrary resizing. Layout your widgets the way you want - resize the main window and the widgets will grow or shrink as necessary to maintain the same interrelationships. No matter what size screen you have, your front panels will still be neat and usable.

If you move your widgets around and/or resize them, or even delete them by mistake, the Undo facility will correct your mistake. Minor moves to a widget by mistake will no longer spoil your design

Some plugins support a large number of outputs and they depend on the traditional channel strip to control how many ports should be available.   When you only need a stereo pair, it is convenient not to have a large horizontal block. In Gig Performer, the number of available ports  is controlled by the channel count override, which can be applied to individual plugins and will be remembered when the gigfile is reloaded or if the plugin is saved as a favorite.

Rather than a single audio length tail, Gig Performer 4 gives you the ability to control input muting and output fading separately. Input muting controls how much time it takes for audio input to be silenced when you leave the rackspace. Output fading controls how much time will be taken for audio to fade out when you leave the rackspace.

Instead of searching through menus of perhaps hundreds of plugins (you know who you are!), the Quick Plugin Finder makes it easy to find the plugin you need by simply typing partial strings. For example, as shown here, to find the Modartt Pianoteq 7 plugins, it's enough to type pia mod 7 (in any order, by the way)  to restrict the list of available plugins to those matching your query. The Quick Plugin Finder also knows about manufacturers, presets and favorites.

Any entry field can be changed by either dragging your mouse (or finger) up or down, or by using the large popup touchpad where you can just tap on the squares to enter a value. The large popup keypad also does validation so you can't enter an invalid value. You can also just tap the BPM field to pop up a larger view where you can quickly change tempo, tranpose, trigger Tap Tempo and enable Ableton Link, the last allowing you to synchronize Gig Performer with any other application that also supports Ableton Link.

The tuner view makes it easy for guitarists to quickly check and adjust their tuning. You can toggle into the tuner view from any other view and toggle right back as soon as you're done. All output will be silenced automatically while you're in tuning mode. You can adjust the concert reference pitch from its default of 440 Hz to suit your own needs. The tuner view fills the entire screen so you can easily see it from a distance.

The Global Rackspace can receive audio from whatever rackspace is currently active. Instead of inserting effects in every rackspace, simply insert them once in the Global Rackspace and all your local rackspaces will have access to them. The Global Rackspace can also send audio to the currently active rackspace. So you can insert a looper that receives audio directly from your guitar (say) and then send the looped audio to different effects in different rackspaces. If a particular instrument such as a piano or organ is needed everywhere (or almost everywhere), put it in the Global Rackspace.