Building a custom instrument with Kontakt and other players

Hello everybody,

I would like to ask you some help in building a strategy for effectively using sample libraries containing extended techniques. Sorry for being a bit long, but this matter is not the most linear.

*** Standard and extended techniques in the age of sample libraries**
There are some libraries, like those from Spitfire, Orchestral Tools, Heavyocity, Soundiron, 8Dio, Sonokinetic, Xsample, UVI and others, containing extended techniques not included in more ‘standard’ libraries. The sound collections included in Dorico, NotePerformer or the VSL ‘regular’ libraries only contain the normal performing techniques (sustain, staccato, sul pont…), with just the occasional frullato or cluster. I want therefore to be able to use something like Spitfire LCO Strings or Uist, or Heavyocity Intimate Textures, to add techniques always required in contemporary writing.

I want to use the extended techniques from the same staff in which I use the standard articulations. I don’t want to devote separate staves for the extended techniques. All of them pertain to the same instrument’s part. So, I need a way to invoke different sound players (Kontakt, or a custom player) and different techniques from the patches performed by the sound players right in the score.

*** Different libraries**
Dorico can’t change sound player in the same score, that is, in the same part of the same instrument. A player can, however, play different instruments. This revolutionary feature for a notation program means that you can have the same staff for a player playing both a concert or soprano flute, and an alto flute or a piccolo.

In the same way, you could consider sound libraries like different instruments in the same family. VSL’s solo violin for the standard techniques, Xsample’s solo violin with for the extended techniques, and 8Dio’s CASE library for other advanced techniques, could be considered different instruments in the same Flute family. They use different players – Vienna Instruments and Kontakt – so you have to use at least two different instruments for the same player in Dorico, one for each playback software.

Calling a library means changing instrument in the staff. Once you have changed instrument, you can call a technique from its collection.

*** Invoking the techniques**
Dorico uses the Steinberg’s Expression Map system to invoke techniques. With this system, each playing technique appearing in the score corresponds to an entry in the Expression Map. This entry sends messages to the sound player to select the correct articulation. Invoke a flautando in the score, and the Expression Map will send, for example, a bundle of Control Change and/or Program Change message to the sound player to make it select the flautando articulation.

Each sound player has a different way of organizing and selecting articulations. They can be separate patches/files, or collections of articulation in a single patch/file. The first type usually requires less memory and loading times, unless the sound player has (like VSL’s Vienna Instruments Pro) a way to only load the invoked articulations. Kontakt is among the sound player that have to load all the articulations in a patch/file.

*** Extended techniques and Kontakt**
Kontakt has however the handy Bank feature, where you can build your own instrument with 128 custom articulations. Each articulation is then recalled with a Program Change message, that Dorico can use in its Expression Maps to invoke that articulation. If the sound library has individual articulations in separate patches, you can save memory and shorten loading times.

Spitfire often supplies separate patches for individual articulations. You can therefore add the needed patches in the Bank cells, and build a light instrument with nothing more than the needed techniques. With other libraries you may have to add a full Instrument to a Bank cell, and select the needed articulation that will then be selected when invoking that cell.

How to deal with organizing the articulations in the Bank? You could simply add the needed articulations one after the other, as they appear in the score. However, I prefer to rely on well defined maps, in which everything has its exact place in a precisely organized structure. This would make an Expression Map easy to reuse for different libraries, for example all the instruments in the strings family, or even all the strings and the winds. I like to use Spitfire’s UACC map as the basis for my own one. As soon as I get a new library, I write down the articulation names in a spreadsheet, to see where each articulation of that library goes in the map. If no UACC number is associated with the articulations in the library, I try to assign them one that is most likely to fit the UACC map (for example, a crescendo/diminuendo would be placed in the “Arc” slot in the map).

So, I can end up with a Bank with a lot of empty cells between the articulations added to a custom instrument. This would not be a problem, since this is not waste space, but a well organized map or toolbox, with each troop on the right hill, or each tool in the right drawer. An universal Expression Map from Dorico would always recall a ‘with excessive pressure’, a ‘whistle tone’ or a ‘flautando’ technique with the same Program Change number, whichever the sound library I’m using.

In Dorico, I can create custom Expression Maps for each particular library, where the exact name shown in the library is used (for example, “Super Sul Pont” in Spitfire’s terminology). Or, I can use an universal Expression Map pointing to approximately precise types of extended techniques (for example, “molto sul pont”, as I would write in the score). If using custom Expression Maps for each library, I could however start editing from the same template, and keep similar techniques in the same place.

*** Extended techniques and other players**
The same map organization can be used with other sound players. The more flexibly one I know is VSL’s Vienna Instruments Pro (VIPRO). As in Kontakt’s Banks, you deal with a matrix of freely programmable cells. A Matrix, as VSL calls it, can be made of up 12x12 cells, for a total of 144 cells. You can multiplay this number for a maximum of 100 Matrices in a Program.

