Structure and semantics of Instrument files (e.g. .ins files)
I have been unable so far to find information about the structure and semantics of the general instrument definition files (e.g. YAMAHA.ins).
Can someone point me to a link?
Also, if the link doesn't answer this question I would appreciate help:
When I create a .ins file from scratch and introduce it to SONAR by importing it, the instrument seems to get added but the patch names do not. Why is that? How do I make it add the patch names.
Also, my list of patches has become cluttered and I don't see any way of cleaning it up without manually going in and deleting in the SONAR -> Instruments -> Define facility
Any help will be greatly appreciated.
Thanks....
Todd Marshall
Plantersville, TX
==================================================
My dissection so far (which I show here to remove confusion of what I'm looking for) is as follows:
The file is fairly free form text with one line per entry and blank lines meaning nothing. Case does not appear to be significant.
Lines beginning with ";" are comments
e.g.
; -----------------------------------------------------------------------------
; PSR-S970 Instrument Definition compared to Yamaha Data List (c) 2010
Lines beginning with "." break the file into chunks as follows:
.Path Names; .Note Names; .Controller Names; .RPN Names;
.NRPN Names; .Instrument Definitions;
I am unsure if this order is important (i.e. required) and is an exhaustive list
Within chunks, names of sections are enclosed with "[ ]" followed by lists usually of the form number=name. There don't seem to be any rules governing names. These section names are repeated in the "Instrument Definitions" chunk without the "[ ]".
e.g. for Patch Names:
.Patch Names
[GM1 & XG Bank 0]
[XG Bank 1 (KSP)]
[XG Bank 3 (Stereo)]
[XG Bank 6 (Single)]
Within the sections are details of the form n=name. The { } in the example doesn't seem to have any significance.
e.g. for Patch Names:
[GM1 & XG Bank 0]
0=Aco Grand Piano {XG}
1=Bright Aco Piano {XG}
2=E. Grand Piano {XG}
3=Honkytonk Piano {XG}
The ".Note names" section seems to provide for a template mechanism using "Basedon=" referring back to a previously defined section, and then presumably overwrites exceptions. This is ambiguous as in my example (from a Yamaha file) there is no difference between the "basis" and the "basedon". It is unclear whether this feature is unique to the Note Names section.
e.g.
[GM2 Standard]
27=High Q
28=Slap
29=Scratch Push
[GM2 Room]
BasedOn=GM2 Standard
27=High Q
28=Slap
29=Scratch Push
The .Instrument Definitions chunk seems to allow for multiple instruments to be defined within a single file. In the example [PSR=S970] introduces the instrument name followed by its related section, subsection, patch, key, drum, etc. names. The reason for the list of patch names in this section is ambiguous as all information here is also available in the .Patch Names chunk. Thus it seems to be for efficiency. Peculiarly, this instrument segmentation takes place towards the end of the file where the ".Instrument Definitions" chunk.
e.g.
.Instrument Definitions
[PSR-S970]
Control=S-Series Controllers
RPN=Standard RPN
NRPN=NRPN S-Series
Patch[0]=GM1 & XG Bank 0
Patch[1]=XG Bank 1 (KSP)
Patch[3]=XG Bank 3 (Stereo)
Patch[6]=XG Bank 6 (Single)
The semantics for key and drum seem to be more involved ... especially the drums with the "*" and the =0 or =1 semantics.
e.g.
Key[15360,8]=GM2 Room
Key[15360,16]=GM2 Power
Key[15360,24]=GM2 Electronic
Key[15360,25]=GM2 Analog
Drum[15360,*]=1
Drum[15360,56]=0
Drum[16256,*]=1
Drum[16128,35]=1
Banks are the name referring to name lists (which are MSB,LSB base 128). For example MSB 120, LSB 0 yields 15360 combining by base 128.
The bank select methods (i.e. normal; CC0; and CC32) are confusing to me and seem to be legacy artifacts. In the file I dissect here banks seem to be based on MSB, LSB, PC where MSB and LSB are converted to a single number (MSB*128+LSB) and PC is left separate. Again, that is presumably a legacy artifact as it would be more straight forward to just use the three separate numbers. Who knows?
I remain mystified that I haven't been able to find a description even as clumsy as mine here about what is going on. This stuff is really old and I can't be the only one who has questioned it.
I hope this clarifies what I'm looking for ... i.e. I would like precise semantics as if I was going to write the Instrument import program for SONAR or MIDI-OX.