TSE3 documentation Version 0.3.0 Index API  Version  Structure 

Cakewalk .ins files


The Instrument class provides support for instrument definitions (i.e. textual representations of the program/bank/controller names). These are read from the widely available Cakewalk instrument definition format files. (Cakewalk is a PC sequencing package).

File format

These files generally have a .ins suffix and are of a textual nature.

Unfortunately, the file format is not documented anywhere by Cakewalk, so I have produced my own interpretation of the file format. If anyone knows of any better descriptions I'd love to know!

Pete's interpretation of the Cakewalk .ins instrument file format


The file conists of a number of sections which begin with the following lines (they are generally found in this order, I doubt this is important):

Section nameDescription

".Patch Names"Describes groups of patches
".Note Names"Describes note names for some patch
".Controller Names"Describes all controller names for some device
".RPN Names"Describes RPN values for some device
".NRPN Names"Describes NPRN values for some device
".Instrument Definitions"Describes instruments based on above sections

Section contents

General file conventions:

The first 5 sections have practically identical format, and contain a number of subsections. These subsections define a mapping of number (0-127) to textual representation. All or only some of the numbers may be given a mapping. Unspecified entries default to an empty string.

There are inbuilt patch names "0..127" and "1..128" which are defined as just the numbers.

The ".Instrument Definitions" section

The ".Instrument Definitions" section is different; it describes instruments based on the information in the previous sections.


"Control="No controllers for this instrument.
"RPN="No RPNs defined
"NRPN="No NRPNs defined
"Patch[#]="No patch for #
"Key[#,%]="No key definitions for #,%
  1. "#" represents a bank select value. This is a composite value based on the bank select MSB and LSB which is equal to (MSB<<7)+LSB.
  2. "%" represents a program change value.


0Normal - bank select MSB and LSB matter
1Only the MSB is used and defined
2Only the LSB is used and defined
3Only program changes are used and defined
 © Pete Goodliffe, 2001-2003 Copyright Psalm 150