With VSL’s Matrices you can’t have a perfect match between an UACC number and a cell. You have to use two messages to select a cell, separating the X from the Y axis of the Matrix. Using Keyswitches and their Velocity value let’s one use a single message per cell. However, you will have to enter both values in the Expression Map.

Some composers are using single-cell Matrices, and using Program Change messages to select Matrices, as they would with Bank cells in Kontakt. I find this solution more difficult to control, but it works.

What about other sound players? The ones I know (Spitfire’s own player, UVI Workstation, Best Service Engine) don’t seem to allow for making custom presets/patches. But I might be wrong. Then, each player is a different story.


1 Like

Good summary! I worked with banks in Kontakt well before Dorico was born and my main headache was with dynamics. Say you have a bar of sustain doing a crescendo pp. When the switch from sustain to tremolo occurs, the tremolo cell will not inherit the current dynamic level of the sustain cell (f) but start the diminuendo at whatever was the last used dynamic level in that cell…

Maybe things are different now, or there are other ways around it…

In the future, it will become possible to cause a single instrument to trigger patches on multiple channels (and ultimately probably also on multiple devices, though I imagine the use cases for this are not so common, given the low likelihood that two patches providing different techniques from different libraries or different vendors would sound sufficiently congruous to be desirable), which will reduce or eliminate the need to use multiple instruments to achieve this kind of playback.

Thank you for the kind answers!

Daniel, I agree that using patches from different libraries in the same player/staff is quite a niche request. However, the best part of Dorico is how it can deal with standard and niche techniques equally well! One of the worse problems with more traditional notation programs is how they think very Nineteenth Century, with some gimmicks to make a score contemporary.

When using dry libraries, very different techniques seem to match well enough. I’ll try to prepare a prototype, and see how well different libraries mix with different articulations.


1 Like

Kontakt Banks require Program Change to select. Sadly, Steinberg didn’t see fit to include PC in the VST3 spec.

That’s true, but Dorico will happily send Program Changes and Kontakt isn’t VST3 yet, is it? However, if you host Kontakt in the VST3 version of VEPro, then you’re out of luck of course…

Hey Daniel, hey everybody, is this already possible now? I want e.g. the flute using a kontakt player Library (orchestra tools berlin woodwind) but switch to UVI Ircam Solo instruments for Flute Key Click and Aeolion Air sounds. How can I achieve this without using a second Instrument in the score ? best, ketan

What I do is use different voices for different instruments. So, V1 can be Kontakt, V2 UVI.


1 Like

Thank You, Paolo, for the tip! Yes good idea. Then I can also give one Solo Player a second instrument and make Instrument changes, when I want to use another Sampler for extended techniques e.g. But if I want to write a contemporary phrase in which I have to switch between normal playing technique and extended techniques within a few notes, it will of course be complicated to write down…using instrument changes every other note… In Cubase I created expression maps, that gave me the possibility to have one Player switching between all kinds of sample libraries. This is actually working quite good. Would be so good, if Dorico could do the same…

If you load the samplers to VEPro ( there is a free demo) you could switch between them with a channel switch. Using different voices or instruments can get a bit tricky… at least in my experience :slight_smile:

1 Like

Ah, Yes. Of Course. I own VEP. That’s a good Idea. Thank You so much!

Happy to help! :slight_smile:

Paolo suggested different voices rather than different instruments for the two sounds, which would simplify switching between the sounds, although it could present notation problems if you tried to beam the two voices together–but then you would have the same beaming problems if you tried to use different instruments within the Player.

If you don’t want to switch between channels, you can also have both libraries on the same channel and control their volumes independently via midi CC (from expression maps).

This is quite handy for situations like string divisi - I have both solo and section string libraries on the same channel and control their ratio with playing techniques. I fear that switching between channels in expression maps can cause some issues as well, so I try to avoid even that :smiley:

1 Like

Using relative MIDI channel change in the expression map may be the right solution. You have a base MIDI channel for the instrument/track, and then each set of techniques can go in one of the subsequent channels.

I’ve not tried this solution, but it should work.


1 Like

Thank You Paolo,
it works!!!

But not… Although relative midi Chanel change works in order to change the the channel once, I cant’t get it to also go back (using “ord.”) if I leave the basic Playing Instruction untouched, once I did a command (in this case “Key Click” to go in VEP one Chanel up to my UVI Player) it stays there. Or if I set the natural Playing Instructions setting with a relativ (o absolute) midi channel (like 1 or 0). The Key Click instruction only works for the duration of one note… Any ideas? best, ketan

I didn’t try yet, but isn’t possible to put 2 or 3 instruments on the same channel and use normal PC and/or KS to reach the needed sounds?
For example, if you have VSL as your main solo violin but want to use extended techniques from uvi’s Ircam and xsample, it should be possible to set the desired patches to PC/KS not used by the main violin, no? (and yes Paolo, workstation can do that but it’s a major, major pain in the ass)

Not tried, but my suspect is that the VSL players will select a default patch, when the received PC is out of range for the preset.


Paolo, if you still interested, I’ve found away to do it