Using SampleRobot to import sounds from proprietary plugins to a sampler for use with Gig Performer

Using SampleRobot to import sounds from proprietary plugins to a sampler for use with Gig Performer

Many DAWs come with a collection of (often very good) proprietary plugins for synthesis and sampling. However, proprietary audio plugins have one major disadvantage. They lock you into the DAW in which they live. If you ever need to share your tracks with others, or you just want to switch to another DAW, you have to figure out how you’re going to do without those proprietary plugins. This is the main reason we are not fans of plugins that lock you into a particular DAW or audio plugin host and we strongly recommend that you use only 3rd party VST plugins designed to work with any DAW or live performance audio plugin host such as Gig Performer.

So you’ve been using plugins from a proprietary DAW such as Logic/MainStage, Reason, Digital Performer and so on but now you’d like to use those sounds with some other DAW or with Gig Performer, typically by sampling the sounds and importing them into a third party sampler such as the almost ubiquitous Kontakt from Native Instruments.

Turns out there are quite a few ways to do this, depending on whether you’re on macOS or Windows and of course it also depends on which proprietary DAW was used. For example, MainStage has a proprietary auto sampler plugin that can be used to create new EXS instruments. Older versions of Kontakt were able to import EXS instruments directly but more recent versions no longer have that capability.

I recently helped to convert one EXS instrument to a Kontakt instrument for one of users, a well-known musician Bob Luna, and I thought it would be useful to describe the steps involved for others interested in doing the same thing. I used an application called SampleRobot to automate the capture of all the wave files and make them available in a form consumable by Kontakt. Below are screenshots of the entire process along with my commentary.

Note: if you like to watch a detailed video describing this process, check out this YouTube video.

1) By default, when you start SampleRobot, you can run a Project Wizard which helps you to set up all the options to quickly get started. This is worth doing as otherwise, SampleRobot does have a bewildering number of options and things to configure.

Kontakt, SampleRobot, Project Wizard

2) We are going to treat MainStage as if it were an external MIDI instrument so we select the first option. SampleRobot will consequently be able to send MIDI Note events to MainStage to cause MainStage to play the sounds we want to capture.

Kontakt, SampleRobot Recording Mode, Automatic Recording (MIDI instruments)

3) Whatever name you want here – I just used the name of the actual patch we want to sample

Kontakt plugin, SampleRobot Project Wizard, Project Name

4) This option tells SampleRobot where it should store all samples that it creates

Kontakt plugin, SampleRobot Project Wizard, Data Path

5) Now here is where things get interesting. The next wizard prompt is going to ask us to select the audio input we want to use to feed audio into SampleRobot. The problem to solve: how do we route the output of MainStage, which would normally go to your audio interface, so that the audio can be captured by SampleRobot. There are several ways you can do this

  • If you have an audio interface with at least 4 analog inputs, using a couple of short cables, you could physically patch Outputs 1/2 (presumably that’s to where MainStage is sending its output) to Inputs 3/4 and then you can arrange for SampleRobot to receive audio from the same audio interface using those ports.
  • If your audio interface has its own firmware mixer you may be able to create a new submix to route Outputs 1/2 to Inputs 3/4 – consult your audio interface documentation for this approach
  • Use a virtual audio interface that can capture audio output from applications and route them to the input of other applications

I choose to use an application for the Mac called Loopback from Rogue Amoeba. We have written about this product before on our blog and I use it all the time to route audio from MaxMSP into Gig Performer. Similar applications are available for Windows, for example VB-CABLE Virtual Audio Device, Virtual Audio Cable. However I have not used either of these products so I am not in a position to recommend either of them, please try them out for yourselves if you’re interested.

Using Loopback, I created a new stereo device which I called SampleRobot Capture. See the configuration I created in the image below. Note that as well as creating this new virtual audio interface, you can select another physical audio device to monitor what is being produced and in my case, I’m just using the Mac’s built-in internal speakers.

Loopback, create a new stereo device - SampleRobot Capture

