External MIDI processing in REAPER

I have several different workflows when approaching composing in REAPER. Every so often I have to do a repetitive task and I look at ways of automating it. I developed a MIDI editor program that can do various operations on a MIDI item. I wrote it with a familiar programming language so I can easily add extra functions when necessary.

The program is MTOOL.exe and can be downloaded from my downloads page. It takes a MIDI filename as a start up parameter. The tool operates on the MIDI file and updates it with new edits.

It is quite easy to link the external editor program into REAPER. Place the program in a suitable folder, click on Options // Preferences to bring up the preferences dialog.

Go to the External Editors section and click on the Add button to add a new editor. Specify mid as the extension and browse to the MTOOL.exe program.

When you need to invoke the editor, right click a MIDI item in REAPER and select the editor from the pop up menu.

The program MTOOL.exe is started and a message is shown with the MIDI file to be edited. Wait until the MIDI item is “offline” before proceeding.

The main MTOOL page is then displayed. Select “Tool” from the main menu and further select the operation required.

When you quit the program, the MIDI file is updated and control is returned to REAPER. The MIDI item is then changed.

Some of the operations create new channel assignments. There is a function in REAPER to expand a MIDI item by channel ID to create new items with the same channel IDs. I have created a custom action on alt F8 to do this.

The program is still under development and I will post updates in the future. The functions so far are :-

  • Find Key – Find suitable key signature based on minimum accidentals
  • Find Chords – find chords and create root position chords in MIDI channel 2
  • Add Harmonies – add a diatonic harmony to a melody line
  • Split piano transcription – divide notes into three layers according to pitch, assign to channels 2..4
  • Reverse melody – ala JS Bach, change a melody into reverse order by pitch and duration.
  • Invert melody – move note up or down in pitch
  • Convert all notes to quavers – e.g. taking a bass part and making it pizzicato

Any new suggestions are welcome !!

Fixing Spitfire BBC Orchestra in Reaper – or how to write a plugin





I recently bought the basic Spitfire BBC Orchestra samples for £0. (but I had to wait 2 weeks)

This is a cut down version of their full orchestra sample library, but I guess it is good for sketching. They have developed their own player for this which is similar to their LABS libraries. Presumably this is to avoid using Kontakt player which costs extra money. I used it for a little while and then discovered it had quite a serious bug when playing MIDI sequences. If you have a note played followed by the same note and the first note end time equals the second note start time, then the second note does not play. This can quite easily occur if you quantise a MIDI recording.

This annoyed me especially as I was paying nothing for it instead of the reccommended £49. I was about to report the bug but saw that other people had got there first and there was a forum discussion about it. Some bright spark mentioned that they had written a Reaper plug in to workaround the problem but did not give any further details. Basically if you shorten the first note ever so slightly, the second note will play.

I was intrigued by this and I decided to look further into the black art of writing a Reaper plug in. It is not particulary well documented and there was no basic tutorial in starting. It is really quite easy once you know how and I will show you how to write a plugin to fix the Spitfire library.

There are a large amount of Reaper plugins in the “JS” folder. I have already described how I use some of them when working with MIDI. These plugins use a native scripting language to work. There is a built in editor and basic debugger to create,edit and compile the scripts. You are able to view the source code of any of the built in plug ins and use it as a basis to create new ones.

Creating a new script.

In Reaper, create a new track. Click on the track effects button and this will bring up the effects library page. Right click on the “JS” section and this brings up a pop up menu. Select the “Create new JS effect“.

It will then ask you for an effect name. Enter a meaningfull name as this will appear later in the effects library “JS” section for you to select as an effect.


It will then create a basic plugin that does nothing in particular and has some default sliders for entering parameters. There is an edit window on the left and a variables watch window on the right.

You enter the script code in the editor window and finally press Ctl S to save the current text and compile the plugin. Any errors with the script syntax are then displayed and you have to fix the errors (if any) and press Ctl S again.

Editing an existing script.

In Reaper, create a new track. Click on the track effects button to get the effects library page. Double click on the effect you wish to edit and this will add it to the track effects chain. Click on the effect and the standard effect parameter page will be displayed.


There is an “Edit” button on this page. Press it and the following effect edit screen will be displayed. This is the same as the creation page.



Change the script and press Ctl S to save and re-compile it. Note that the changes only apply to the selected track. In order for it to apply to all instances of the effect, exit Reaper and restart it, gotcha !!!!!

The script to fix the Spitfire BBC Orchestra

This script needs to create a gap between adjacent notes of the same pitch. The gap only needs to be small. This means that it is easier to create small gaps between any note and the gaps are too small to be significant. So the script should take any MIDI note and make a small gap. A note comprises of a MIDI ON message followed by a MIDI OFF message, so if we alter the timing to make the ON message later and the OFF message earlier we can achieve a fix to the problem.

There are two MIDI functions within the script – midirecv and midisend.

Midirecv receives a single MIDI message from the previous effect plugin or routed MIDI stream. This is usually a command byte a pitch byte and a velocity byte for note on and note off messages. It also receives a time offset. As far as I can ascertain, this is relative to a block of MIDI messages and ranges from 0 to 239.

Midisend sends a single MIDI message to the next effect plugin or routed MIDI stream. It takes the same parameters as the receive. The timing of the outgoing message can be altered by changing the time offset up to a maximum of 239 and a minimum of zero.

Here is the script. Simply paste the entire script into the plugin editor window and save it with Ctl S. Ensure that it is placed before the Spitfire BBC Orchestra VST plugin in the effects chain.


desc: Spitfire BBC Hack





// note on 
(((msg1&240)==0x90) && (msg3!=0)) ? (

(msgt<230) ? msgt+=10; 

// note off
( ((msg1&240)==0x80) || ( (msg1&240)==0x90 )&& (msg3==0) ) ?(

(msgt > 20) ? msgt-=20;




Using Reaper with Yamaha PSR775

I have a Yamaha PSR775 with a large amount of potted sounds. The keyboard has a built in MIDI USB interface and audio line outputs. I wanted to utilise some of the sounds instead of using VST instruments on Reaper.

The MIDI connection to the PC running Reaper is quite simple. The Yamaha keyboard has a “host” USB socket. Simply connect to the PC using a standard USB cable. The connector to the keyboard has a chunky square shaped plug, not the flat rectangular one. The keyboard is recognised by Windows 10. Go to the MIDI devices configuration menu and enable the “Digital Keyboard” as an input and output.


Add a MIDI track and click on the routing button. Route the output (MIDI) to the “Digital Keyboard” device.


Click on the arm button and then select all MIDI inputs as the input source. This will record from any connected keyboard and the controller.

You then add another Audio track to record audio from the audio interface. Connect the keyboard audio output to the interface device audio input.Test the audio input by first arming the track and then by playing notes on the Yamaha keyboard. The audio should come through the monitors.

You need to ensure that the Yamaha keyboard can accept external MIDI messages by going to the MIDI function page and enabling channels 2-16 as “Song”. Channel 1 is reserved for the keyboard itself.


Notes played on any keyboard generate messages for MIDI channel 1. These messages need to be routed to MIDI channels 2 to 16 in order to play instruments on the Yamaha hardware.

You need to add a MIDI routing plugin on the MIDI track effects to achieve this….

Click on the effects button for the first (MIDI) track and add the “JS MIDI Router/Transpose” plugin. Set the input channel to 1 and the output channel to 2. Arm the track for recording and play a note on the keyboard. It should play a note on the Yamaha hardware.

There is a simple way to select the instrument we want to play for MIDI track 2. The plugin “ReaControlMIDI” allows you to select the instrument bank using two bank select code bytes and the actual instrument within the bank by using a PC byte.

All of these individual instrument codes are kept in a “ReaBank” configuration file. This file associates a bank name and instrument name with the MIDI byte codes. These files can be downloaded from the Reaper resources library and are tailor made for each kind of keyboard used. I have developed such a file for the PSR775, but more about that later……

Add the “ReaControlMIDI” plugin the the MIDI track effects chain. Note that this is the “ReaPlugs” version and not the default one that comes with Reaper. You will need it specifically to work with the “ReaBank” configuration file I developed.


Set the MIDI channel to 2 and check the “Bank/Program Select” enable checkbox. Press the “Load File” button and load in the “ReaBank” file. A General MIDI file comes as standard and this can be loaded for testing. Once the file is loaded, you can select the Bank and Program required to select the instrument to play for channel 2.

Once you have channel 2 working, you can duplicate several more channels up to the maximum of channel 16. I have done this and saved the whole lot as a track template so I can easily add the facility to any project….


I have also added two extra “JS MIDI CC Mapper” plugins to the effects chain (as described in a previous post). These remap the “Expression” and “Mod Wheel” controls to a standard position on my NanoKontrol MIDI controller…..


Creation of PSR775 ReaBank file

I have created a “ReaBank” file specifically for the PSR775. These files are simply text files with the “.ReaBank” extension. I have included this file at the end of the post. Simply cut and paste it into notepad and save the file.

Now here follows a brief technical discussion of how and why………….

The ReaBank file is structured as a series of Bank definitions. Each bank has a name and contains one or more program names. When you look at how Yamaha have mapped out their instrument banks and programs you would be amazed if you could see any logic at all. Basically they are all over the place !

So it would be nice to have the Bank dropdown select an instrument group, e.g. keyboards,strings,percussion etc.etc. and have a sub list of related instruments.

Basically the Reaper structure does not fit in with the Yamaha structure. Soooooooo, I have done a hack. Basically I have set all the banks to have one instrument and set the bank name to the instrument name. So you have a list of the instruments in the bank drop down. You then have to ensure the Program dropdown selects the first in the list (not always happens).

So this snippet shows what the file looks like ..

BANK 0 115 ConcertGrand 
0 ConcertGrand
BANK 104 5 PopGrand 
0 PopGrand
BANK 104 4 RockPiano 
0 RockPiano
BANK 104 3 AmbientPiano 
0 AmbientPiano
BANK 0 113 OctavePiano1 
3 OctavePiano1
BANK 104 0 MIDIGrand 
2 MIDIGrand
BANK 104 1 MIDIGrandPad 
2 MIDIGrandPad
BANK 104 1 MIDIGrandSyn 
0 MIDIGrandSyn

If you are interested in how I made this file, here is a brief outline of the process…..

1)Find the Yamaha PDF that lists all the voices and MIDI codes.

2)Open in Acrobat Reader. Copy the tables.

