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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
SCI patch.001 Resource Format Revision 0.1
Rickard Lind 1999-12-16
The patch.001 file for Roland MT-32, MT-100, LAPC-1, CM-32L and CM-64.
This specification will sometimes look very incomprehensible without some
knowledge concerning the MT-32 MIDI implementation.
Have a look at http://members.xoom.com/_XMCM/TomLewandowski/docs.html
1. The header (494 bytes) which is always present.
Offset Size Type Description
----------------------------------------------------------------------------
0x000 2 89 00 First Two Bytes
0x002 20 ASCII String for MT-32 Display ("*It's Only A Model* ")
0x016 20 ASCII String for MT-32 Display (" CAMELOT, CAMELOT! ")
0x02a 20 ASCII String for MT-32 Display ("Ham & Jam & SpamAlot")
0x03e 2 word MT-32 Master Volume
0x040 1 Index in Predefined reverb settings at 0x04c (0-10)
0x041 11 MT-32 SysEx block setting reverb
(last 3 bytes are dummies)
0x04c 3 Predefined reverb setting #1 (Mode, Time, Level)
: : :
0x06a 3 Predefined reverb setting #11
0x06d 8 MT-32 Patch Memory #1 (see Patch Memory description below)
: : :
0x1e5 8 MT-32 Patch Memory #48
0x1ed 1 n = Number of Timbre Memory (0-64 userdefined instruments)
----------------------------------------------------------------------------
Patch Memory description
Offset Description
--------------------------------------------------------------------
0x00 Timbre Group (0 = Bank A, 1 = Bank B, 2 = Memory, 3 = Rythm)
0x01 Timbre Number (0 - 63)
0x02 Key Shift (0-48) [-24 - +24]
0x03 Fine Tune (0-100) [-50 - +50]
0x04 Bender Range (0-24)
0x05 Assign Mode (0 = Poly 1, 1 = Poly 2, 2 = Poly 3, 3 = Poly 4)
0x06 Reverb Switch (0 = OFF, 1 = ON)
0x07 Dummy
--------------------------------------------------------------------
Mapping MT-32 to GM instruments is done with Timbre Group and
Timbre Number.
Instrument 0-63: Bank A, 0-63
Instrument 64-127: Bank B, 0-63
2. The Timbre Memory block (if n > 0), offset relative to 0x1ee
Offset Size Type Description
------------------------------------------------------------------------------
0x000 246 MT-32 Timbre Memory #1 (see Timbre Memory description below)
: : :
0x??? 246 MT-32 Timbre Memory #n
------------------------------------------------------------------------------
Timbre Memory description
Offset Size Description
-----------------------------------------------------------------------
0x00 10 Timbre Name (ASCII String)
0x0a See http://members.xoom.com/_XMCM/TomLewandowski/lapc1.txt
-----------------------------------------------------------------------
3. Second MT-32 Patch Memory Block, offset realtive to 0x1ee + n * 246
Offset Size Description
---------------------------------------------------
0x000 2 0xab 0xcd (if this this is not present
there is no second block)
0x002 8 MT-32 Patch Memory #49
: : :
0x17a 8 MT-32 Patch Memory #96
---------------------------------------------------
4. Block for setting up Patch Temporary Area (rythm part) and
System Area - Partial Reserve, offset relative to 0x370 + n * 246
Offset Size Description
---------------------------------------------------
0x000 2 0xdc 0xba (if this this is not present
this block is non existent)
0x002 4 Rythm Setup for Key #24 (see below)
: : :
0x0fe 4 Rythm Setup for Key #87
0x102 9 System Area - Partial Reserve
---------------------------------------------------
Rythm Setup description
See http://members.xoom.com/_XMCM/TomLewandowski/lapc1.txt
TODO:
* Clearly describe which parts are interesting for a quick and dirty
GeneralMidi/patch.001/FreeSCI implementation
* Describe how the Sierra MT-32 driver uses patch.001
* Make this readable to someone who has not been reading reference
manuals since early childhood
* SGML
Revision history
Revision 0.1 - 1999-12-16
- First pre-release of the specification
|