If you open your Audio MIDI Setup application (it’s in the Utilities folder under your Applications) and click in Windows | Show Audio Devices, you can see that now there is a new audio interface in the list, called SampleRobot Capture. As far as your Mac is concerned, that device looks just like any other audio device and is available to any application that needs it.

Audio MIDI Setup application in Mac, Loopback, a new audio interface called SampleRobot Capture is listed

6) OK – back to the SampleRobot Project Wizard where we now select the desired Audio In Device, which of course will be that SampleRobot Capture virtual device.

Kontakt plugin, SampleRobot Project Wizard, Audio In Device

7) I routinely use 44.1KHz Stereo so I selected that option for the Sample Format

Kontakt plugin, SampleRobot Project Wizard, Sample Format

8) The next problem we have to solve is how to to feed MIDI from SampleRobot to MainStage. On a Mac, this is easy as OS X has built-in support for IAC (Inter-Application Communication) MIDI ports. Open your Audio MIDI Settings application again and this time click on Windows | Show MIDI Studio. One of devices there will be called IAC Driver.

MIDI Studio in Mac, feed MIDI from SampleRobot to MainStage, by using built-in IAC driver

Double-click on that IAC driver to open up the IAC configuration. You can change the name of the device if you want, although I didn’t bother. Make sure there is at least one Port (the default will be named IAC Bus 1 (I renamed it to just be Bus 1), if it’s not there, click on the + sign below the Ports list to add it). Also make sure to check the box called Device is online. Click Apply. You have now created an internal MIDI device and you can send MIDI data from one application to another (assuming of course both applications support MIDI).

Built-in IAC Driver in Mac, IAC Driver Properties

This is a good time to make sure that you everything is prepared in MainStage as well. First make sure the sound you want to sample is loaded (Red arrows) and going to Output 1-2 (Green arrow) and that all the faders are at 0db (Cyan arrows). Also, unless you want them in the raw samples, make sure you turn off any modulation (filter modulation, ADSR, vibrato effects and so forth). You’ll add those back in using Kontakt functions instead.

Mainstage, sound you want to sample (Red arrows), Output 1-2 (Green arrow), all the faders are at 0db (Cyan arrows)

Optional – click on Layout mode (Blue arrow), then click on the keyboard (Green arrow) and then finally select the IAC Driver (Red Arrow).  The reason this is optional is that by default MainStage listens on all channels and so will pick up the IAC port automatically.

By default MainStage listens on all channels and will pick up the IAC port automatically

Then make sure the sound you want to sample is loaded

9) Back to the SampleRobot Wizard again, and here just select the new virtual MIDI device from the list.

Kontakt plugin, SampleRobot Project Wizard, MIDI Out device

10) Next, just accept the defaults here. MIDI events will be sent on MIDI channel 1.

Kontakt plugin, SampleRobot Project Wizard, MIDI Out Settings

11) This one is your choice – depending on the instrument you’re capturing, you may need a smaller or large range of notes. If you’re not sure, pick a bigger number (although this will cause the process to take a bit longer since there are more notes to be sampled) since you can always delete samples you don’t need later.

Kontakt plugin, SampleRobot Project Wizard, Sampling Range

12) Again, the number of velocity layers you need really depends on the instrument. Questions that are relevant to your choice here include

  • Is the instrument you’re capturing velocity sensitive? For example, most organs are not velocity sensitive so one layer is sufficient (and you’ll need to adjust your sampler later so that it does not play the samples louder if you hit the keys harder)
  • Other than volume, does the timbre of the sound change significantly as the velocity increases. If it doesn’t, then 1 layer is still probably sufficient. If the timbre does change, then you’ll want to select more layers, the actual maximum depending on how sensitive the timbre changes are to different velocities. Note that if you select more velocities, the note will be sampled multiple times, thereby adding to the total time needed to capture the instrument

Kontakt plugin, SampleRobot Project Wizard, Velocity Layers