3)Paste into note pad. Remove the table heading crap. 
Make sure the instrument names do not have white space.

4)Import the text into a spreadsheet using a space as the delimiter.

5) In the spreadsheet generate extra columns to define the Bank line 
and the PROGRAM line.

Use a # as the line separator.
BANK 0 115 ConcertGrand # 0 ConcertGrand

6) Export the generated table as a comma separated file. (.csv)

7) Open up the text in a wordprocessor.
Globally Replace "#," with a new line (tricky)
Globally Replace "," with " ".


And here is the final product……..

BANK 0 115 ConcertGrand 
0 ConcertGrand
BANK 104 5 PopGrand 
0 PopGrand
BANK 104 4 RockPiano 
0 RockPiano
BANK 104 3 AmbientPiano 
0 AmbientPiano
BANK 0 113 OctavePiano1 
3 OctavePiano1
BANK 104 0 MIDIGrand 
2 MIDIGrand
BANK 104 1 MIDIGrandPad 
2 MIDIGrandPad
BANK 104 1 MIDIGrandSyn 
0 MIDIGrandSyn
BANK 104 2 PianoOrchestra 
0 PianoOrchestra
BANK 0 114 OctavePiano2 
3 OctavePiano2
BANK 8 32 Harpsichord 
112 Harpsichord
BANK 0 113 GrandPiano 
0 GrandPiano
BANK 0 114 WarmGrand 
0 WarmGrand
BANK 0 112 BrightPiano 
1 BrightPiano
BANK 104 0 CocktailPiano 
3 CocktailPiano
BANK 0 112 HonkyTonk 
3 HonkyTonk
BANK 0 113 GrandHarpsi 
6 GrandHarpsi
BANK 0 118 E.Piano.SuitcaseEP 
4 E.Piano.SuitcaseEP
BANK 0 116 VintageEP 
4 VintageEP
BANK 0 119 SmoothTine 
5 SmoothTine
BANK 0 119 ElectricPiano 
4 ElectricPiano
BANK 0 113 TremoloSuitcase 
4 TremoloSuitcase
BANK 104 0 SweetDX 
5 SweetDX
BANK 0 124 BalladDX 
5 BalladDX
BANK 0 123 DXDynamics 
5 DXDynamics
BANK 104 2 BalladBells 
5 BalladBells
BANK 104 1 MidnightDX 
5 MidnightDX
BANK 0 117 StageEP 
4 StageEP
BANK 0 113 CP80Stage 
2 CP80Stage
BANK 0 112 ClaviBright 
7 ClaviBright
BANK 0 113 WahClavi 
7 WahClavi
BANK 0 115 PhaseClavi 
7 PhaseClavi
BANK 104 3 DreamDX 
5 DreamDX
BANK 0 121 SparkleStack 
5 SparkleStack
BANK 0 114 GalaxyEP 
4 GalaxyEP
BANK 8 32 Organ&Accordion.WhiterBars 
29 Organ&Accordion.WhiterBars
BANK 8 32 AllBarsOut 
30 AllBarsOut
BANK 8 32 JazzRotary 
113 JazzRotary
BANK 8 34 ClassicBars 
29 ClassicBars
BANK 104 0 Organ-a-Go-Go 
16 Organ-a-Go-Go
BANK 0 121 CurvedBars 
16 CurvedBars
BANK 0 111 EvenBars 
16 EvenBars
BANK 0 127 VintageFast 
16 VintageFast
BANK 0 117 RotorOrgan 
18 RotorOrgan
BANK 0 117 ClassicJazz 
16 ClassicJazz
BANK 8 33 RockRotary 
113 RockRotary
BANK 8 33 ProgRockOrgan 
29 ProgRockOrgan
BANK 0 111 HoldItFast 
17 HoldItFast
BANK 0 111 R&BTremolo 
18 R&BTremolo
BANK 0 118 ScannerJazz 
18 ScannerJazz
BANK 0 108 OrganAccomp1 
17 OrganAccomp1
BANK 0 107 OrganAccomp2 
17 OrganAccomp2
BANK 0 106 OrganAccomp3 
17 OrganAccomp3
BANK 0 105 OrganAccomp4 
17 OrganAccomp4
BANK 0 104 OrganAccomp5 
17 OrganAccomp5
BANK 0 112 FullOrgan 
19 FullOrgan
BANK 0 113 ChapelOrgan 
19 ChapelOrgan
BANK 0 114 HymnOrgan 
19 HymnOrgan
BANK 0 115 ChurchOrgan 
19 ChurchOrgan
BANK 0 115 MellowDrawbar 
17 MellowDrawbar
BANK 0 114 Harmonium1 
20 Harmonium1
BANK 0 115 Harmonium2 
20 Harmonium2
BANK 0 109 TwoChannels 
17 TwoChannels
BANK 0 115 FullRocker 
18 FullRocker
BANK 0 118 EuroOrgan 
16 EuroOrgan
BANK 0 127 FullTheatre 
18 FullTheatre
BANK 0 126 SweetTheatre 
18 SweetTheatre
BANK 104 5 TibiaChorus 
17 TibiaChorus
BANK 104 8 Tibia16'&4' 
16 Tibia16'&4'
BANK 104 9 Tibia8'&4' 
16 Tibia8'&4'
BANK 104 10 Vox&Tibia 
16 Vox&Tibia
BANK 104 6 Tibia8' 
17 Tibia8'
BANK 104 7 VoxHumana8' 
17 VoxHumana8'
BANK 0 125 Trumpet&Kinura 
17 Trumpet&Kinura
BANK 0 115 Organ&Accordion.BallroomOrgan 
3 Organ&Accordion.BallroomOrgan
BANK 104 1 WhiterBarsSlow 
17 WhiterBarsSlow
BANK 104 0 WhiterBarsFast 
17 WhiterBarsFast
BANK 104 1 AllBarsOutSlow 
18 AllBarsOutSlow
BANK 104 0 AllBarsOutFast 
18 AllBarsOutFast
BANK 104 2 AllBarsPhase 
18 AllBarsPhase
BANK 0 126 JazzSlow 
17 JazzSlow
BANK 0 127 JazzFast 
17 JazzFast
BANK 0 112 Harmonica 
22 Harmonica
BANK 0 118 MasterAccordion 
21 MasterAccordion
BANK 104 2 FullRegister 
21 FullRegister
BANK 104 0 Cassotto 
21 Cassotto
BANK 0 120 JazzAccordion 
21 JazzAccordion
BANK 0 114 BluesHarp 
22 BluesHarp
BANK 0 114 TangoAccordion 
23 TangoAccordion
BANK 104 3 Cajun 
21 Cajun
BANK 0 119 FrenchMusette 
21 FrenchMusette
BANK 0 117 Steirische 
21 Steirische
BANK 0 113 ModernHarp 
22 ModernHarp
BANK 0 121 AccordionBass 
21 AccordionBass
BANK 0 113 Bandoneon 
23 Bandoneon
BANK 0 122 MasterBass 
21 MasterBass
BANK 0 123 MusetteBass 
21 MusetteBass
BANK 104 1 AccordionClarinet 
21 AccordionClarinet
BANK 0 115 TangoBass 
23 TangoBass
BANK 104 5 FullRegisterBass 
21 FullRegisterBass
BANK 104 6 CajunBass 
21 CajunBass
BANK 8 34 Guitar.RockLegend 
5 Guitar.RockLegend
BANK 8 38 StageLead 
5 StageLead
BANK 8 39 OverdriveWah 
5 OverdriveWah
BANK 8 55 BluesyNight 
3 BluesyNight
BANK 8 53 LightChorus 
3 LightChorus
BANK 8 32 ConcertGuitar 
0 ConcertGuitar
BANK 8 32 SteelGuitar 
1 SteelGuitar
BANK 8 35 ElectroAcoustic 
0 ElectroAcoustic
BANK 8 38 JazzVintage 
6 JazzVintage
BANK 8 39 JazzArtist 
6 JazzArtist
BANK 8 57 SixtiesGuitar 
3 SixtiesGuitar
BANK 8 55 HalfWahLead 
5 HalfWahLead
BANK 8 56 WahWahGuitar 
5 WahWahGuitar
BANK 8 58 SeventiesChorus 
3 SeventiesChorus
BANK 8 54 VintageSpring 
3 VintageSpring
BANK 8 33 FlamencoGuitar 
0 FlamencoGuitar
BANK 8 33 SemiAcoustic 
6 SemiAcoustic
BANK 8 32 JazzClean 
6 JazzClean
BANK 8 36 PedalSteel 
3 PedalSteel
BANK 0 118 AlohaGuitar 
26 AlohaGuitar
BANK 8 42 PureVintage 
5 PureVintage
BANK 8 40 VintageAmp 
3 VintageAmp
BANK 8 40 GrungeGuitar 
5 GrungeGuitar
BANK 8 41 ClassicStack 
5 ClassicStack
BANK 8 33 CrunchGuitar 
5 CrunchGuitar
BANK 8 33 WarmSolid 
3 WarmSolid
BANK 8 34 CleanSolid 
3 CleanSolid
BANK 104 0 SlideJazzGuitar 
26 SlideJazzGuitar
BANK 8 40 SolidJazzGuitar 
6 SolidJazzGuitar
BANK 8 35 SmoothJazzGuitar 
6 SmoothJazzGuitar
BANK 8 34 NylonGuitar 
0 NylonGuitar
BANK 8 33 FolkGuitar 
1 FolkGuitar
BANK 0 117 SteelGuitar 
25 SteelGuitar
BANK 0 113 12StringGuitar 
25 12StringGuitar
BANK 0 115 ClassicalGuitar 
24 ClassicalGuitar
BANK 0 119 MutedGuitar 
28 MutedGuitar
BANK 0 118 DynamicMute 
28 DynamicMute
BANK 0 119 NylonMute 
24 NylonMute
BANK 0 120 SteelMute 
25 SteelMute
BANK 0 118 HardFlamenco 
24 HardFlamenco
BANK 8 32 GuitarHero 
5 GuitarHero
BANK 8 39 SingleCoilClean 
3 SingleCoilClean
BANK 8 52 PedalSteelAmp 
3 PedalSteelAmp
BANK 104 0 Slapback 
27 Slapback
BANK 8 37 HalfDrive 
3 HalfDrive
BANK 104 1 Bass.VintageRound 
33 Bass.VintageRound
BANK 104 1 VintagePick 
34 VintagePick
BANK 104 2 Bass.VintageFlat 
33 Bass.VintageFlat
BANK 0 112 FretlessBass 
35 FretlessBass
BANK 0 112 SlapBass 
36 SlapBass
BANK 0 112 AcousticBass 
32 AcousticBass
BANK 104 0 VintagePickMute 
34 VintagePickMute
BANK 104 2 VintageDyno 
34 VintageDyno
BANK 0 112 MellowFinger 
33 MellowFinger
BANK 0 112 PickBass 
34 PickBass
BANK 104 3 VintageMute 
33 VintageMute
BANK 0 114 ElectricBass 
33 ElectricBass
BANK 0 115 HalfMute 
33 HalfMute
BANK 0 113 SuperFretless 
35 SuperFretless
BANK 0 113 FusionBass 
36 FusionBass
BANK 0 112 FunkBass 
37 FunkBass
BANK 0 114 RockBass 
34 RockBass
BANK 0 113 PickDynoBass 
34 PickDynoBass
BANK 104 0 LoBass 
39 LoBass
BANK 104 1 DarkBass 
39 DarkBass
BANK 104 0 MoonBass 
38 MoonBass
BANK 104 1 KickBass 
38 KickBass
BANK 104 2 ClubBass 
38 ClubBass
BANK 104 2 FatPulse 
39 FatPulse
BANK 104 3 WazzoSaw 
80 WazzoSaw
BANK 104 3 DeepPoint 
38 DeepPoint
BANK 104 3 TightBass 
39 TightBass
BANK 104 4 Competitor 
38 Competitor
BANK 104 5 1o1Sub 
38 1o1Sub
BANK 104 6 LittleBassSynth 
38 LittleBassSynth
BANK 104 7 TeknoBass 
38 TeknoBass
BANK 104 8 PercPunch 
38 PercPunch
BANK 104 4 SquareBass 
39 SquareBass
BANK 104 9 TranceBass 
38 TranceBass
BANK 104 5 SubCutBass 
39 SubCutBass
BANK 104 10 DynoAcidBass 
38 DynoAcidBass
BANK 104 6 MiniSub 
39 MiniSub
BANK 104 11 FatSineResonance 
38 FatSineResonance
BANK 104 7 BalladBass 
39 BalladBass
BANK 104 17 VelocityMaster 
81 VelocityMaster
BANK 0 114 SubBass 
39 SubBass
BANK 0 114 HardBass 
38 HardBass
BANK 0 112 ResonanceBass 
38 ResonanceBass
BANK 0 116 HouseBass 
38 HouseBass
BANK 0 118 BigDrone 
38 BigDrone
BANK 0 117 TBBass 
39 TBBass
BANK 0 114 Bass&Cymbal 
32 Bass&Cymbal
BANK 0 110 LFOSynBass 
101 LFOSynBass
BANK 0 118 DX100Bass 
39 DX100Bass
BANK 0 119 FatLoBass 
38 FatLoBass
BANK 0 119 RampBass 
39 RampBass
BANK 0 120 DarkCoreBass 
39 DarkCoreBass
BANK 0 121 FunkBass 
39 FunkBass
BANK 0 122 BleepBass 
39 BleepBass
BANK 104 27 ClickOrganBass 
17 ClickOrganBass
BANK 104 18 DeepSub.MW 
87 DeepSub.MW
BANK 104 20 MultiSawBass 
87 MultiSawBass
BANK 8 32 Strings.ConcertStrings 
49 Strings.ConcertStrings
BANK 8 32 StudioStrings 
48 StudioStrings
BANK 0 117 Strings 
49 Strings
BANK 0 123 MovieStrings 
48 MovieStrings
BANK 0 112 ChamberStrings 
49 ChamberStrings
BANK 0 113 Violin 
40 Violin
BANK 0 113 Pizzicato 
45 Pizzicato
BANK 0 113 TremoloStrings 
44 TremoloStrings
BANK 0 120 Spiccato 
48 Spiccato
BANK 104 1 OrchestralHarp 
46 OrchestralHarp
BANK 8 33 Spiccato 
48 Spiccato
BANK 0 119 Strings.f 
48 Strings.f
BANK 0 118 Strings.mf 
48 Strings.mf
BANK 0 117 Strings.p 
48 Strings.p
BANK 0 122 Allegro 
49 Allegro
BANK 0 114 Mandolin 
25 Mandolin
BANK 0 115 PizzicatoGlocken 
45 PizzicatoGlocken
BANK 8 34 TremoloBowing 
48 TremoloBowing
BANK 0 124 DynamicStrings 
48 DynamicStrings
BANK 104 0 Strings.MellowHarp 
46 Strings.MellowHarp
BANK 0 113 OberStrings 
51 OberStrings
BANK 0 112 SynthStrings1 
50 SynthStrings1
BANK 0 113 SynthStrings2 
50 SynthStrings2
BANK 0 123 DiscoStrings1 
49 DiscoStrings1
BANK 0 124 DiscoStrings2 
49 DiscoStrings2
BANK 104 0 SymphonicUnison 
49 SymphonicUnison
BANK 104 1 TheatreOrchestra 
49 TheatreOrchestra
BANK 104 2 Hackbrett1 
46 Hackbrett1
BANK 104 1 Zither1 
15 Zither1
BANK 104 0 Zither2 
15 Zither2
BANK 104 0 Banjo1 
105 Banjo1
BANK 0 125 Watariyat 
48 Watariyat
BANK 0 113 ErHu 
110 ErHu
BANK 0 113 Kanoun 
107 Kanoun
BANK 0 113 Oud 
105 Oud
BANK 0 119 PiPa 
105 PiPa
BANK 104 0 Sitar1 
104 Sitar1
BANK 0 113 Sitar2 
104 Sitar2
BANK 0 112 Koto 
107 Koto
BANK 0 112 Shamisen 
106 Shamisen
BANK 0 112 Banjo2 
105 Banjo2
BANK 0 112 SoloViolin 
40 SoloViolin
BANK 0 112 Viola 
41 Viola
BANK 0 112 Cello 
42 Cello
BANK 0 112 Contrabass 
43 Contrabass
BANK 0 112 Fiddle 
110 Fiddle
BANK 0 113 Hackbrett2 
46 Hackbrett2
BANK 0 120 Tutti 
49 Tutti
BANK 0 112 OrchestraHit 
55 OrchestraHit
BANK 8 32 Brass.BrightTrumpet 
64 Brass.BrightTrumpet
BANK 8 33 SilverTrumpet 
64 SilverTrumpet
BANK 8 34 GoldenTrumpet 
64 GoldenTrumpet
BANK 8 37 BigBandTrumpet 
64 BigBandTrumpet
BANK 8 38 TrumpetFall 
64 TrumpetFall
BANK 0 119 Cornet 
56 Cornet
BANK 0 114 MutedTrumpet 
59 MutedTrumpet
BANK 0 118 FlugelHorn 
56 FlugelHorn
BANK 0 117 Trombone 
57 Trombone
BANK 0 115 Trumpet 
56 Trumpet
BANK 8 35 TrumpetShake 
64 TrumpetShake
BANK 0 121 SilverTrumpet 
56 SilverTrumpet
BANK 0 122 GoldenTrumpet 
56 GoldenTrumpet
BANK 0 120 MellowTrumpet 
56 MellowTrumpet
BANK 0 113 BaritoneHorn 
58 BaritoneHorn
BANK 104 0 Tuba 
58 Tuba
BANK 0 113 AlpBass 
33 AlpBass
BANK 0 114 BaritoneHit 
58 BaritoneHit
BANK 8 37 BigBandBrass 
56 BigBandBrass
BANK 8 36 SmoothBrass 
56 SmoothBrass
BANK 0 127 DynamicBrass 
61 DynamicBrass
BANK 0 121 PowerBrass 
62 PowerBrass
BANK 0 109 AccentBrass 
61 AccentBrass
BANK 0 112 FrenchHorns 
60 FrenchHorns
BANK 0 119 SymphonyBrass 
60 SymphonyBrass
BANK 0 108 Brass.f 
61 Brass.f
BANK 0 110 Brass.mf 
61 Brass.mf
BANK 0 111 Brass.p 
61 Brass.p
BANK 8 34 BrassFalls.f 
56 BrassFalls.f
BANK 8 35 BrassFalls.mf 
56 BrassFalls.mf
BANK 0 123 BrassBand 
56 BrassBand
BANK 0 117 SoftHorns 
60 SoftHorns
BANK 0 118 SoftTrombones 
60 SoftTrombones
BANK 8 32 BrassShake 
56 BrassShake
BANK 8 38 AccentFalls 
56 AccentFalls
BANK 0 105 Sforzando 
61 Sforzando
BANK 0 107 SforzandoFall 
61 SforzandoFall
BANK 0 115 SymphonyHorns 
60 SymphonyHorns
BANK 0 106 BrassDynamics 
61 BrassDynamics
BANK 0 117 PopBrass 
62 PopBrass
BANK 0 118 HyperBrass 
62 HyperBrass
BANK 0 120 SmallBrass 
60 SmallBrass
BANK 0 113 BallroomBrass 
59 BallroomBrass
BANK 0 116 OctaveBrass 
62 OctaveBrass
BANK 0 113 Brass.OberBrass 
63 Brass.OberBrass
BANK 104 0 ThinthBrass 
62 ThinthBrass
BANK 104 1 BrassProfit 
62 BrassProfit
BANK 104 2 SlowPWMBrass 
62 SlowPWMBrass
BANK 104 6 FastPWMBrass 
62 FastPWMBrass
BANK 0 120 SoftVelocityBrass 
62 SoftVelocityBrass
BANK 0 113 80sBrass 
62 80sBrass
BANK 0 112 AnalogBrass 
63 AnalogBrass
BANK 0 114 SoftAnalog 
63 SoftAnalog
BANK 0 115 FunkyAnalog 
62 FunkyAnalog
BANK 0 114 TechnoBrass 
62 TechnoBrass
BANK 0 115 OberHorns 
63 OberHorns
BANK 0 116 FatSynthBrass 
63 FatSynthBrass
BANK 8 32 Woodwind.Saxophone 
82 Woodwind.Saxophone
BANK 8 35 BigBandSax 
82 BigBandSax
BANK 0 125 JazzTenorSax 
66 JazzTenorSax
BANK 0 127 PopTenor 
66 PopTenor
BANK 0 126 BalladTenorSax 
66 BalladTenorSax
BANK 0 113 SopranoSax 
64 SopranoSax
BANK 0 114 AltoSax 
65 AltoSax
BANK 0 117 TenorSax 
66 TenorSax
BANK 8 33 RockSax 
82 RockSax
BANK 0 111 GrowlSax 
66 GrowlSax
BANK 0 116 SaxSection 
66 SaxSection
BANK 0 121 SaxSectionSoft 
66 SaxSectionSoft
BANK 0 122 SaxSectionHard 
66 SaxSectionHard
BANK 0 123 SaxAppeal 
66 SaxAppeal
BANK 0 110 BigBandSaxes 
66 BigBandSaxes
BANK 0 109 BigBandUnison 
66 BigBandUnison
BANK 0 108 BigBandOctave 
66 BigBandOctave
BANK 0 115 Moonlight 
71 Moonlight
BANK 0 119 BalladSection 
66 BalladSection
BANK 0 112 BaritoneSax 
67 BaritoneSax
BANK 104 0 OrchestralFlute 
73 OrchestralFlute
BANK 104 0 OrchestralOboe 
68 OrchestralOboe
BANK 104 0 OrchestralClarinet 
71 OrchestralClarinet
BANK 104 0 OrchBassoon 
70 OrchBassoon
BANK 104 2 GermanClarinet 
71 GermanClarinet
BANK 104 2 Flutes&Oboes 
73 Flutes&Oboes
BANK 104 1 Clarinet&Flutes 
71 Clarinet&Flutes
BANK 104 1 Clarinet&Oboe 
68 Clarinet&Oboe
BANK 104 2 DoubleReeds 
68 DoubleReeds
BANK 104 1 OrchWoodwind 
70 OrchWoodwind
BANK 0 115 ClassicalFlute 
73 ClassicalFlute
BANK 0 113 ClassicalOboe 
68 ClassicalOboe
BANK 0 114 JazzClarinet 
71 JazzClarinet
BANK 0 112 EnglishHorn 
69 EnglishHorn
BANK 0 114 JazzFlute 
73 JazzFlute
BANK 0 112 Piccolo 
72 Piccolo
BANK 0 113 BalladPanFlute 
75 BalladPanFlute
BANK 104 1 AltoFlutes 
73 AltoFlutes
BANK 0 116 FluteEnsemble 
73 FluteEnsemble
BANK 0 114 Nay 
77 Nay
BANK 0 118 DiZi 
73 DiZi
BANK 0 116 Sheng 
109 Sheng
BANK 0 112 Shakuhachi 
77 Shakuhachi
BANK 0 112 Bagpipe 
109 Bagpipe
BANK 0 112 Recorder 
74 Recorder
BANK 0 112 Ocarina 
79 Ocarina
BANK 0 112 Whistle 
78 Whistle
BANK 0 116 Choir&Pad.GospelVoices 
52 Choir&Pad.GospelVoices
BANK 0 118 Humming 
52 Humming
BANK 0 114 HahChoir 
52 HahChoir
BANK 0 118 SweetHeaven 
88 SweetHeaven
BANK 0 121 DreamHeaven 
88 DreamHeaven
BANK 0 117 Mmh 
52 Mmh
BANK 0 113 GothicVox 
53 GothicVox
BANK 0 119 BellHeaven 
88 BellHeaven
BANK 0 120 PanHeaven 
88 PanHeaven
BANK 0 122 ProHeaven 
88 ProHeaven
BANK 104 1 CrossPhase 
101 CrossPhase
BANK 104 3 GalaxyPad 
88 GalaxyPad
BANK 104 4 NightMotion 
88 NightMotion
BANK 104 0 MorningDew 
94 MorningDew
BANK 104 1 Choir&Pad.Aerosphere 
94 Choir&Pad.Aerosphere
BANK 104 4 NewAtmosphere 
89 NewAtmosphere
BANK 104 0 VPSoft 
89 VPSoft
BANK 104 2 HotSwell 
95 HotSwell
BANK 104 2 DarkFatSaw 
89 DarkFatSaw
BANK 104 1 VaporPad 
89 VaporPad
BANK 104 1 SpaceRider 
95 SpaceRider
BANK 104 2 PearlsPad 
88 PearlsPad
BANK 104 0 BreathPad 
91 BreathPad
BANK 104 1 NobleMan 
88 NobleMan
BANK 104 3 DouxFlange 
95 DouxFlange
BANK 104 2 LightPad 
51 LightPad
BANK 104 2 ButterStrings 
50 ButterStrings
BANK 104 0 MediumTunePad 
50 MediumTunePad
BANK 104 0 NylonPad 
99 NylonPad
BANK 104 3 DarkLight 
89 DarkLight
BANK 104 3 AnaDayz 
51 AnaDayz
BANK 104 4 BrightPadTrance 
90 BrightPadTrance
BANK 104 4 OctaveStrings 
50 OctaveStrings
BANK 104 6 ChillinChords 
51 ChillinChords
BANK 104 3 BrightPopPad 
50 BrightPopPad
BANK 104 0 PremiumPad 
51 PremiumPad
BANK 104 1 SoftEnsemble 
50 SoftEnsemble
BANK 104 1 80sPad 
51 80sPad
BANK 104 3 BrightPadClassic 
90 BrightPadClassic
BANK 104 0 AmbientPad 
88 AmbientPad
BANK 104 5 BrightFatSaw 
90 BrightFatSaw
BANK 104 0 Trance.MW 
95 Trance.MW
BANK 104 0 EarlyDigital 
93 EarlyDigital
BANK 104 5 Bellsphere 
88 Bellsphere
BANK 104 2 SixthSense 
101 SixthSense
BANK 104 0 PercPad 
101 PercPad
BANK 0 119 SuperDarkPad 
89 SuperDarkPad
BANK 0 120 AnalogPad 
89 AnalogPad
BANK 0 121 DarkAngelPad 
89 DarkAngelPad
BANK 0 122 LitePad 
89 LitePad
BANK 0 112 PopPad 
90 PopPad
BANK 0 114 GloriousPhase 
90 GloriousPhase
BANK 0 119 AnalogSwell 
95 AnalogSwell
BANK 0 112 Skydiver 
101 Skydiver
BANK 0 114 HipaStrings 
95 HipaStrings
BANK 0 113 BrightSawPad 
90 BrightSawPad
BANK 0 115 BigOctavePad 
90 BigOctavePad
BANK 0 115 GoldenAge 
88 GoldenAge
BANK 0 114 Solaris 
94 Solaris
BANK 0 113 Insomnia 
94 Insomnia
BANK 0 114 Mediterrain 
99 Mediterrain
BANK 0 115 OberSweep 
95 OberSweep
BANK 0 116 TimeTravel 
88 TimeTravel
BANK 0 113 Bubblespace 
101 Bubblespace
BANK 8 32 MagicBell 
120 MagicBell
BANK 0 117 MellowPad 
95 MellowPad
BANK 0 115 NeoWarmPad 
89 NeoWarmPad
BANK 0 113 CyberPad 
99 CyberPad
BANK 0 113 BrightOber 
95 BrightOber
BANK 0 118 DarkPad 
95 DarkPad
BANK 104 3 Synth.ClubLead 
62 Synth.ClubLead
BANK 104 21 HandsUp! 
90 HandsUp!
BANK 104 20 Gemini 
90 Gemini
BANK 104 24 PunchyChordz 
90 PunchyChordz
BANK 0 115 Skyline 
84 Skyline
BANK 0 122 Oxygen 
81 Oxygen
BANK 0 123 Matrix 
81 Matrix
BANK 0 120 WireLead 
81 WireLead
BANK 0 119 SoftR&B 
80 SoftR&B
BANK 0 118 EarlyLead 
81 EarlyLead
BANK 104 2 LektroCodes 
84 LektroCodes
BANK 104 5 SoftSquare 
80 SoftSquare
BANK 104 4 WildPWM 
80 WildPWM
BANK 104 1 DetunedVintage 
84 DetunedVintage
BANK 104 1 PWMLead 
81 PWMLead
BANK 104 12 SimpleComp 
81 SimpleComp
BANK 104 6 BalladComp 
88 BalladComp
BANK 104 0 HeavenBell 
100 HeavenBell
BANK 104 7 Synth.BrightPadBell 
88 Synth.BrightPadBell
BANK 104 4 ResonanceComp 
62 ResonanceComp
BANK 104 0 HPFDance 
90 HPFDance
BANK 104 8 DetunedSawOctave 
81 DetunedSawOctave
BANK 104 9 DancyHook 
81 DancyHook
BANK 104 5 TrancePerc 
81 TrancePerc
BANK 104 13 Chordmaster 
81 Chordmaster
BANK 104 2 DigitalSequence 
87 DigitalSequence
BANK 104 3 AnalogSeq 
87 AnalogSeq
BANK 104 4 TranceSeq1 
87 TranceSeq1
BANK 104 5 TranceSeq2 
87 TranceSeq2
BANK 104 1 TranceSeq3 
90 TranceSeq3
BANK 104 4 FaaatComp 
51 FaaatComp
BANK 104 7 FatSawHook 
51 FatSawHook
BANK 104 5 DanceChords 
51 DanceChords
BANK 0 112 DanceHook 
86 DanceHook
BANK 0 113 OctaveHook 
86 OctaveHook
BANK 0 127 PunchyHook 
81 PunchyHook
BANK 0 118 HipaLead 
84 HipaLead
BANK 0 114 CryingLead 
87 CryingLead
BANK 104 0 MouthLead 
81 MouthLead
BANK 104 7 PunchLead 
81 PunchLead
BANK 104 6 PercSeqFS 
87 PercSeqFS
BANK 104 7 PercSeqFM1 
87 PercSeqFM1
BANK 104 8 PercSeqFM2 
87 PercSeqFM2
BANK 104 11 PercSeqSaw 
81 PercSeqSaw
BANK 104 9 PercSeqHipa 
87 PercSeqHipa
BANK 104 0 SynthSticks 
106 SynthSticks
BANK 104 0 SazFeeze 
97 SazFeeze
BANK 104 1 EasternAir 
97 EasternAir
BANK 104 1 Xtune 
87 Xtune
BANK 104 0 PitchFall 
103 PitchFall
BANK 0 104 RSSawLead1 
81 RSSawLead1
BANK 0 106 RSSawLead2 
81 RSSawLead2
BANK 0 108 RSTechSaw 
81 RSTechSaw
BANK 0 109 RSDualSaw 
81 RSDualSaw
BANK 0 113 RSWarmPad 
91 RSWarmPad
BANK 0 107 RSRampLead 
81 RSRampLead
BANK 0 114 RSDistortionLead 
83 RSDistortionLead
BANK 0 119 RSQuackLead 
84 RSQuackLead
BANK 0 123 RSSynthPad 
89 RSSynthPad
BANK 0 124 RSNoisePad 
89 RSNoisePad
BANK 0 126 RSAnalogPad 
89 RSAnalogPad
BANK 0 127 RSDualSquare 
80 RSDualSquare
BANK 0 125 RSTeknoMan 
89 RSTeknoMan
BANK 0 116 RSShortResonance 
90 RSShortResonance
BANK 0 105 RSSync1 
81 RSSync1
BANK 0 119 RSSync2 
87 RSSync2
BANK 104 5 BriteDecay 
84 BriteDecay
BANK 104 6 PWMPercussion 
81 PWMPercussion
BANK 104 3 VinalogSaw 
81 VinalogSaw
BANK 0 120 Noise 
122 Noise
BANK 0 112 Percussion.Vibraphone 
11 Percussion.Vibraphone
BANK 0 113 JazzVibes 
11 JazzVibes
BANK 0 114 Vibes&Flutes 
11 Vibes&Flutes
BANK 0 112 Marimba 
12 Marimba
BANK 0 112 Xylophone 
13 Xylophone
BANK 8 33 Vibes&JazzGuitar 
11 Vibes&JazzGuitar
BANK 0 112 Celesta 
8 Celesta
BANK 0 112 Glockenspiel 
9 Glockenspiel
BANK 0 112 SteelDrums 
114 SteelDrums
BANK 0 112 TubularBells 
14 TubularBells
BANK 0 112 Kalimba 
108 Kalimba
BANK 0 112 Dulcimer 
15 Dulcimer
BANK 0 112 Timpani 
47 Timpani
BANK 104 8 StackBell 
88 StackBell
BANK 104 9 NiceBell 
88 NiceBell
BANK 0 112 MusicBox 
10 MusicBox
BANK 127 0 DrumKit.RealDrums 
91 DrumKit.RealDrums
BANK 127 0 HouseKit 
60 HouseKit
BANK 127 0 AcousticKit 
89 AcousticKit
BANK 127 0 RockKit 
90 RockKit
BANK 127 0 SymphonyKit 
48 SymphonyKit
BANK 126 0 BassDrumKit 
20 BassDrumKit
BANK 126 0 DrumKit.ReverseBDKit 
21 DrumKit.ReverseBDKit
BANK 127 0 PowerKit1 
87 PowerKit1
BANK 127 0 PowerKit2 
88 PowerKit2
BANK 127 0 BrushKit 
40 BrushKit
BANK 127 0 AnalogT8Kit 
58 AnalogT8Kit
BANK 127 0 AnalogT9Kit 
59 AnalogT9Kit
BANK 127 0 BreakKit 
57 BreakKit
BANK 127 0 HipHopKit 
56 HipHopKit
BANK 127 0 DanceKit 
27 DanceKit
BANK 127 0 StudioKit 
86 StudioKit
BANK 127 0 HitKit 
4 HitKit
BANK 127 0 JazzKit 
32 JazzKit
BANK 126 0 PopLatinKit 
43 PopLatinKit
BANK 127 0 RoomKit 
8 RoomKit
BANK 127 0 ElectroKit 
24 ElectroKit
BANK 127 0 AnalogKit 
25 AnalogKit
BANK 126 0 CubanKit 
40 CubanKit
BANK 126 0 TurkishKit 
67 TurkishKit
BANK 126 0 ArabicKit1 
36 ArabicKit1
BANK 126 0 ArabicMixKit 
64 ArabicMixKit
BANK 126 0 IndianKit 
114 IndianKit
BANK 126 0 ChineseKit 
124 ChineseKit
BANK 127 0 ChineseMixKit 
127 ChineseMixKit
BANK 126 0 SFX.Kit1 
0 SFX.Kit1
BANK 126 0 SFX.Kit2 
1 SFX.Kit2
BANK 126 0 NoisesKit 
8 NoisesKit
BANK 10 0 OrganFlutes.OrganFlutes 
8 OrganFlutes.OrganFlutes
BANK 10 1 USDSmile 
8 USDSmile
BANK 10 2 ReggaeBars 
8 ReggaeBars
BANK 10 3 WarmTheatre 
8 WarmTheatre
BANK 10 4 OrganPops 
8 OrganPops
BANK 10 5 RockOrgan 
8 RockOrgan
BANK 10 6 SoulPercussion 
8 SoulPercussion
BANK 10 7 GospelTruth 
8 GospelTruth
BANK 10 8 PadOrgan 
8 PadOrgan
BANK 10 9 FullOrgan 
8 FullOrgan
BANK 10 0 StringBars 
9 StringBars
BANK 10 1 LatinSpin 
9 LatinSpin
BANK 10 2 ShadyBars 
9 ShadyBars
BANK 10 3 FunkOrgan 
9 FunkOrgan
BANK 10 4 BalladOrgan 
9 BalladOrgan
BANK 10 5 RichBars 
9 RichBars
BANK 10 6 TrumpetBars 
9 TrumpetBars
BANK 10 7 SoulBars 
9 SoulBars
BANK 10 8 ClariBars 
9 ClariBars
BANK 10 9 JazzSquabble 
9 JazzSquabble

