Home
Contact Us
Terms of Business
Accessibility Petition
Articles and Solutions
Links

What is an Instrument Definition File?

The Cakewalk Pro Audio and Sonar software packages use instrument definition files to allow them to control any hardware MIDI devices that you may have attached to your computer.

The most obvious difference that an instrument definition file makes is that you can easily select the full range of sounds provided by your instrument from within a MIDI track's properties dialog box, but the definition also comes into play when you insert controller messages and when you play MIDI drums into a track, as you will see individual drum names instead of note names in the Event View.

File Structure

Cakewalk instrument definition files are simple text files, so you can create them in any text editor (e.g. Notepad), but you have to save them with a .ins extension instead of the more usual .txt extension.

The files have a particular layout that it is important to understand and use. This is most easily explained by example, so here's a really simple definition that I created for my Kenton Control Freak:

; Cakewalk Instrument definition file for the
; Kenton Control Freak, Studio Edition
; Tim Burgess, October 2003


.Patch Names


[Control Freak Programs]
0=
1=
2=
3=
4=
5=
6=
7=
8=
9=
10=
11=
12=
13=
14=
15=
16=
17=
18=
19=
20=
21=
22=
23=
24=
25=
26=
27=
28=
29=
30=
31=
32=
33=
34=
35=
36=
37=
38=
39=
40=
41=
42=
43=
44=
45=
46=
47=
48=
49=
50=
51=
52=
53=
54=
55=
56=
57=
58=
59=
60=
61=
62=
63=

; ---------------------------------------------------------------------

.Note Names

;
----------------------------------------------------------------------

.Instrument Definitions

[Kenton Electronics Control Freak Studio Edition]
Patch[0]=Control Freak Programs

The following sections will describe each part of this definition and show you what they do.

Comments

Any line beginning with a semi-colon character is treated as a comment so, in the example, there is a description of the device that the file is intended to define and my name as the author.

Patch Names

This is the first section that does useful work. We have the section heading:

.Patch Names

The section header is followed by a couple of blank lines - I learned to write these files by looking at other examples and I don't think the blank lines do anything other than make the file more readable, but I keep them in anyway.

We then get a sub-section heading, surrounded by square brackets:

[Control Freak Programs]

Within the Patch Names section, any sub-section heading like this is treated as a name for a bank of patches - there's probably a limit to the length of the name you can use, but I don't know it.

Underneath the bank name sub-heading we get the list of presets, patches, programs (whatever you and/or your device manual like to call them):

0=
1=
2=

and so on...

You can define up to 128 patches in each bank sub-section and the numbering can go from 0 through 127 or 1 through 128, depending on your device (check the reference section of your manual).

Normally you would provide a name after the equals sign when listing your patches, like this:

1=Grand Piano
2=Electric Piano

The names you use should reflect the names listed in the voice list for your device (back to the manual again). The reason that I didn't put names in my Control Freak definition is that the device is programmable and I tend to shift the patches around to different numbers to suit my needs - this means that my list of names would be ever-changing. Additionally, I only listed 64 patches instead of 128 and this is because the Control Freak only has 64 patch memory locations.

