Article History
 
 
 
Discussion
 
157 views
 
56% now_its_dark
Custom MT-32 Voice Guide
 

::|CONTENTS

  1. Software Editors
  2. Terms & Concepts
  3. Regarding SoundDiver + Munt
  4. SoundDiver Setup
  5. Understanding Memory Areas & Creating/Editing Timbres
  6. Patch Assignment
  7. Sound Design Techniques
  8. Drums & The Drum Map
  9. Saving & Exporting
  10. SysEx Things
  11. See also
(this guide was written by now_its_dark and I have moved it to its own article separate from the MT-32 format article! --dami)

It is possible to create totally new and unique voices or modify the existing ones via MIDI System Exclusive messages (SysEx) using an external editor.

The MT-32 is a surprisingly deep and highly editable instrument, but relies entirely on software for this task. Consequently, there were many editors released when it was a contemporary product, but nearly all of them are for legacy computers/OS's such as Atari ST, X68000, early Macintosh and DOS.

Of these numerous options from the past, only SoundDiver and one or two others will still run natively on a present-day OS. SoundDiver is currently the best option, as it provides complete access to all parameters, clearly visualizes the voice architecture and has a *relatively* modern UI.

This has been utilized many times by BotBr now_its_dark; if you want to hear some of the sorts of sounds that could be created, check out their MT-32 works!

Software Editors



SoundDiver
(Windows & stable via WINE),
A venerable, older software editing suite by the long defunct emagic, it is capable of editing literally hundreds of different devices, via panels called Adaptations. The included adaptation for the MT-32 provides complete access to the functions of the device. It can be downloaded here
.

MT-32 Sound Editor
(Windows only)
A fairly new option— this editor is still in development, but could replace SoundDiver as the de facto option, with its more modern UI and somewhat simpler setup. However, as of 08.2023, it is not yet at feature parity with SD and currently is limited to a modern Windows OS. (via WINE might be possible, but was unable to get it running). The latest release can be downloaded at vogons.org
or via github
.


There is a common misconception that the MT-32 is simply a more primitive version of later PCM-based sound modules, such as the Sound Canvas series, but this is pretty far from the truth. In terms of sound design potential, the synthesis available here is rather different and in some ways, much deeper than the pure romplers which followed. There is tons of possibility to explore, even potential for it to sound quite modern, with a unique and synthetic character, far beyond the expected.


Terms & Concepts



Here is some basic info to get started with SoundDiver & editing:

LA Synthesis = A method of digital synthesis, layering multiple voice elements within a single composite voice. These four elements each have a discrete, subtractive signal path and can use either a real-time synthesized digital waveform or PCM audio sample. The elements are linked in pairs of two (1+2 and 3+4), each of which holds the definition for a structure. Structures can route and define interactions between the two elements in a pair.

(that was phrased in general terms, to be applicable to different LA synths, which vary in their naming conventions and feature sets).

In the case of the MT-32, it is defined and implemented in the following way:

Partials = the individual, editable synthesized voice elements within a timbre, akin to operators in FM, or the single oscillators within a traditional subtractive synth voice. The assignment of a partial type (Wave Generator or PCM) is not directly assigned to the partial, but established via a structure, alongside a second partial within the timbre.

Timbres = synthesized voices comprised of partials. A timbre can be set to utilize between one and four partials. Within a timbre, partials are represented in pairs of two. Each pair contains a structure type, which defines the partial types used in that pair (WG or PCM) and different behaviors for them, such as stereo routing and ring modulation. The order in which timbres are stored in memory has no bearing on which program change number will be used to activate them.

Structures = There are 13 available structures, with two used per-timbre. Structures serve a couple purposes— they define the partial type of the upper and lower sets of partials (1+2 and 3+4) within a timbre, they also define how those two partials are mixed and whether they utilize ring modulation. See below for a list of them.

Patches = store references to timbres with additional configs such as reverb switch, volume, pan and tuning. Patches exist in memory in the numerical order associated with the 128 available midi program change numbers. Patches have two main purposes: 1. to point MIDI program changes to a chosen timbre and 2. to enable multiple available instances of a timbre. For example, a dry version and a version with reverb, or a normal and a re-pitched version.

Parts = A section with an assignable midi channel # and setting for partial reserve allocation— this is to ensure that the part has enough polyphony for an intended use. Parts are assigned patches.