Using Spitfire Orchestra with Reaper (part 2) – Expression control

The Spitfire Orchestra instruments incorporate several control parameters that allow the instrument to be realistically modelled. The parameter changes with respect to time can be recorded alongside the actual played notes. There are three main parameters that can be controlled by the mod wheel and slider controllers. These are :

  • Expression – the control of instrument volume.
  • Dynamic – the control of instrument timbre.
  • Vibrato – the control of instrument pitch modulation.

The parameter changes are stored as MIDI CC (controller change) events intermingled with the note on and off MIDI events. I have designated the CC messages 05, 06 and 07 specifically for Vibrato, Dynamic and Expression respectively. These control messages are re-mapped by Reaper JS plugins before input to the Spitfire instruments to the parameter codes that Spitfire understands, namely 21(vib), 1(dyn), 11(expr).

When an instrument track is recorded, it is possible to control the sliders at the same time and record traces for the three above parameters. The track trace can be shown in the bottom panel of the Reaper MIDI editor window.

The trace may be edited using the mouse to redraw sections by holding down the CTL key and pressing the mouse right button to draw points freehand. This can be a bit messy however.

I have written a custom action and linked it to the “S” key on my MIDI controller. This basically redraws the trace with only eight points per bar and links the points using Bezier curves. This results in a nice smooth reproduction of the original recording. It is then much easier to adjust the curve by drag-and-dropping an existing point or by creating a new point by double clicking.

