Using Spitfire Orchestra with Reaper (part 1)
I recently purchased the Spitfire Audio Studio Orchestra for a huge amount of money. It is a sampled small studio orchestra of excellent quality. I bought the package with Studio Strings, Studio Brass and Studio Wind. These are the main elements of the orchestra. I am still using other sampled libraries for Keyboards and Percussion. I decided to go for this rather than the popular (cheaper!!) Albion product which has ready made ensembles because it is more suitable for orchestral part writing. Albion is probably more suited to fast orchestral sketching. I prefer to actually write instrument parts separately and using the musical notation editor where possible so that I can learn orchestration and publish for a real orchestra one day.
The Spitfire virtual instruments are HUGE and take up a lot of computer RAM when loaded up. e.g. a violin patch takes about 80 Mbytes. There are some other orchestral libraries that are even BIGGER. I do not have unlimited resources. (Guy Michelmore has 128GBytes of memory and 4 auxiliary PCs for his film scoring set up !!) My PC has a SSD drive and 8 GBytes of memory. The memory is pretty much used up to load the basic orchestra and a few solo instrument patches. I will talk about some workarounds later.
Kontakt and Spitfire
Spitfire use the free Kontakt player to implement the virtual instruments. This is a popular product for hosting all kinds of virtual instruments. Kontakt player is a VST plugin that is compatible with Reaper. The Spitfire virtual instruments are not VST plugins themselves as is the case with a lot of virtual intrument plug ins. Kontakt provides a kind of wrapper around the Spitfire instruments (which are .NKI files) and has its own UI for controlling them. I do not like the UI at all. It is very cramped with small fonts. The Spitfire colour schemes detract from the operation as well.
On Reaper you add Kontakt player to the effects chain for a MIDI track, you then select the instrument library within Kontakt and add an instrument patch e.g. First Violins. There is then a control panel for the instrument which is pretty similar for all the instruments selected. Each instrument has several articulations e.g. Legato, Spiccato, Pizzicato. There are buttons to select the required articulation. You can alternatively use some of the very low keyboard keys to switch between articulations.
Note that load times can be improved by changing the Kontakt default global setting for memory pre-loadsize from 60 kByte to 6 kByte.
Composers generally like to have each articulation on a seperate track rather than using key switches. I thought that this meant implementing the same instrument on different Reaper tracks and selecting a different articulation for each track used. However considering a violin instrument has 7 different articulations this would necessitate using 7 times the memory for one instrument, e.g. (7 x 80 Mbyte= 0.5 Gbytes). You can see how I quickly crucified my system when I was constructing a basic orchestra template.
There is a solution to this problem. Kontak player allows you to add mutliple instances of an instrument on a single Reaper MIDI track. The RAM usage is only for the first loaded instrument no matter how many instances. Each instance responds to its own MIDI channel and these are sequenced starting from channel 1. Now when I record from the keyboard, the MIDI channel is always 1. If I have mutiple recorded tracks each with MIDI channel 1, I need some way of re-routing channel 1 MIDI messages to have the channel number for the instrument instance I require.
This can be done rather neatly by having one Reaper track with the Kontakt player plus all the instrument instances. You then have several Reaper MIDI tracks for each instrument articulation. The instances are arranged as a sub-group to the main instrument channel and routed to the instrument channel. The neat trick is to add a JS MIDI plugin to each sub track that changes the MIDI channel 1 to the desired MIDI channel. Step forward “JS MIDI Router/Transpose” and take a bow.
I have spent some time in constructing a template that loads up all the orchestra instruments in REAPER ready to record and arrange. I have tracks for each section e.g. Woodwinds, Brass, String, Percussion. Each of these tracks group together instrument tracks, e.g. 1st Violin, 2nd Violin, Viola, Cello, Bass. The instrument track groups the instrument articulations, e.g. Legato, Slow, Pizz et.c etc.
So there is a three layer heirachy of Reaper tracks. One bug bear with reaper is that the UI representation of MIDI tracks is clunky. This need to be uncluttered with audio controls so that the mixer window and track window are not huge. I tried my best using the track layout customiser but it could be better.
Spitfire instruments have several means to control the “Expression” of the instrument. The basic controls for the string instruments are :-
Expression – This is basically the volume control
Dynamic – This is the frequency content or Timbre. e.g. hard or soft playing style
Vibrato – This is the amount of pitch modulation
There are other parameters for other instruments. Spitfire have reserved several MIDI CC code numbers for the controller messages to alter these parameters. Dynamic is always CC1 which is generally linked to the keyboard modulation wheel. So when I record a MIDI track I can simultaneously alter the instrument timbre by twiddling the modulation wheel. I can also redraw the modulation curves using the MIDI editor after recording.
I have a nanoKontrol MIDI controller with 8 slider controls and I wanted to use this to control the Spitfire parameters during recording. The sliders default to MIDI controller messages CC0 to CC7. It is possible to re-program these to other code numbers using the nanoKontrol software. It is also possible to “learn” the slider from the Spitfire instrument by right clicking on the parameter field and twiddling the slider. This not a good idea as the setting is not global and is lost if the instrument is changed.
I wanted a solution that required no messing around with the nanoKontrol controller and no messing around with the standard Spitfire codes. So step forward “JS MIDI CC mapper” plug in and take a bow.
This reaper plugin simply identifies a unique CC code in a controller messages and changes it to a different code. I added three instances of this plugin to each MIDI recording/playback track to take the standard controller CC code and re-map it to the Spitfire code. So the last three sliders on my controller will control Vibrato, Dynamic and Volume.
I have developed a basic template for orchestration. This has a good selection of winds, brass and strings. It also has a variety of keyboards, percussion, synths, sound effects. All the tracks are routed to a single reverb track. The sections are colour coded.
The sections can be individually mixed. REAPER also has a neat feature to render a section as a STEM, i.e. convert every thing to an audio track and mute the instrument tracks. This handy when the instrument CPU processing load starts getting too high.
I have stored this as a track template rather than a project template so it can be easily added to existing projects.( I want to update some old projects to use Spitfire) I have lots of track templates for specific tasks and situations.