Windows: Patchmap files are located in the PatchMaps subfolder (the full path will typically be C:\Program Files\MtStudio\PatchMaps\). You can add your own patchmaps in this folder as well.
Mac: You can put your own patchmap files in the user's Library/Application Support/MultitrackStudio/PatchMaps folder.
Patchmap files can be edited using NotePad (Windows) / TextEdit (Mac) . The following examples demonstrate how to create patchmap files for your own hardware synthesizer. The italic texts are comments, these shouldn't be in the actual patchmap files.
Example 1: Banks and Patch NamesThis example shows a plain simple patchmap having just two banks.
|[bank 0]||This sections holds the first bank. Note it's 0, not 1. Also note the space.|
|bank=1280||The MIDI bank it applies to. This number equals 128 * MSB + LSB.|
|MSB and LSB correspond to MIDI controllers #0 and #32 respectively.|
|In this example MSB=10 and LSB=0.|
|0=Piano||MIDI program 0 is a piano|
|1=Bass||MIDI program 1 is a Bass|
|These values can go up to and including 127|
|[bank 1]||This sections holds the second bank. Banks must be numbered sequentially|
|bank=1281||MSB=10 and LSB=1|
|32=Guitar||MIDI program 32 is a guitar|
|33=Violin||MIDI program 33 is a violin|
Example 2: Drum Instrument NamesAssume our synth has one drum patch. Let's add both the patch and the drum instrument names to the patchmap:
|64=Acoustic Drum Kit||The drum patch is on program number 64|
|bank=0||The drums are in bank 0. This equals 128 * MSB + LSB,|
|see explanation in [bank 0] section of example 1.|
|patch=8||The drums are on MIDI program 8|
|36=Bass Drum||Note 36 is a bass drum|
|40=Snare||Note 40 is a snare|
Additional drum kit sections must be numbered sequentially ([drum 1], [drum2] etc.)
Example 3: Percussion ChannelAssume it's a GM synth, which has one bank only, and drums on channel 10:
|percussionchannel=10||This value is used by the MIDI Port's "Percussion Channel" button|
|bank=-1||-1 means "all banks", we do this because GM doesn't support banks|
|If you omit the "bank=" statement then it will default to 0 because it's|
|the [bank 0] section. [bank 1] defaults to 1 etc.|
|channel=1,2,3,4,5,6,7,8,9,11,12,13,14,15,16||[bank 0] is not valid for channel 10|
|channel=10||These instrument names are valid for channel 10|
Example 4: Patch CategoriesLet's add some categories. They will appear in the MIDI Port's patch selector.
|[category]||This is the section which defines the categories|
|#0=Piano||The first section must be #0. In this case it holds the pianos|
|#1=Guitar||The second section holds the guitars|
|Categories must be numbered sequentially|
|0=Piano#0||Add #0 to the name, so MultitrackStudio knows it's in category #0|
|12=Marimba||No category specified here, it will end up in the "Other" category|
|25=Acoustic Guitar#1||Add #1 to the name, so MultitrackStudio knows it's in category #1|
Example 5: Drum Instrument CategoriesDrum Instrument Categories can be defined locally within a drum section:
|#0=Bass||The first section must be #0. In this case it holds the bass drums|
|#1=Snare||The second section holds the snare drums|
|35=Acoustic Bass#0||Add #0 to the name, so MultitrackStudio knows it's in category #0|
|36=Bass Drum 1#0|
|38=Acoustic Snare#1||Add #1 to the name, so MultitrackStudio knows it's in category #1|
|39=Hand Clap||No category specified here, it will end up in the "Other" category|
Example 6: Controller NamesLet's override some default controller names with custom ones:
|2=Joystick -Y||New name for controller 2|
Example 7: Patch Switch TimeSome synths need quite some time to load a patch. Let's make sure MultitrackStudio sends the patch change messages in time. Note that it's usually not necessary to add this.
|patchswitchtime=750||Schedule patch changes 750 milliseconds earlier|
Example 8: Initialization SysexA sysex message can be sent before recording or playback starts. This can be used to switch a synth to multi-mode for example.
|initsysex=f0123456f7||Hex numbers representing system-exclusive MIDI message|
If a sysex needs to be send to each MIDI channel used you can replace a hex digit with "<channel>":
|initsysex=f0123<channel>56f7||Hex numbers representing system-exclusive MIDI message|
|"<channel>" will be replaced with the actual MIDI channel.|