Sometimes it is better to record the notes without any expression control and then re-record the expression control afterwards. Sometimes it is easier just to manually create the expression trace by double clicking points onto the editor grid.

In order to re-record the expression only, you need to put the record mode into Overdub. Reaper normally records a new take each time. Using Overdub means that the original notes are preserved and new controller events are added. This means that the original controller trace has to be cleared before starting. I have written another custom action and linked it to the “R” key on my MIDI controller. This selects the appropriate controller trace and deletes all the existing points.

The custom actions are described below for the Reaper internal MIDI editor. Note: display the MIDI editor and click on the “Actions” main menu item for MIDI editor specific actions.


Above shows all the custom actions. Also the assignment to the MIDI controller buttons

Above is common action to select the CC events and convert to a smooth trace.


Above is common action to delete all events in the lane.


Above is the action to select the “Expression/Volume” trace.


Above is the action to select the “Expression/Volume” trace and delete existing events ready for re-recording

Guide to creating score writing video exercises with Reaper and Audacity

It is quite difficult to obtain good video clips for the purposes of practicing to write film music. It is necessary to have a video file with only dialog and sound effects of length of about 1 to 4 minutes. Of course it is possible to film your own video on a mobile phone or create a video sequence from video stock clips, and I have done this successfully. I have managed to find a few free clips in the public domain on the Internet. These are pretty bad quality and also comprise of student films which can be a bit rough around the edges. However as an exercise they are ok.