13) You can choose to sample every note or you can just sample every nth note and have the sampler interpolate the notes in between. The right selection again depends on the kind of sound you’re sampling. If the timbre changes significantly as you play different notes, then you may want to sample every note. If it doesn’t change that much, then you can get away with sampling fewer notes, thereby saving some space. One tip: if the sound has some built-in motion, such as tremolo or vibrato, you’re going to want to sample every note. This is because the process that most samplers use to pitch shift will end up changing that tremolo or vibrato rate so that notes near each other end up having different rates, which will sound strange. I generally pick 2 but you’ll want to experiment with this as you become more familiar with the whole sampling process.

Kontakt plugin, SampleRobot Project Wizard, Key Step

14) The suggestions provided in this particular dialog are useful rules of thumb. If the sound evolves, you’re going to want use a longer note length than if the sound doesn’t really change much.

Kontakt plugin, SampleRobot Project Wizard, Recording Length

15) Creating decent loops can be quite complicated depending on the sound and how it changes over time. But to get started, just enable Auto-Loop and see how it sounds

Kontakt plugin, SampleRobot Project Wizard, Auto Loop mode

16) This options gives SampleRobot some hints about the kind of sound being sampled which helps it to choose the right algorithms for detecting loop points.

Kontakt plugin, SampleRobot Project Wizard, Auto Loop Mode

17) Again, this is something with which you’ll have to experiment to figure out what works best for you. Clearly, how the sound evolves (or not) will determine where you want looping to start.

Kontakt plugin, SampleRobot Project Wizard, Auto Loop Mode, Sample Length

18) OK – we’re ready to go

Kontakt plugin, SampleRobot Project Wizard, Project Configuration Completed

19) Click on the Start Recording button

Record all Multi-Samples in selected Project (Automatic Mode)

20) You’ll start to see information about what’s being created and this will continue throughout the sampling process

Record all Multi-Samples in selected Project - 31 keys

You should also be able to see the meters flashing indicating that sound is coming through. If you used Loopback according to the instructions above, you should also be able hear the sound through your computer speakers

Peak Meter, Kontakt SampleRobot Capture

21) Once the sampling process has completed, click on the Import/Export menu item and click Export selected Project as … and then select NI Kontakt as the target sampler format.

Import/Export menu, Export selected Project as ... Native Instruments Kontakt

If you open the folder where SampleRobot was storing the sample files (see step 4 above), you’ll see all the samples as well as an “.sxt” file which you’ll import into Kontakt.

Mac, Folder where SampleRobot was storing the sample files, Native Instruments Kontakt

22) Open Kontakt – it’s more convenient to use the standalone version right now

  • Click on Files
  • Navigate to the folder where the .sxt file was stored. In my example, I stored it in a folder called Kontakt inside the SampleRobot output folder (Red arrow)
  • Click the Import button (Green arrow)

Native Instruments Kontakt 5, standalone version, Files Tab

23) You will be prompted to define the location where you want the instrument (a Kontakt .NKI file) and the samples to be stored. In my example, I stored them in a folder called Bob Luna. Click the Convert button (Red arrow). It turns out that sample files don’t actually get copied and the NKI file just references them where they were originally stored by SampleRobot. We’ll fix that in a moment.

Kontakt, Batch Import, Instrument and Sample Destination Folder

24) Open the folder that you specified above. You should see the NKI file stored there. It’s only 4Kb as it doesn’t actually contain the samples, it just has a reference to where they are.

Mac, Open the folder that you specified above, see Kontakt instrument NKI file extension

(25) Double-click on the NKI file and the instrument will be loaded into Kontakt. If you click on the wrench (Blue arrow) and then on Mapping Editor (Red arrow), you’ll see all the loaded samples.

NKI file and the instrument loaded into Kontakt

25) Click on the Save button (Red arrow) and then click Save edited instrument … as… 

Kontakt, SampleRobot, Save edited instrument ... as ...

26) Use the same name but click on Monolith (Red arrow). This causes the samples to be saved inside the NKI file. Click the Save button