Example: Part 1 defaults to MIDI channel 2; so if if you sent a program change on ch#2, with a value of "21", it will assign Patch 21 to the Part. When Patch 21 becomes active, the synthesis params of the Part will be set to the states defined in the timbre that is assigned to Patch 21.

List of structures:

S = Synth / WG
P = PCM

(upper + lower)

01. S+S Mixed output
02. S+S Ringmod mixed with top partial output
03. P+S Mixed output
04. P+S Ringmod mixed with top partial output
05. S+P Ringmod mixed with top partial output
06. P+P Mixed output
07. P+P Ringmod mixed with top partial output
08. S+S Top partial direct to L channel, bottom partial direct to R channel.
09. P+P Top partial direct to L channel, bottom partial direct to R channel.
10. S+S. Ringmod only
11. P+S. Ringmod only
12. S+P. Ringmod only
13. P+P. Ringmod only

Summary:

So to recap, structures define partial type and routing behavior. Partials are individual voice layers, they are components within timbres. Timbres are top-level synthesized voices which are referenced by patches. Patches are associated sequentially to the 128 midi program change numbers. Patches must be assigned to one of the 8 parts to be used, either by being copied to one of the temporary patches in an editor, or via a MIDI program change.

It can be challenging to familiarize oneself with the system architecture of this synth. If text isn't your thing and/or that was not enough info— this book does an excellent job of breaking it down visually.
Jump to page 31 "Advanced Operation".


What can be edited:
- System settings such as reverb type, per-part channel mapping and partial reserve.
- 8x temporary timbres + 64 user-specific timbre memory slots
- 8x temporary patches + 128 reassignable patch memory slots
- 64x reassignable drum timbre slots (from C1 — E♭6) + adjustable params per-slot.
- 8x parts, mapped to whichever 8 patches currently reside in the patch temporary memory area (which in turn are mapped to the 8x timbres that currently reside in the timbre temp memory area).


Regarding SoundDiver + Munt



The standalone munt application can be edited with SoundDiver like real hardware, with the limitation that you cannot request the current parameter state from munt. It is inconvenient at times, but it does function correctly other than this (confirmed working on mac+WINE and windows 10 natively).


Due to this limitation, if you want to edit the built-in MT-32 patches, rather than starting from scratch, you will have to import them from a file. Here is a complete and organized SoundDiver Library file
which contains this data..

Note: the user memory area only holds 64 timbres, while the permanent storage / ROM on the device holds 128 timbres. This means that it is only possible import half of them into user memory at a time. For this reason, they are broken up into two sets, see the included readme for more info.

If you are editing with munt, make sure that munt is running prior to starting SoundDiver or the midi port will not be detected.

SoundDiver Setup



Once you have the program installed, here are the steps to start programming with it:

Note: Never try to open the help section (unless you're running on a legacy OS), it will typically crash the program. If you are running in WINE, you cannot open most of the settings either. Fortunately, these are not crucial for our purposes. It is a surprisingly stable experience in Windows 10 or MacOS under WINE, other than those caveats.

1. Open the Install window from the menubar, then scroll down the (long) list to "Roland MT-32", single-click it and then click the "add" button on the left sidebar.

2. The MT-32 device icon will now be visible in the Library window. Double-click the it and you will be presented with the system/global view of the editor panel.

3. Take note of the left sidebar, where the MIDI input & output are assigned— to control the synth, you must select the midi port on your interface, or the virtual MIDI port created by munt. It is a weird drop-down, you have to click to the left of where you would expect for it to stay open.

If you are editing hardware, also select the appropriate MIDI input port. With munt, this is irrelevant, as it cannot send midi, only receive it. This is the one leg-up that a hardware device imparts to this process: unsaved edits can be requested and recovered, in case of a software or host system crash, so long as the device is left powered on.


Understanding Memory Areas & Creating/Editing Timbres




To begin editing or creating a timbre, click once to select one of the 64 timbre memory area slots. To start fresh, initialize it and give it a name of some kind. If initialized, will default to the Slap Bass sound.

Click on one of the 8 timbre temp area slots to make it the active slot.

Click the timbre you just named and it will populate that active slot.

Note: The temp areas hold the current settings for sounds, when you play notes on channels 2-9. Timbres outside of the temp area cannot be heard or edited without being instanced to a slot in the temp area (overwriting whatever was there before).

Put another way— the temp area refers to a position in ram which is not intended for storage use. Data in this area of memory is used to set the currently active timbre parameters of the synthesis engine. Though, you could use it for storage, as the starting state, or if you have no intention of changing it during a song— since there is no permanent storage anyway, the concept of "permanent" is only relevant for the duration that the device is active and hasn't been reset or had the data overwritten.

Double-click the instance of your timbre from the temp area and it will open a voice editor panel. If you are sending note data to the instrument from a separate source, you will be able to hear your changes reflected immediately on the corresponding channel when you modify it.

Once you are happy with the timbre, close the editor panel. A dialog will appear, asking if you want to save it. If you select 'yes', it will sync the changes to the origin timbre memory slot. If you select 'no', your changes will only apply to the temp area instance of the timbre, and won't be copied back to the origin timbre memory: the two slots will then be different, not synced.


Patch Assignment



If you want to be able to reference your timbres using midi program changes, they will need to have a corresponding patch assignment. All 128 patches can be reassigned. If there are factory patches you want to use, make sure not to assign your partials to those patch numbers, or assign a different patch to the desired factory timbre. Patches include settings for enabling reverb and adjusting volume and pan, among other things.

Sound Design Techniques



more to add here soon
Automating parameters

Though there is no direct way to manipulate the various synthesizer parameters in real-time via midi CC (and sending sysex during playback will block notes from sounding), there is a workaround— several useful parameters can be assigned to note velocity: Filter cutoff, Pulse Width, Pitch and the usual Amplitude. Additionally, if your timbre has multiple partials, velocity can be used as a mixer between them, since negative velocity is possible.

Of course, this does limit the ability to vary the loudness of the sound in the usual way. Expression CC is probably the cleanest way to retain this alongside parameter automation, leaving Volume free for dialing-in the overall mix. Some DAWs will allow for remapping of velocity to another parameter, so if you have played-in notes with velocity data you wish to preserve, this could be worth looking into.


Drums & The Drum Map




The drum map is pretty great. It is low-key, one of the most powerful aspects of this instrument— Any timbre can be assigned to a drum slot! There is no distinction made between melodic timbres and drum timbres, they are completely the same. There are however, some different considerations, when setting out to create sounds that are suitable for use as drums.

Setup / assigning sounds:

The process of creating and assigning drum sounds is very much like creating melodic sounds: You create a timbre (or choose a timbre from ROM), then you assign that timbre to a drum slot. It is now a drum!

The easiest way to think about slots in the drum map, would be as the 'lite' version of Patches— they allow for assigning a timbre + setting the volume, reverb and pan, per-slot. Each of the slots is permanently set to trigger based on a MIDI note.

Drum sound design:

This isn't a guide for general drum synthesis, that is a big enough topic to have its own article. That said, the hybrid voice engine of the MT-32 is pretty much ideal for creating a wide range of interesting drum sounds, even using only a single partial: for Synth/WG partials, very fast-attack pitch envelopes, careful adjustment of pulse width and short, snappy amp and filter envelopes will produce good results. The instrumental PCM sounds are also very well suited to percussion, when pitched appropriately, being mainly attack transients to begin with.

Considerations and risks:
Probably the most important workflow caveat, when creating a percussive timbre:
do not start-out by assigning it to the drum map.

Unlike part-voices, the drum section does not have an edit buffer / temp area for each slot, so the only way to hear what you've changed, is by committing the edited timbre back to a timbre memory location. It is best to just use a free part for this purpose: basically just create it exactly as you would a melodic timbre, but paying attention to the pitch which you are using to test your sound. Once you are happy with it, then commit the edit to a timbre memory location and assign it to a position in the drum map.

Try to be judicious when choosing the number of partials used for a drum, they can reduce available polyphony quite quickly, also be sure to clamp the release times as much as possible, to avoid sounds continuing inaudibly; this can also eat up polyphony.

Pitch & your drum sounds
If you assign an audibly tonal/melodic timbre to a drum slot, it will sound at the corresponding pitch of that given slot. This is important to be conscious of when designing drum sounds: you must either lock the pitch, by setting Pitch Key-Follow to "0" in the timbre and pitch it via the coarse/fine tune settings, or be sure to assign the timbre to the intended pitch(es) in the drum map. The latter option is more fiddly, but useful in cases where you want multiple pitches of the same timbre, like electronic tom sounds, for example. You could create one tom timbre and place it at different intervals in the drum map, to have as many differently pitched toms as you could want.

Due to this pitch behavior, you could technically make an entire song using only the drum map, but perhaps more useful— you could sound a greater number of melodic timbres at once than the usual maximum of eight, by allocating an octave of the drum map to the bassline, for example.

Additional tricks:

Duplicate versions:
One great use of the drum map is to assign the same timbre to multiple, neighboring slots, then give them different pan and reverb settings. This allows for a single sound to jump around in stereo and switch from dry to reverberant (or both at once!), without any patch switching or worrying about part economy.

Supporting layers & effects
If you are only using a timbre on a single / very few notes, or as an effect, placing it in the drum map may be the most efficient way to access that timbre, to increase the parts available for the other, more melodically intricate sections of a song. Just assign it to the notes for which you need it to sound.


Saving & Exporting



It is a good habit to build a SoundDiver library file (.LIB) of custom sounds and settings you create as soon as you are happy with them, since it is maddeningly easy to accidentally overwrite things or lose edits if the software crashes, especially with munt. Plus, it is pretty satisfying to build up a nice library of your own sounds for future use.

Once you have finished creating or altering timbres / patches / system settings / effects / drum map etc, hold 'ctrl' and click to select only the entries you have changed, not the entire memory— since it has to load at the start of your song when it plays, you'll likely want as little data as possible. Then click the top menubar and select "Entry > Export > Selected Entries" You can export as raw SYX (system exclusive data) or SMF (.mid file, with the data already sequenced to transmit at a defined rate).

SYX or SMF export? Which of these you choose will depend in part on your workflow— if you work in a DAW / midi sequencer which supports import of system exclusive events, you could export the raw data and place it into your project timeline; be sure to start the first note / controller event after the sysex data block concludes.

If your DAW does not support sysex messages, SMF might be easier to work with, and has some additional benefits: it ensures that the data will be sent at a defined, safe speed, without any additional setup later. Another benefit, is that any midi file player can send the data in this format. This is potentially a nice convenience, if you compose several songs using the same instrumentation, since you can include this midi file in a playlist, preceding any/all of those songs, without having to prepend it to each of them during the composition process. Generally, MT-32-compatible games which used custom instrumentation took this approach, sending all, or the majority of sysex data when the game initially loaded.

However you work with this data, make sure to define a minimum 50ms delay between messages, or it may cause a buffer overflow error, when sending to a real device; the "old" first generation models are particularly susceptible to this.

There are various methods and tools for working with this data once it is exported, but however you do it, the goal is to prepend the sysex data to your midi song file, so it is fully transmitted before any notes have sounded. Traditionally one would use a midi event list editor or insert the data in a track of your DAW (for those which still support it), but you could also just record it into munt, then play your song data in right afterward, if you don't mind your midi file showing the wrong bpm etc.


SysEx Things



Sending text to the screen

You can display text on the LCD via sysex. This works with MUNT as well as hardware. To do so, convert your text or other supported ASCII characters to hex, preceded by the necessary IDs and address:

roland ID: 41h
device ID: 10h
model ID: 16h
cmd ID: 12h

address for the
text data type: 20 00 00

Next goes your text data. After the text, a Roland checksum is needed. As with any sysex, the full message must be opened with sysex start (F0) and closed with sysex end (F7).

This tool
will calculate the checksum for you.

So for example, if you wanted to print “Battle of the Bits” it needs to be padded with 2 spaces (20h), as the total number of chars must always be 20 (the total number the display supports). So it becomes “ Battle of the Bits “ keeping it centered.

In hex this is:

20 42 61 74 74 6C 65 20 6F 66 20 74 68 65 20 42 69 74 73 20


Before calculating the checksum, first add the address:

20 00 00 20 42 61 74 74 6C 65 20 6F 66 20 74 68 65 20 42 69 74 73 20
_______

Then paste that into your checksum calculator. In this case, we get the value “3C”. So all that is left, is to add the leading sysex and close it off with F7:

F0 41 10 16 12 20 00 00 20 42 61 74 74 6C 65 20 6F 66 20 74 68 65 20 42 69 74 73 20 3C F7


See also



- mt32 (format)

Additional Resources (some are mentioned above):
- Using The Roland MT-32 Multi-Timbre Sound Module
Superb guide to fully understand the MT-32 + nice visuals.
- MT-32 Overview
Synopsis the of MT-32 voice architecture from Sound on Sound, July 1988 Issue.
- Sysex Checksum Calculator
Useful for creating custom sysex commands
- Sealed's MT-32 Easy Editor
SoundDiver adaptation, an alternate MT-32 editor interface (not a standalone app).

 
C A T E G O R I E S
 
 
Helper Tools