Getting the video clip onto your PC

There is a wealth of film on YouTube. I have devised a workflow to get a clip from YouTube and process it to remove existing music but leave the dialogue in tact.

There are many websites that enable you to extract YouTube clips and MP3s, but they are clunky and can overwhelm you with adverts. There are also some restrictions in place. I found the best way to get a YouTube clip (either video or Audio) is to use a free browser add-on. My example is for Firefox, but I am sure there are others available for other browsers.

The add-on is “Easy YouTube Video Downloader”. It is a great little tool. Whenever you are on the YouTube website and have the video window up, it is always present with a download button as shown….

You simply press the download button and choose the video resolution required. It then downloads the video to the download folder as mp4 or mp3 format.

Getting the video into REAPER

Using video in Reaper is a large subject in itself, but it is very easy to add a video clip to reaper in preparation for film scoring. Simply drag and drop the video file onto the tracks window. You can then split off the start rubbish and tailing rubbish and have a clean video clip.

The video track has the combined video and audio. My first task is to split off the audio from the video as a separate track. I haven’t yet found a one button way of doing this so I do the following :-

1) Duplicate the video track entirely by right clicking on the left hand track window.

2) Render the video track into an audio only track by right clicking on the second video track item…..

3) This produces two takes for the second track. Crop to the latest take by right clicking on the second track item….