You can have as many bank sub-sections as you like - just work your way through the bank and voice list in your manual until you have the complete set listed (this can be a big job for a modern synth with hundreds or thousands of patches. Your resultant Patch Names section should look something like:

.Patch Names


[MySynth Bank 1]
0=Grand Piano 1
1=Electric Piano 1

[MySynth Bank 2]
0=Grand Piano 2
1=Electric Piano 2

Instruments

The instruments section of the file always seems to be the last section, as it ties together all of the other sections. I am going to cover it here, however, as it may be the only other section you need to get access to your sounds. If you want more control (and you are prepared to do more digging in the reference manuals for your equipment), you can add the additional sections, described below, between the Patch Names section and the Instruments section.

First, you need to put the section heading into your file, like this: ;
----------------------------------------------------------------------

.Instrument Definitions

You then add sub-sections surrounded by square brackets. These are just like the bank sub-sections we talked about previously, but this time they represent the names of the instruments you are defining (it is possible to have more than one instrument definition in each file.

This is the definition sub-section for the Control Freak:

[Kenton Electronics Control Freak Studio Edition]

We then add the list of banks that we described in the Patch Names section:

Patch[0]=Control Freak Programs

There are a couple of things to notice about this last entry:

Bank Numbers

Once upon a time, not so long ago, you could be the proud owner of a synth that had a hundred presets and you would be the envy of all your friends and probably the despair of your bank manager. This was OK, as the original MIDI specification allowed for a device to have up to 128 presets (wow).

However, the equipment manufacturers indulged us in our lust for more and more sounds and started to create instruments with hundreds then thousands of presets and MIDI looked like it had hit a bit of a brick walllllllllll. In order to solve the problem, the various hardware manufacturers devised a variety of methods to allow preset selection using MIDI:

Most modern equipment uses the method of sending controller zero and controller 32, but it is important to understand that this is at the whim of the manufacturer - MIDI still doesn't lay down a standard for coping with changing from one bank of presets to another.

The first two methods used a single MIDI continuous controller message to select a bank. Since CC messages are 7 bits long, this allowed for up to 128 banks to be selected. The appropriate CC message was given the value of the bank number and sent, followed by a program change message with the value of the desired preset number.

The third method (which is by far the most widely used nowadays) uses both the cc 0 and CC 32 messages and allows up to 16129 banks of 128 presets to be accessed. I would like to state, on record, that I would like you to buy me a synth that has all of the possible banks full of presets. Don't worry, nobody's built one yet. This is the method that Cakewalk applications refer to as "Normal" in the MIDI Track Properties dialog box, where you are asked to choose the bank selection method. This method sends out a CC 0 message with its value set to part of the bank number, followed by a CC32 message with its value set to the remainder of the bank number. The receiving equipment acts on the bank change when a third message, a program change with the value of the desired preset, is received. It doesn't matter what order the CC0 and CC32 messages are transmitted, as the receiving equipment won't normally calculate the actual bank number required until the program change message arrives.

The final method, which I think was used by Kurzweil, used a normal program change message set to a value between 100 and 127 to select one of 28 available banks.

So, what do you write into the square brackets after the Patch entry? Well, it depends on the bank select method that your synthesizer uses, so it's back to the manual (do you see a trend emerging here?). If the manual confuses you then who you gonna call? Ghostbusters are definitely not going to help, so give the synth manufacturer's technical support a ring.

Once you know which method is being used, you can calculate the required bank numbers, as follows:       
Bank Select Method Calculation
Normal (Controllers 0 and 32)Bank number = Bank MSB multiplied by 128) + Bank LSB
Controller 0 only Bank number = The value of Controller 0 (Bank MSB)
Controller 32 onlyBank number = the value of Controller 32 (Bank LSB)
Patch 100...127 Bank number = patch number - 100
table end In most cases your device will come with a voice list that describes what presets exist in which banks, together with the required numbers for the Bank MSB, Bank LSB and program change messages, so find the bank you are trying to define, look up the number(s), do the calculation and put the result between the square brackets, as follows:

Patch[25]=MySynth Bank 1

The Control Freak is the simplest possible example, as it has only one bank of patches. For this reason, we can get away with the Patch[0] entry, but most synthesizers have many banks of patches that are called up by sending the device a bank number to move to before an individual sound is called up by sending it's program number. It is important that you learn how to calculate bank numbers if you are going to be able to make your instrument definition useful with anything other than a really simple device.

To provide a more useful example, here's my definition file for the TC Electronics M-One XL effects processor:

; Cakewalk Instrument definition file for the
; TC M1XL effects processor
; Tim Burgess, March 2007

.Patch Names


[M1XL Factory Bank 1]
0=M-One XL Halls
1=Pop Vocals
2=Small'n'Big
3=Concert Halls
4=Dance Vocals
5=Fat Vocal
6=Two Small Rooms
7=Big Vocal Lead
8=Medium Room/Big Hall
9=CountryRoom Big/Smal
10=Crispy Room & Delay
11=M-One Hall & Delay
12=Vox Plate/Warm Hall
13=Warm Club & Sn Plate
14=Warm Plates
15=Vocal Ensemble
16=Small Arena/Lrg Hall
17=Dry FAT/Double
18=Dry Feel 1&2
19=Dry Feel /Background
20=Empty Room & Delay
21=Rock'n Room'n Hall
22=Rock'a Billy Rev/Del
23=Wood Room Large/Big
24=Wood Room Small/Mid
25=Female Air Big Hall
26=Vox Bleed+Slap Room
27=Big Choir
28=Bright Hall & Delay
29=Vocal Ambience
30=Big Vocal & Gtr. Cho
31=Air/Small Guitar Rev.
32=Super Bright
33=Acc. Gtr. Cho&Detune
34=Acc. Gtr Ambi & Cho
35=Guitar Hero
36=Guitar Reverb Mid/Large
37=For Guitar
38=Jumping-Cat Guitar
39=Steel Strings
40=Jazzy Saxes
41=Drums & Perc
42=Drum Ambience
43=Large Snare/Tom
44=Long Snare/Tom Hall
45=Sn Gate Reverb
46=Sn Plate/Ballad Sn
47=Snare FAT/Hard
48=Snare + Lead Vocal
49=Snare Natural/Crisp
50=Snare Tight/InYrFace
51=Small Plate/Sn Hall
52=Horn Rev - Perc Rev
53=El Piano Verb&Chorus
54=Clavinet Pha & Rev
55=Wurly Trem & Chorus
56=Roomsssssss 1/2
57=Careless Whisper
58=Big Viking Hall
59=Ambience & Hall
60=Ambience & Room
61=NonLin
62=PingPong & Hall
63=Play Them Noseflutes
64=Pop Dr./Vocal
65=Small Room & Delay
66=Smooth Plate L/XL
67=Tight or BigBright
68=Tiles & Delay
69=Vintage Lead Vocals
70=Vintage Plate+Spring
71=Flutter Room & Delay
72=Hold Me Now Drm/Voc
73=80’s Hall and Chorus
74=Vocal-Dynamic
75=VocComps Hard/Soft
76=Short Reverb Voc/Sn
77=Vox Plate/Drum Room
78=Eggbox & Dark Hall
79=Complex Ambience
80=Concrete Basement
81=Closet + Locker Room
82=Gothic Cave
83=Bathroom
84=Small With Open Door
85=Empty Train Station
86=Wide Chorus&Flanger
87=Windy Reverb
88=Far Away / Volcano
89=XL Bright Hall/Pitch
90=XL-Plate Voc/Spring
91=Reverb & Gate
92=TweedSpring & Phaser
93=Double-Boomerang
94=Classic Devils Voice
95=BassBoomer
96=SFX:Phaser&Tremolo
97=Space Invaders
98=Spookey Voice
99=Stone Chorus

[M1XL Factory Bank 2]
0=M-One halls
1=Vintage Hall & Room
2=Natural Hall + Ambient
3=Vocal/Choir Halls
4=Vocal ambient & Hall
5=Vocal Delay & Spring
6=Vocal Hall/Ahort SN
7=VOC Large/Med plate
8=VOC Amb &Liveverb
9=Large VOC Hall/Room
10=Vocal Amb+ small Room
11=Drum &Perc Room
12=Share/Tom Live/Plate
13=Big Snare/ Real Room
14=Toms & a Big Snare
15=Toms & a Short snare
16=Drum Amb+Short Snare
17 Perc Plate +S Room
18=Short Plate + L Room
19=Ambience & Liveverb
20=Tap Delay/Small Hall
21=Small/Large Halls
22=Gold Plate/Warm Hall
23=Plate & Spring
24=Bright Hall & Room
25=Wide/ Narrow Room
26=Medium/Small Room
27=Large /Medium Room
28=Large/Small Chamber
29=Slap Dly + Med Room
30=Detune and Med Room
31=Genericl Hall/Spring
32=Generic2 Amb/Live
33=Live Hall +Slapbak
34=Saxophone Room
35=Horns Hit Me
36=Horns Med/Large Room
37=Synth Hall+Ambience
38=Repeats & Slapback
39=The Pack 1SN 2VOX
40=Delay bleed-Hall
41=Detune bleed- Ambient
42=M-one Magic
43=Tape Delay - Spring
44=Phaser - Plate
45=Delay bleed-Room
46=Hall bleed - Chorus
47=Hall bleed -Hall
48=Room bleed -Hall
49=Small Hall - Hall
50=De-Essed Hall
51=De-Essed Plate
52=Chorused Hall
53=Compresed Live verb
54=Compresed Room verb
55=Wet Chorus-Phaser
56=Party Next Door
57=Sound Check
58=Analog Style Delay
59=Detuned Tape Delay
60=Filtered Octaver
61=70´s Style
62=Room- Large Hall
63=Delay Phased
64=Chorused Ambience
65=Predelayed Hall
66=Chorused Warm Hall
67=Compresed Share Verb
68=Chorused Spring Verb
69=Gated Live Reverb
70=Delays and Hall
71=Five seconds Later
72=Wurlitzer Verb+Delay
73=Spread out Verb
74=Acoustic GTR
75=BG´s Spread
76=GTR Spring & Delay
77=GTR Spring & Chorus
78=GTR Spread
79=Rhodes Verb & Chorus
80=Dual Compressor
81=Dual Gate/ Expander
82=Phaser + Termolo
83=Dual EQ
84=Dual Delays
85=Delay and Chorus
86=Flanger & Chorus
87=Tremolo & Compressor
88=Slap Dly+Spring Verb
89=Phaser & Spring Verb
90=Stereo Compressor
91=Stereo Limiter
92=Stereo Gate / Expander
93=Stereo EQ-Loudness
94=Stereo EQ-Low Boost
95=Stereo EQ-HighBoost
96=Stereo Phaser
97=Stereo Real Hall
98=Stereo Real Room
99=Stereo Hall


; ----------------------------------------------------------------------

.Instrument Definitions

[TC M-One XL]
Patch[0]=M1XL Factory Bank 1
Patch[1]=M1XL Factory Bank 2

In fact, this unit accepts controller 0 bank changes, so the numbers in the square brackets are small, but don't be surprised if the values you end up with for controller 0 + controller 32 banks are very large.

Note Names

Note names are used when you have a preset that maps different sounds to different notes on the synth keyboard. The most common use of this is for drum presets where, for example, a kick drum sounds when you hit note C3, whilst D3 gives you a snare drum and so on. This kind of preset can also be used for special effect presets. In either case, havig note names appear in the Event View isn't very helpful, so we can give each note a name that represents the sound that it generates.

I'm going to write more about this soon, but you should have plenty to do defining your banks, so I think I've got a day or two to finish this section off.

Controllers

This section allows you to describe what MIDI continuous controllers are supported by your device. The most common example is that controller 7 adjusts volume, but there are many others. I'll sort out some examples and put them here in the next day or two.

RPN

These are extensions to the standard controllers, but are another way of adjusting a device parameter. RPN stands for Registered Parameter Number and means that the RPN has been agreed by the various MIDI manufacturers to be reserved for controlling a particular parameter.

NRPN

These are just the same as RPNs, but the parameter assigned to any given NRPN value has not been agreed by committee. This means that different synths might use the same NRPN number for different things.