Kontakt, click on Monolith, save samples inside the NKI file

27) You’ll see that the NKI file is now much larger because it includes the samples.

Kontakt, NKI file extension now includes all the samples (Monolith option)

27a) Alternatively, if you clicked Patch + Samples instead of Monolith, the samples will be stored in the same folder as the NKI file but separately.

Kontakt, NKI file extension now includes all the samples, but separately (Patch + Samples option)

You can now edit/tweak your new Kontakt instrument, perhaps replicate the modulations that were in the original sound using Kontakt parameters.

Phew – we’re done — hopefully the information above will get you started on the road to capturing the sounds you need from other systems so as to be able to use them in Kontakt.

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.


MIDI File Player Plugin

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.


Favorites and Presets

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.


Probabilistic Sound Designer

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.


More Widgets

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.


MIDI Message Helper

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



Layout management

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.


Undo Support

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


Plugin Channel Count

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.


Input muting and output fading

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.


Faster Plugin Finder

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.



Touch Friendly Input

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.


New Tuner Display

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.


GP Script Enhancements

GP Script adds new language improvements such as multiple initialization sections, initialization with declarations and enhanced callbacks. The WidgetValueChanged callback now supports multiple widgets. Sysex messages are now built-in with numerous supporting functions. String array handling is much faster. Integer bit manipulation is now built-in. A new global GigScript allows incoming MIDI messages to be modified and redirected on the fly. It also allows you to define keyboard macros for your computer keyboard to control Gig Performer itself. For complete information, please review the GP Script Language Manual available through the Help menu.



Scriptlets make creating custom MIDI processors easy. You don't have to be a programmer to use them - you can just download scriptlets from our ever-growing collection on our website and drop them right into your rackspaces to use them. Use scriptlets for simple operations such as turning your single notes into chords, modifying, duplicating or converting one kind of message into another, automatic chord latching (AutoSustain), threshold detection, sysex manipulation... imagination is the limit.


Other Improvements

  • System Actions plugin
  • MIDI Out to OSC converter
  • Comment plugin
  • New GUI dialog to define MIDI events to send on song part change
  • MIDI Out blocks can automatically send multiple MIDI events
  • Open/close a plugin editor from a widget
  • Choose default startup view
  • Quick find for plugin parameters
  • Large collection of startup hints
  • OSC Patchbay mode
  • Plugins now default to stereo I/O
  • Dragging presets into the wiring view will automatically create the required plugin
  • Numerous other minor (but nice) usability and workflow enhancements

Numerous other enhancements and optimizations serve to make Gig Performer 4 a superb platform for performing artists.


Songs and Setlists

You can organize your rackspaces into songs and your songs into setlists and then just select the setlist you need for a show. Then simply cycle down through the parts, or use your control surface or a MIDI Guitar pedal controller to select individual parts directly.


Predictive Loading

Predictive Loading™ is an advanced feature that reduces your RAM and CPU resources by only loading rackspaces (or songs) as needed.



The Global Rackspace

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.



Zoomable Wiring View

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.



What's new in Gig Performer 4.5

  1. Record what you play, complete with all effects - multiple channels of mono or stereo wave files
  2. The Follow Hardware feature lets widgets update automatically to match your controller values when you switch rackspaces
  3. Plugin blocks can now be easily dragged to insert them between other plugin blocks
  4. Widgets can be hidden when not in edit mode.
  5. Widgets support various CC relative modes
  6. The MIDI Thru option lets widgets respond to messages while allowing them to pass through to plugin blocks
  7. The Global MIDI Monitor now displays outgoing MIDI messages
  8. Audio options can now be exported and reimported to make it easier to support multiple audio configurations
  9. OSC now supports named targets
  10. Song Part OC assignments can now be globally changed and applied
  11. GP Script has a new Timeline callback, a MIDI connect/disconnect callback and many new system functions
  12. New parameters in the System Actions plugin now provides even more global control of Gig Performer

Click here to see the complete list of release notes for Gig Performer 4.5