4) Finally turn down the fader for the first (video) track. All the audio is on the second track and this can be processed without affecting the video. The two tracks are also in sync.

Using Audacity with Reaper

Audacity is a free tool specifically for editing and processing audio files (Wav, MP3, OGG etc). It is a very useful tool and easy to use. Its worth learning a few of the basic edit operations. I use it a lot for extracting audio clips from band practice and gig recordings. I also use it to edit effect recordings from my ZOOM 1 mini recorder.

Reaper can easily integrate Audacity as an external editor. In Reaper, go to the preferences dialog and select “external editors”….

You add “wav” for the editor type and browse to the location of the installed Audacity application.

Once you have done this, you can right click an audio item in Reaper and choose Audacity to edit it…


Removing original film score

Audacity has the ability to silence parts of the audio. Simply select and highlight a section of the audio trace and press Ctrl + L. So it is possible to manually remove the music. This is quite tedious and Audacity has a plugin that can do this automatically. Note that to do this successfully the audio must be true stereo with the dialog panned centre stage. I could not do this automatically with the above cartoon example as it is a mono recording.

I downloaded a trailer clip for “Capone” and performed the above steps ……

I then selected the entire track and click on the “Effects” menu. I then selected  the “Vocal reduction and isolation” option.

I selected “Isolate Vocals” and played around with the other parameters to get the best effect…

