Guitar | Bass | Keyboard | Microphones | Mixers | Audio Interfaces | Monitors | Sequencers | Soft Synths | Live Sound | Drums | Club  | Accessories | Blowouts
 SameDay Music   shop at zzounds!
Guide | Rigs | Forums | Reviews | Bookstore | Jukebox | BlogsSearch  |  Mobile  

How to Write a Sonar Instrument Definition .ins file

By Rich the Tweak
Cool Cakewalk Software

You can make an instrument definition inside Sonar if you don't mind typing in all the names for the patches on your synths.  This was not much of a problem when synths only had 127 patches, but now many synths have well over 1000 patches and some like the Triton have over 3000!  That's a lot of typing.

There is an easier way.  You can build the .ins file script in windows notepad with a few edits in Microsoft Word.  If you have access to a list of patchnames, and the bank select controllers your synth uses, (normally found in the synth's manual) it is simply a matter of cut and paste.  I'm going to show you how with a simple example. 

I'm going to give you tips for writing your own .ins files but under one condition: Please do NOT ask me for assistance writing your files.  Instead open up an .ins file and study it.  Don't come whining to me that you don't understand it.  Some old synths that used arcane methods of bank select may take hours of troubleshooting before the secret unlocks. I'm going to show you some hard ones. Of course, I'll give you some tips on what to do when confronted with the most hard-to-script synth. 


A Not-so-Simple Example

The example below is a working .ins file for my TG-77 synth module that has 3 banks.  I could have gone into this deeper and defined controllers and drum maps and more, but I decided to keep it simple as most of us just want the bloody patchnames in!


; comment TG77 INS File by TweakHeadz Lab
;when a semi-colon starts the line, the whole line is not
;read by Sonar

.Patch Names
;Note the period before "Patch Names" This tells Sonar the
;patchnames are coming

[Yamaha TG-77 Internal]
;Note the brackets. The txt inside must exactly match that listed
;in the bank definitions at the end.

0= DX7 Piano1
note the number format "0=, 1=, 2=, etc. You can add these on to a
;list of names in Microsoft Word under "bullets and numbering"

1= WoodBassRT
2= TX Bass RT
3= Standup RT
4= Late Bass
5= E.PIANO 1
6= DX7 Piano2
7= DX7 Piano3
8= Spacoid rt
9= Spacoi2 rt
10= Tinkler RT
11= New Bass
12= AutoSeq
13= SP|Mystery
14= Dynabow
15= CicadaMist
16= St.MiksSwp
17= Afrik-Perc
18= Wood Bass
19= Rimba
20= LupeeLou
21= M1 Symph
22= Metamonics
23= Horguestre
24= Mute Trmpt
25= Spacestrgs
26= AttackBass
27= Vibra-Bell
28= Dreamtopia
29= Acid*3oh3
30= MatrixBrss
31= St.Michel2
32= `phasepad`
; ---list truncated to save space

[Yamaha TG-77 Bank 2]
0= SC:Neworld
1= SC.Stratos
2= SC.Ripples
3= SC.Digitak
4= SC.Hone
5= SC:Spaces
6= SC|Sybaby
7= SC|Icedrop
8= SC|Wired
9= SL.Gnome
10= SL.SawMono
11= SL:SqrMono
12= SL.Pro77
; ---list truncated to save space


[Yamaha TG-77 Bank 1]
0= SP|Cosmo
1= SP:Metroid
2= SP:Diamond
3= SP.Sqrpad
4= SP|Arianne
5= SP:Sawpad
6= SP:Darkpad
7= SP|Mystery
8= SP.Padfaze
9= SP:Twilite
10= SP|Annapad
11= AP.Ivory
12= AP|CP77
13= AP|Bright
; ---list truncated to save space

.Instrument Definitions

[Yamaha TG-77]

;The name of the instrument, note brackets


;Bank Select method (1, 2, or 3)

Patch[18]=Yamaha TG-77 Bank 2
;The all-important line.  "Patch" means "bank", the number in [brackets] is
;critical and depends on the bank selection method and numbers used by the
;synth internally--see below

Patch[21]=Yamaha TG-77 Bank 1
;Note the text after the equal sign MUST match the patch name bank
;header defined in the [brackets] earlier in the file. Its case sensitive.

Patch[22]=Yamaha TG-77 Internal



The tricky part is the ".Instrument Definitions" section and figuring out that all important Bank Select Method and "Patch" number in brackets.  The Patch number varies greatly from synth to synth. For More on this read the Sonar Manual.   How did I get those numbers 18, 21, 22?  The TG-77 uses a very old bank select method.  It sends a preset value over patch 100 to switch the bank.  Ensoniq VFX's also used this method.  So to call up bank 2, patch 2, sonar sends it preset #118, then #2.  As Cakewalk writes: "Take the patch number and subtract 100 to derive the bank number."  That's kinda confusing.  What they mean is Take the number of the preset that changes the bank number and subtract 100 to get the bank number Sonar will understand. How do you find that preset?  Dude, you go in your sequencer, and try every preset over 100 if you think you have a synth using this kind of bank select.  C'mon, it's not that hard. 

There are 4 bank select methods defined in Sonar

1. Normal
2. Controller 0 Only
3.Controller 32 only
4. Patch 100-127

The TG-77 above uses #4.  Now lets go to a "Normal" but difficult Bank select scheme, the proteus 2000, which can hold up to 24 banks or 3,072 patches!  Trust me, you don't want to type this one out in Sonar.  You might never finish, go mad, be late for work the next day, get fired in the process.  Funny, huh? What isn't so funny is that if you DO try it in Sonar and lets say you are at name #120 in a bank, then try it out and realize you missed name #2, you have to erase names 3-120 and start where you made the mistake.  Oh the livid pain!  This is why we do it in Notepad. 

Cakewalk Sonar V-Studio 700 Recording System
With the popularity of computer-based music production upon us, the next generation SONAR V-STUDIO 700 has taken innovative design to the next level to meet the demands of today's audio professionals. With the most complete integration of hardware and software ever, SONAR V-STUDIO 700 has once again raised the bar for all other integrated music production systems on the market today.

A More Complex Example

Take a look at the Proteus 2000 codes with a Word Expedition board added. This uses the "normal" method of bank select.

.Instrument Definitions

[E-MU Proteus 2000]
Control=E-MU Proteus 2000
Patch[3]=E-MU Proteus 2000 USER 3
Patch[2]=E-MU Proteus 2000 USER 2
Patch[1]=E-MU Proteus 2000 USER 1
Patch[0]=E-MU Proteus 2000 USER 0
Patch[1155]=E-MU Proteus 2000 WE 3
Patch[1154]=E-MU Proteus 2000 WE 2
Patch[1153]=E-MU Proteus 2000 WE 1
Patch[1152]=E-MU Proteus 2000 WE 0
Patch[519]=E-MU Proteus 2000 CMPSR 7
Patch[518]=E-MU Proteus 2000 CMPSR 6
Patch[517]=E-MU Proteus 2000 CMPSR 5
Patch[516]=E-MU Proteus 2000 CMPSR 4
Patch[515]=E-MU Proteus 2000 CMPSR 3
Patch[514]=E-MU Proteus 2000 CMPSR 2
Patch[513]=E-MU Proteus 2000 CMPSR 1
Patch[512]=E-MU Proteus 2000 CMPSR 0

You see that Banks 512-519 reference the internal ROM banks 0-8; Banks 1152-1155 reference banks 0-3 on the World Expedition Rom.  How did they arrive at those numbers?  Here's the trick. You have to know the MSB and the LSB of the bank as defined by Emu.  This is found in Emu's manual, but the simple way to find out is to press the "audition" button on any Proteus module and it will tell you want these numbers are.  For example, pressing audition of a Word Expedition presets will show MSB:009 LSB2 if the patch is in bank 2.  So how do they get the number out of that? It's simple math.

MSB multiplied by 128, plus LSB equals the bank number  (MSBx128+LSB=N)

In the case of the Word Expedition Rom, that's 9x128 =1152 +2=1154  Boy aren't we having fun now!

For more on computing the specific bank number that goes in the brackets after "Patch" see Page 526 of the Sonar 3 manual.  You must know the MSB and LSB of the bank as defined by the manufacturer in most cases.  If the synth uses a Controller 0 Only method then the banks will follow in logical order from 0.  (O,1,2,3, etc). 

Tip: You don't have to write these from scratch.  You can export .ins files out of Sonar to get started. I recommend creating the instrument definition in Sonar, defining bank select, controllers, GM if necessary, then exporting it to add patchnames for the banks.  Or you can download one from a website if it exists for your synth and edit in your custom patch names.

Tip: If you can't find the manual, then you may be in luck if your synth sends program and bank select commands over MIDI.  Most keyboards do, but many modules do not.  Put Sonar in record mode and change the banks and patches from the front panel. 

Tip: The biggest problem synths are, other than old synths, are those that use ROM cards and Rom boards.  These usually have a MSB and LSB defined by the manufacturer that may or may not be the manual.  In these cases you may have to do a sysex dump and analyze the data with a HEX to Decimal converter.

Tip: SoundDiver does NOT make .ins files, but it is useful for copying blocks of patchnames.  Highlight a full bank of sounds, select COPY (CNTL C), open the windows note pad and press CNTL-V (Paste).

Other editors claim to make .INS files and you may want to check them out.  These include Triton Edit Pro, Midiquest and possibly others.

One last tip: You can associate the extension .ins with the Windows notepad so it open it up as a .txt file.  This will not corrupt the file.  .ins is normally associated with windows internet settings, so that must be changed if you want to double click an .ins file into notepad.

Good Luck!

I remain, Rich the Tweakmeister

ps. download my proteus 2000 .ins file for further study.



Defining Custom Bank Select Methods in Logic and Loading Patchnames


Sequencers and DAWS Index
Review of Cubase 5
Logic Studio 9
Pro Tools LE 8.1
Logic Studio 8
Review of Sonar
Review of Reason
Reason (1st review)
Ableton Live
Logic Pro 7
Logic Pro 6
Logic Platinum 6
Logic Platinum 5
Digital Performer
Sony's Acid
Vintage Sequencers
Early History of Logic
Mac vs PC for Music?
Project 5
Sequencer City!
Cubase SX (original)
Cubase SX3
Using a Mac Pro as your DAW
Using Notebooks as your DAW
Which Sequencer is Best?
MIDI Time Code and Sync Issues
Custom Bank Select Methods in Logic
Write a Sonar Instrument Definition File
Sequencers Price List
zZounds Sequencer Store


TweakHeadz Lab | Studio-Central | Audio-Pro-Central  Master INDEX  | Store Affiliations | Site Map | Support the Lab | Privacy Policy | © 1999-2021

© 1999-2021