I then normalised the track after the vocal isolation. (also part of the effects menu).

Audacity is a bit clunky in the way it saves the edited audio track. I went to the FILE main menu and selected the appropriate file export option ….


I exported the file to overwrite the original. Reaper allows you to do this. You need to browse to where Reaper is storing the WAV files and this can depend on the way you use it. The following shows how I saved the edit….

Final Tweaks

I then quit Audacity and went back to Reaper. The orignal WAV track was altered with just the vocal dialog and much of the existing music was filtered out.

Some of the music breaks through at a much reduced volume. I added the ReaGate effect to the audio track and adjusted the gate threshold to filter the track further. I was left with a very good music reduction.

It is possible to bounce the audio again to another track and tweak it further manually.

At this point the entire video can be rendered as a single video file, or you can start scoring within the same project.

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.



Instrument Articulations

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.


Expression Control

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.

Orchestral Template

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.




Transferring video from Reaper to a Humax video player

I use Reaper as a video editing tool and for film score composition. When I create a video and render it to a video file, it plays quite nicely on my PC. I have a (fairly old) Humax hard disk TV video recorder that is linked to my TV. I tried to play a video created in Reaper on the Humax, but it failed miserably and it took me a while to figure out how to transfer a video.

I downloaded and installed the VLC media player as part of my Reaper installation in order to play video in Reaper.

In Reaper, render the video as follows :


This will produce a .MOV file and is “xmas.mov” in my example.

Next you have to convert this to a video format suitable for the Humax machine. Run VLC media player and select “Convert / Save” from the main menu item called “Media”. This will show the following dialog.

Add the Reaper video file to the file list. (You can add multiple files for a batch conversion). Press the Convert / Save button and select “Convert”. You will then get the next dialog:

Ensuer the destination file extension is “.mpg”.

Ensure the “Profile” drop down is set to Video – H.264 + MP3 (TS).


Press the button with a spanner icon to change the profile settings. You will need to increase the bitrates for half-decent video resolution. Set a Video bitrate to 800 to 1200 kbs and the Audio to 256 to 320 kbs. The factory defaults are too low.

Click on the Video and Audio Codec Tabs and remember to press the “Save” button.





Press “Start” and the video(s) will be converted. You then copy the video file(s) to a USB memory stick and plug it into the front USB socket on the HUMAX recorder/player.




Adding a MIDI controller to Reaper

This is a recent addition to my home studio. The Korg nanoKontrol2 is a MIDI control surface that connects to the PC using a USB cable. Its an inexpensive versatile piece of kit.

It has the usual transport controls on the left hand side and 8 fader modules to the right. Each fader module has the slider fader, a rotary pot and three switches “S” “M” and “R”. It can be mapped directly to the reaper Transport controls and Mixer, but I intended to use it differently.

The kit comes with a comprehensive PC application that allows you to assign any MIDI control change number to the hardware elements. I used the defaults and this is programmed by applying USB power whilst the “Cycle” and “Set Marker” buttons are pressed.

When the unit is plugged in, it must be enabled for input on the MIDI devices dialog.


Reaper has a very powerful “Actions” feature. It is possible to map the internal system functions (e.g. start recording) to a PC key press or a hardware element on the controller itself. Furthermore, it is possible to chain several system functions as a single custom action. (Macro) Reaper actions have a “Learn” feature whereby you select the action you want and then press a PC key or twiddle a pot on the nanoKontrol2 and a link is made automatically.


What I have done is to map the Transport controls directly to the Reaper transport controls. I have then assigned the fader modules as follows:-

Fader Module 0 (first far left) — Master track

“S” : Toggle the mixer window on the PC screen

“M” : Invoke Reaper MIDI editor for selected track items. Set record mode to overdub.

“R” : Invoke external MIDI editor(Cakewalk) for current track

Fader: Adjust Master volume

Fader Module 1 (far left) — Selected track

“S” : Set automation mode to Write for the selected track

“M” : Set automation mode to Read for the selected track

“R” : Set automation mode to Write for the selected track, start Play to record automation.

Fader: Adjust selected track volume

Fader Module 5 (far right) — Instrument vibrato

“S” : Display vibrato MIDI CC points lane. Set trace to Bezier and reduce points to 8 per bar in order to smooth trace.

“R” : Display vibrato MIDI CC points lane. Clear points ready for re-recording trace only. (Record mode has previously been set to Overdub)

Fader: Adjust selected track vibrato on Spitfire VSTi

Fader Module 6 (far right) — Instrument dynamic/quality

“S” : Display dynamic MIDI CC points lane. Set trace to Bezier and reduce points to 8 per bar in order to smooth trace.

“R” : Display dynamic MIDI CC points lane. Clear points ready for re-recording trace only. (Record mode has previously been set to Overdub)

Fader: Adjust selected track expression on Spitfire VSTi

Fader Module 7 (last far right) — Instrument expression/volume

“S” : Display expression MIDI CC points lane. Set trace to Bezier and reduce points to 8 per bar in order to smooth trace.

“R” : Display expression MIDI CC points lane. Clear points ready for re-recording trace only. (Record mode has previously been set to Overdub)

Fader: Adjust selected track quality on Spitfire VSTi


The default mode for the switches is to issue two MIDI CC messages, one for the key press and one for the key release. There is another toggle  mode that issues a single CC message for a key press/release and toggles the state. It also switches a red LED on and off. These switch modes can be independently programmed.

Unfortunately, REAPER does not seem to allow the Learn mode to distinguish between key press and key release messages. Well it kinda does by setting the learn range to -65..+65 for a switch, but it doesn’t always work.

Tempo mapping and time stretching MIDI in Reaper

In my earlier post about cleaning up old Portastudio recordings, I showed how it could be done using stretch markers. This post shows an alternative way that may be quicker. It also shows up all the frustration and problems I had in tempo mapping.

I found that creating new tempos did not work intuitively and it seemed to add extra bars and knocked out the markers and timing for no particular reason.etc. etc. etc. The designers of Reaper have made a complete arse of something that should be so simple.

Reaper has a neat facility that inserts a tempo change for a section of music bounded by two ordinary markers. You are able to specify the time signature and number of bars and it calculates the tempo and adjust the beats grid for the region.

The reasons for doing this are :

  1. In score writing, markers are placed at points of interest e.g. a scene change. You may want the first bar to start here and the music to end on the next marker. You want an integral number of bars to fill the gap.
  2. You want to synchronise a recorded track (MIDI or Audio) to a fixed tempo.
  3. You want to clean up some freely recorded keyboard playing by locating markers at the start of each bar. Once every thing is bar wise it can be quantised with reference to the beats grid.
  4. You may need to mix time signatures. e.g 5 bars of 4/4, 3 bars of 3/4.

To do this manually :

  1. Double click at the track headings between two markers. This will set a time selection exactly between the markers.
  2. Right click and select “Create measure from time selection (detect tempo)
  3. A dialog allows you to enter the time signature and number of bars required.
  4. A tempo change is inserted and the grid is changed to accomodate the necessary bars.

But don’t expect this to work if you haven’t changed the timebase – see later !!!!


The following shows a process to tempo map both MIDI and WAV tracks.


Firstly, I recorded a MIDI track of an oom-pah-pah piano with deliberate speeding up and slowing down. The start of the oom shows as a long low note and it does not line up with the underlying grid.

Although oom-pah-pah is technically 3/4 time, I am going to assume it is in 4/4 time. i.e. I want the start of the oom to be the start of a bar and for there to be 4 beats before the next oom.


I then generated a audio (WAV) track from the MIDI and this is shown as the second track. Notice how the MIDI and WAV align together



I then played the tracks from the beginning and pressed the “M” key at the start of each bar. This generated a marker (the vertical red line) at the start of each bar. I then made small adjustments to align the marker with the start of the oom.



I then went to the project settings and set the Timebase to “TIME”. This is necessary to switch off any automatic time stretching when the grid is changed.



I also created two useful Actions and linked them to the Alt-F12 and Alt-F11. In Reaper you are able to create custom actions that contain a list of the in-built system actions.


The first action sets up a time selection between two adjacent markers at the current cursor. It then inserts a tempo change so that region selected occupies 1 bar and is divided into 4 beats. (note that the default is 4 beats, this can be changed by doing the action manually and entering the correct info in the displayed dialog box)


The second action selects all the tracks and splits the tracks at the marker positions. I found that if the MIDI track was not split it was not possible to change tempos independently.



This action really caused me a headache !! You have to “Ignore project tempo” for MIDI tracks. Why is this here ?? Surely the midi track should obey all tempo changes at all times. Surely the project tempo is a tempo change marker at the start of the project. The legend is confusing as well — if i tick the box does it ignore the project tempo and use a tempo of 120 bpm instead.

Select the MIDI track and select the Source Properties dialog from the Items menu.



I manually inserted a tempo change for the first bar to ensure the number of beats per bar (e.g. 3/4 4/4) was correct and the number of bars was 1.

I then put the cursor to the start of the project and pressed the Alt-F12 key to invoke my custom actions macro. This inserted tempo changes at each marker. You can see how the grid aligns to the markers for the actions carried out so far. The actual tempos are shown just below the marker text.


I then displayed the Master Track by right clicking in the left hand side of the track display. You can see that each tempo is displayed using a horizontal turquoise line.


I then pressed the Alt-F11 key to invoke my second action macro. This splits each track at the tempo change. This must be done for any tempo manipulations. Don’t know why but if you don’t do it you will get unexpected side effects. The tracks can be glued back together afterwards.


The aim is to be able to alter the tempo changes and have the tracks adjust automatically. e.g.

  • Remove all the points and have a constant tempo.
  • Make some bars have a constant tempos and others to have different tempos.
  • Make a tempo change gradually by drawing a tempo profile.
However, none of this is possible until the project settings are changed back to BEATs in the following dialog:-




Finally the tempo can be adjusted as shown below and the MIDI and WAV tracks are time stretched to fit exactly.






Fixing the touch screen on a Hannspree tablet

I have a Hannspree Android tablet with a 13.3″ screen. I use it to display sheet music when playing the piano. It is a very useful item. The screen is not quite A4 size but is adequate for lead sheets. I would prefer a larger screen with an E-ink display, but the latest offering is in excess of £600. My Hannspree tablet was £200 so I want to get the most out of it as it was purchased primarily for reading sheet music.

Unfortunately as with all consumer items, it has developed a serious fault. One day I discovered that the right hand of the screen was not responding to touch. During the course of the year the dead “column” became progressively wider and is now half the screen. It is becoming a bit difficult to operate. I wanted to fix it.

I wondered about the possible reasons for this failure. It could be a disconnection of a sensor wire to the screen, static damage to the detector, damage to fine wires embedded in the glass or maybe X rays from airport scanners. Tablet screens detect touch by change in capacitance. The sensors are embedded in the top glass that lays over the display and routed by a flexible printed cable to a microcontroller. The high impedance inputs to microcontrollers are susceptible to static damage and this is my number one suspect for the failure.

I have never looked inside a tablet before so i consulted some utube videos on how to take it apart. The tablet has a back panel that is secured by screws and plasticated internal catches. It is fairly easy to dismantle once you get the knack. I needed to fashion a special tool by taking a used credit card and sharpening one side to a knife edge using some sand paper.

There are two micro screws on the edge that houses all the electrical sockets. I used a spectacle screwdriver to remove these. If you look closely at the sockets you can see a hairline where the back panel joins the main body. You need to judiciously slide the plastic knife edge of the tool into this gap to lever the panel away. The internal catches are released when the knife edge slides passed them. You should not insert the tool too far in. Slide the tool all the way around the tablet edge to get the entire panel off. Note that the panel simply clicks back with a small amount of pressure around the edges.

Watch out for the plastic power button thats falls away.

Also remove an SD card if fitted before starting.


The photo shows the insides once the panel has been removed. The battery is mid centre and is soldered with two wires to the processor board on the right. This would be an easy item to replace. The cables are simply taped down with stcky tape.

The brown connector cable with micro-controller at the top right corner is the interface to the touch screen. The plastic printed cable is joined to the main processor board using a pinch connector. These have a plastic bar along the top. You lift the bar up using a fingernail to release the cable and the cable can be pulled out.



The next photo shows the touch screen controller in more detail. The controller connects to the touch screen using the top printed flexible cable and connects to the main processor board with the bottom printed flexible cable. The controller measures the touch sensor capcitance, sorts out the position information and communicates using a (SPI) serial bus. This is the beast that needs replacing.

I looked up the code numbers F-WGJi3308-V1 ILI2303 M1447 printed in white at the top on the Ali-Express website and got the following :-

Ali-Express is a chinese website that sources just about everything. I ordered the part for $40 and started to wait……………………………………………… and wait………………………………….

The replacement part arrived after a month and a day. It was well packed and in tact when I unwrapped it carefully. The replacement part is the entire touch screen glass, microcontroller and flexible cables assembly together with some double sided adhesive strips. It has two protective plastic films each side.


I took the back off the tablet and disconnected the old touch sensitve screen and connected the new one in its place. I then powered up and checked that the new screen was functional. I then disconnected it.

The touch sensitive screen is attached to the plastic frame using double sided adhesive tape. The hard bit is to persuade the screen to leave the plastic frame. I wanted to remove the glass panel in tact but it cracked halfway through. It is probably best to crack the screen in the first place.

However I gently prised the screen using a sharp knife at one corner and inserted a blade of tough, thin plastic between the frame and the glass. I then pulled and pushed it to release the glass. Once I had got a sizeable gap, I use a sharp knife to prise the glass away from the frame. I wore glasses during this in case the glass shattered and projected splinters into my eyes.

There are two loudspeaker grills that are held by the glass. These come loose and I stowed them safely away.




Most of the adhesive tape was attached to glass which I dumped. I used lighter fluid and tissue to clean residual parts of adhesive from the frame, as shown above. Note that the gap at the bottom right is to allow clearance to push the cable and micro-controller through.


I then cut the new adhesive strips to size and stuck them on the frame. The uppermost side is left covered by the backing paper. Note that a hole is needed where the camera is and the slot for cables needs to be uncovered.

The speaker grilles were then placed in position.

I then placed the new glass screen in position and checked that the cables could be threaded through OK and that it fitted the frame nicely. It was a good fit so I proceeded to do the sticking down.


It is a bit fiddly to manoeuvre the screen into position, so I partially uncovered the adhesive tape and bent the backing tape so that I could extract it with the glass more-or-less in position.

Before sticking down, I cleaned the LCD screen using a rag and methylated spirit. I also put the grilles in position and removed the glass protective film. Note that there are no second tries at doing this so everything must be right first time !!!

I positioned the screen,threaded the cable and micro-controller, pulled out the backing tapes and carefully set the glass into the frame at the edges. This went really smoothly.

I then turned the tablet over and re-connected the ribbon cable to  the processor card. I then put the back panel on the tablet and snapped it into place.

I powered on and the tablet was fixed !!!


I was really chuffed about this and this was £31 well spent. I had previously contacted Hannspree about getting it fixed and received NO REPLY from the toe-rags. I estimate that the time spent to fix this is about an hour so an honest repairer would probably charge about £80 to do the entire job including parts. I say honest as there are some toe-rags out there that would invent other things to fix and charge extra.

The tablet cost £200 so any repairs over £100 are probably not economic, such is our throwaway society but I think this repair was worth it. I now feel confident enough to repair mobile phones that have cracked screens.