In the beginning the Intel 8088 and 8086 CPUs only implemented, Real Mode, where a program had total control over all aspects of a system. Real Mode's main issue, other than it was limited to 1MB of RAM, was that multitasking was almost impossible to accomplish. Then the 286 CPU implemented a Protected Mode and allowed the CPU to address 16MB in that Mode, but few applications used it because DOS required Real Mode. Finally, the 386 CPU implemented a far more usable Protected Mode and a Virtual 8086 Mode (V86). V86 Mode allowed the CPU to run multiple instances of Real Mode where each program would be given access to up to 1MB of RAM for their own purposes without overwriting another program's data. To each program running in V86 Mode, it would appear to it as though it had full control over the PC.
As a byproduct of V86 Mode, Expanded Memory, which had been implemented with expansion cards on 8088 & 286 machines, could be emulated with Expanded Memory Managers (EMS). The most popular EMS was EMS386, which came with MS-DOS 5.0 and later. There were other EMS softwares like QEMM and JEMM. EMS also allowed a user to trap writes to memory locations and I/O ports. Sound cards invariably wrote to I/O ports on a PC to make sound. Eventually it was discovered that this port trapping capability could be used to emulate sound cards. Software drivers of recent and ancient vintage have been being this feature, or implementing their own, to emulate sound cards and chips for systems that may not or cannot use them. Let's take a look at some of these devices and methods.
Showing posts with label MIDI. Show all posts
Showing posts with label MIDI. Show all posts
Friday, December 22, 2017
Wednesday, July 29, 2015
Yamaha's TG100/OPL4 Connection
Today I am excited to publish the first blog entry on this blog from a guest blogger. This blog entry was written by my good friend Cloudschatze. Except for a few minor edits, the remainder of this blog entry comes directly from him :
Released in early 1992, the inauspicious Tone Generator TG100 marked Yamaha's initial foray into the burgeoning world of General MIDI - a market that was, at the time, wholly defined and dominated by Roland's then year-old Sound Canvas SC-55.
At a glance, the TG100 (along with its display-less DTM counterpart, the CBX-K3), is a 28-note "Advanced Wave Memory" tone generator, containing 192 instrument voices, 64 user voices, 10 drum kits, and featuring a custom reverb DSP. Promoting its usefulness in a laptop-connected, portable environment, the TG100 is also one of the first musical instruments to feature serial port connectivity, effectively negating the need for a dedicated host-based MIDI interface like the MPU-401. Aesthetically, the TG100 is smaller than photos might suggest and unsubtly seems to borrow certain design elements from Roland's earlier MT-32.
Drawing comparisons with the SC-55, Yamaha's TG100 similarly satisfies the General MIDI requirements, while likewise providing a superset of features to both enhance the experience, and impart a degree of compatibility with non-GM-conforming sequences. While a GM device by default, the TG100 provides two alternate modes of operation, offering instrument/drum-map compatibility with either Yamaha's own "Disk Orchestra" (Clavinova) units, or with Roland's CM-64. An "RX" drum kit rounds-out the mix of versatility, providing a layout compatible with Yamaha's RX-series drum machines.
Enhancements over the SC-55 include an extra four notes of polyphony, a larger waveform ROM set (4MB vs. 3MB), and the traditional synthesizer/ROMpler-esque ability to create up to 64 user-defined instruments like the MT-32. Yamaha's Windows 3.1-based, "WinTiGer" editor lends some ease to the instrument creation process, revealing an architecture reminiscent of the latent QS300 functionality of Yamaha's earlier XG tone generators.
Oh, British humor...
Given that TG100 units routinely sell for under $50 these days, it would be reasonable to think that such a purchase could be a no-brainer for anyone looking for an external General MIDI playback device for retro-gaming, right?
In my opinion, no, and here's why:
It's not a Sound Canvas.
No kidding, right?
By design, the General MIDI requirements offered neither suggestion, nor restriction, on how compatible devices should sound. General MIDI required little more than Program Change #0 sound like a piano, Program Change #23 like a harmonica and so on. Implementers were left with creative interpretation regarding the specific synthesis methods and waveforms used to generate these sounds, and, of great significance, their volume and envelope levels. Because each implementer made their own unguided choices on how each instrument would sound, there was an unfortunate amount of playback variance to be had between the first GM-compatible devices.
Given Roland's well-managed head start, you'll find that most GM soundtracks were authored with, or for, the de-facto standard GM device that was the Sound Canvas. This fact was not lost on Roland's competitors, who, in turn, designed subsequent GM-compatible offerings to better imitate the characteristics of the SC-55. Unfortunately, for early devices like the TG100, a majority of non-native sequence playback - in-game or otherwise - tends to come across as undesirably unbalanced.
Given Roland's well-managed head start, you'll find that most GM soundtracks were authored with, or for, the de-facto standard GM device that was the Sound Canvas. This fact was not lost on Roland's competitors, who, in turn, designed subsequent GM-compatible offerings to better imitate the characteristics of the SC-55. Unfortunately, for early devices like the TG100, a majority of non-native sequence playback - in-game or otherwise - tends to come across as undesirably unbalanced.
My opinion of its PC gaming suitability aside, as a compositional tool, or even just a cheap serial-to-MIDI converter, an inexpensive TG100 might be well worth experimenting with. Regrettably, the gaming-focused comparisons available on YouTube, while important for that purpose, tend to be poorly representative of the TG100 as a whole. As with other GM-compatibles, you really need to hear native compositions to get a complete impression of the TG100's tonal character.
Michael Walthius, the "Keyboard Wizard," composed with the TG100 for several years, and perhaps his music provides the best examples of the TG100's potential:
"Demons"
"Dreaming in Stereo"
"Echoes"
"Eternium"
"The Ultimate Life"
These pieces demonstrate some of the TG100's strengths and weaknesses with its instrument patches. To be sure, the electric guitars are wildly unconvincing, and, owing to its less-complex engine, the synth leads and pads are remarkably shallow and uninspiring. Conversely, the acoustic/orchestral instrumentation, and drum kits in particular, are of mostly decent quality. Overall, and when properly composed for, I feel that the TG100 is able to provide a comparable counterbalance to Roland's SC-55, which the recordings hopefully demonstrate.
Now, interestingly enough, while most of the major General MIDI module releases have direct ISA sound card or waveblaster daughterboard-format counterparts, Yamaha's TG100 seems to be the odd exception.
Or, is it..?
Although Yamaha dominated the low end of PC music playback with its OPL2 and OPL3 chips, found on innumerable sound cards, the company continued to innovate to meet the need for more advanced but still cost-effective PC music reproduction. Designed around 1992/1993, but entering full production in early 1994, Yamaha's OPL4 combined 20-voice, OPL-3 compatible FM synthesis, and 24-voice, PCM "Wave Table" synthesis in a single IC, the YMF278B. ROM samples for the PCM synthesis engine are contained on a separate chip. Unsurprisingly, a comparison of the TG100 and OPL4 PCM wavetable synthesis parameters shows more than a few similarities. In fact, take the TG100, reduce its capabilities down to the most basic General MIDI requirements (24-voice polyphony, 128 capital tone instruments, 1 drumkit, no effects), and you end-up with something uncannily duplicated by the YMF278B + (2MB) YRW801 sample ROM combination, when used in conjunction with Yamaha's original instrument definition data specific to that pairing.
The similarity between the TG100 and the OPL4 is striking. Hearing is certainly believing, as demonstrated with playback of the same Michael Walthius compositions with Mediatrix' OPL4-bearing AudioTrix Pro soundcard.
"Demons"
"Dreaming in Stereo"
"Echoes"
"Eternium" Notice the lacking "Analog Kit," as compared to the TG100 version.
"The Ultimate Life"
The OPL4 playback in the above recordings was accomplished through use of MediaTrix' earlier, "PLAYMIDI" utility, which contains a direct-write, standalone MIDI interpreter, and utilizes Yamaha's original patch information derived from the TG100. While these particular AudioTrix Pro OPL4 hardware recordings bear substantial similarities to the TG100 recordings, MediaTrix' version 2.0 initialization firmware and drivers incorporate patch modifications by Fat Labs, successfully providing a more balanced approach to playback, but breaking the balance level compatibility with the TG100 in the process. As a result, the same MIDI files do indeed sound different when played through the AudioTrix Pro's MPU-401 interface, or in Windows. Similarly, Yamaha's YMF278B-bearing SW20-PC soundcard, and the later, ROM-integrated OPL4-ML(2) chipsets, contain both revised ROM sample sets and patch data and will not sound the same compared to the TG100 or the AudioTrix cards.
At the end of the day, the OPL4's TG100-based lineage seems pretty clear - a connection that seems to have gone almost wholly unnoticed by the entire Internet.
Sunday, July 26, 2015
The Many Meanings of MIDI in PC Gaming
We all know that MIDI stands for Musical Instrument Digital Interface, but the acronym was often taken to mean a great many things to a great many people. Let's explore some of the common contexts where MIDI is applied.
MIDI Interface
First we have a "MIDI Interface". This is rather redundant, because when you give words to the letters, it becomes Musical Instrument Digital Interface Interface. However, because the use of the term MIDI is so broad, we use MIDI Interface to distinguish between other uses of the term like MIDI Module or MIDI Music.
So what is a MIDI Interface? Well, in terms of hardware, MIDI communication is accomplished by a serial-based transfer at 31,250 baud using current loop signaling. Typically, MIDI devices are connected through 5-pin DIN plugs. Miniature versions of the MIDI connector exist, but the pinouts are not necessarily going to be identical across manufacturers. How data was supposed to be sent and received within those parameters was left up to the individual members of the MIDI Manufacturer's Association.
After much evolution, the PC world settled on a UART-compatible MPU-401 Interface. This interface just sends bytes to and receives bytes from other MIDI compatible devices. It is little more than an I/O port which can be tied to an IRQ line, and it really does not get any more simple than that.
Historically, there were many MIDI Interfaces, and most were incompatible with each other. The "Full/Intelligent" Roland MPU-401 supports a simple UART-only mode that eventually became the standard. IBM had its own MIDI Interface in its IBM Music Feature Card. Both of these Roland and IBM interfaces had many features beyond simple I/O, but PCs became powerful enough to perform most of the special functions that these devices handled on slow PCs. IBM's card was too pricey considering the sound quality of its built-in synthesizer and it really did not catch on. However, early games and MIDI Sequencers supported the enhanced features of both the Roland and IBM MIDI Interfaces.
MIDI Interfaces by themselves do not produce sound. Originally, MIDI Interfaces came without MIDI Synthesizers on them. The Roland MPU-401 was originally a breakout box with the interface hardware and an interface card to send to and receive data from a computer. Only when you attached a MIDI Synthesizer to the MPU-401 via a 5-pin DIN cable would you be able to hear sound. The last iteration of the Roland MPU-401, the MPU-401/AT, is an internal ISA expansion card with the ability to produce sound when a MIDI Synthesizer is connected to it on its waveblaster connector. Without the waveblaster daughterboard, it just acts like a MIDI Interface.
Sound cards, beginning with the Sound Blaster, often came with MIDI Interfaces. These interfaces were very basic in their functionality but no two manufacturer's interfaces worked alike. The Pro Audio Spectrum and the Covox Sound Master II also had their own unique MIDI Interfaces. Support was lukewarm from games. Only with a Sound Blaster 16 or a Pro Audio Spectrum 16 (rev. D or later) were UART-only MPU-401 compatible interfaces implemented. These interfaces typically used some of the unused pins on a gameport for the MIDI In and Out signals, requiring an external box or adapter to provide the 5-pin DINs MIDI modules of the day expected.
Even though the Sound Blaster and similar sound cards have a MIDI interface, it is completely independent of the FM Synthesis chip found on the card. The MIDI Interface does not communicate with the FM Synthesis on the card in any way. Unfortunately the MIDI Interface has to coexist with the digital audio capabilities of the Sound Blasters, causing no end of troubles.
Some MIDI modules like the Roland SC-55mkII could connect to a PC or a MAC via serial port. They came with a special cable and they used Windows and Macintosh drivers. When USB displaced most other low-bandwidth I/O devices, companies began releasing USB MIDI Interfaces, which still used the 5-pin DINs. Even more recently, many MIDI devices connect directly by a USB cable to a computer.
MIDI Synthesizer
A MIDI Synthesizer is one that will acknowledge and respond to MIDI commands and generate sound. There are many, many MIDI commands, sometimes called messages. Program Change, Control Change, Pitch Bender, Velocity, Mode, After Touch, Note Number, System Common, System Real Time, Auxillary Message and System Exclusive are the main MIDI messages. They have no relations to the commands sent to a MIDI Interface.
MIDI Synthesizers come in many shapes and sizes. There are MIDI Keyboards like the Roland D-50 and MIDI Sound Modules like the Roland MT-32. They are external to the PC and are connected via a 5-pin DIN. Then there are sound cards with a MIDI Synthesizer like the IBM Music Feature Card and the Roland LAPC-I. These two cards have both a MIDI Synthesizer and a MIDI Interface. Finally, there are sound cards with a header for a MIDI Synthesizer on a daughterboard. The Waveblaster-header designed by Creative Labs is an example of this. In virtually every case, the Synthesizer portion is connected only via MIDI Out, not MIDI In. The waveblaster's MIDI Out signal is the same signal as being output via the gameports of the card on which it is found.
Many of the internal devices, whether on a card or attached via a waveblaster header, have a corresponding external device. Here is a short table :
Some people make the distinction between a MIDI Synthesizer and a MIDI Sound Generator or Sound Module. A user can use an MT-32 to create new instruments and is called a Synthesizer. A device that can only modify existing instruments is often called a Sound Generator.
MIDI 1.0 and General MIDI
The original MIDI Specification, 1.0, defined the communications protocol and the commands to which MIDI devices must respond. One of the most important commands is Program Change, whereby a MIDI Synthesizer can change one of the instruments it is using. In one module, a Program Change 01 could indicate a Grand Piano, and in another synthesizer, 01 could be an electric guitar. MIDI music would sound correct only on the module for which it was composed. In PC Gaming, early games that supported MIDI gave the user a choice of devices which the game supported. The only device to gain widespread acceptance at this time was the Roland MT-32.
Another important type of MIDI command is the System Exclusive message. This message is only intended for a particular synthesizer or module, and is typically used to access the hardware of the module. In the MT-32, new sounds are sent to the module's memory via System Exclusive messages. A MT-32 compatible module like the CM-32L will also accept these messages, but a non MT-32 compatible device like the Yamaha DX-7 should ignore them.
In 1991, the MIDI Manufacturers Association agreed on a new standard called General MIDI. General MIDI compatible synthesizers would share the same basic instrument map. On a General MIDI compatible Synthesizer, a Program Change 01 command would always give a Piano regardless of the model or manufacturer of the Synthesizer. There were also other basic specifications a device would have to meet, such as the number of simultaneous notes (polyphony) and being able to respond on MIDI Channels 1-16. The Roland SC-55 is probably the first MIDI Synthesizer to be General MIDI compatible, although it was released before the General MIDI standard was finalized. The early revisions are unofficially General MIDI compatible and the later revisions are officially General MIDI compatible. General MIDI does not displace the ability to use System Exclusive commands to get the best performance out of a MIDI module, but such tinkering was far less common after General MIDI became quickly accepted.
Further extensions to General MIDI, like Roland GS and Yamaha XG, were essentially company-specific standards that were not often used in games. Most games did not usually go beyond the specifications of General MIDI. An MT-32 could be made much more General MIDI compatible with a utility. Typically a MIDI Synthesizer would respond to 128 Program Changes, giving you 128 instruments. Roland and Yamaha's extensions gave you the ability to select instrument variations via 128 Control Change commands, thereby giving you a theoretical access to 16,384 instruments. No MIDI Synthesizer of the day came close to that number.
MIDI Music
A great deal of MIDI Music is found in a Standard MIDI Format file, which has a .mid extension. It contains all the information needed to play back a song, the commands, the notes, and the timestamps. Eventually, game developers found this basic format too limiting, so they came up with extensions like XMI, EMIDI and many more. SMF files can transmit data specific to modules like the MT-32 as well as data more accepted by any MIDI Synthesizer. MIDI Music is usually composed with a MIDI Sequencer program like Cakewalk or Sequencer Plus Gold.
MIDI Music has got something of a bad reputation for sounding cheesy and unrealistic. If you equate MIDI Music with FM Synthesis, then there may be some truth to the charge. Most PC gamers used FM Synthesis in the early 90s because hardware MIDI devices were very expensive. Also, not every MIDI device was made equally. The Roland SC-55, despite having only 3MB for instrument and drum samples, (and only 2MB of that was typically used), usually sounds much better than the Creative Waveblaster, which had 4MB for samples, and can hold its own against the Yamaha XG MIDI Synthesizers, which came with 4MB or more for samples. The SC-55's samples were well chosen and well balanced, making it the best overall option for PC games by developers and players. When music that is composed for an MT-32 or SC-55 is ported to the FM Synthesis chip found Sound Blaster, the results are frequently unimpressive.
Any device that can respond to MIDI commands can play back MIDI Music. Without a software driver, FM Synthesis chips like the OPL2 and OPL3 as found on the Adlib and Sound Blaster cards do not accept MIDI commands. Nor does the EMU8000 found in the AWE32 and AWE64. By contrast, the FM Synthesis chip found in the IBM Music Feature will respond to MIDI commands. However, MIDI does not care what method the device uses for producing sound, whether PSG-style Synthesis, FM Synthesis, PCM Sample Playback or something in between. In order for a non-MIDI device to respond to MIDI commands, a software interpreter or driver must be used.
MIDI Interface
First we have a "MIDI Interface". This is rather redundant, because when you give words to the letters, it becomes Musical Instrument Digital Interface Interface. However, because the use of the term MIDI is so broad, we use MIDI Interface to distinguish between other uses of the term like MIDI Module or MIDI Music.
So what is a MIDI Interface? Well, in terms of hardware, MIDI communication is accomplished by a serial-based transfer at 31,250 baud using current loop signaling. Typically, MIDI devices are connected through 5-pin DIN plugs. Miniature versions of the MIDI connector exist, but the pinouts are not necessarily going to be identical across manufacturers. How data was supposed to be sent and received within those parameters was left up to the individual members of the MIDI Manufacturer's Association.
After much evolution, the PC world settled on a UART-compatible MPU-401 Interface. This interface just sends bytes to and receives bytes from other MIDI compatible devices. It is little more than an I/O port which can be tied to an IRQ line, and it really does not get any more simple than that.
Historically, there were many MIDI Interfaces, and most were incompatible with each other. The "Full/Intelligent" Roland MPU-401 supports a simple UART-only mode that eventually became the standard. IBM had its own MIDI Interface in its IBM Music Feature Card. Both of these Roland and IBM interfaces had many features beyond simple I/O, but PCs became powerful enough to perform most of the special functions that these devices handled on slow PCs. IBM's card was too pricey considering the sound quality of its built-in synthesizer and it really did not catch on. However, early games and MIDI Sequencers supported the enhanced features of both the Roland and IBM MIDI Interfaces.
MIDI Interfaces by themselves do not produce sound. Originally, MIDI Interfaces came without MIDI Synthesizers on them. The Roland MPU-401 was originally a breakout box with the interface hardware and an interface card to send to and receive data from a computer. Only when you attached a MIDI Synthesizer to the MPU-401 via a 5-pin DIN cable would you be able to hear sound. The last iteration of the Roland MPU-401, the MPU-401/AT, is an internal ISA expansion card with the ability to produce sound when a MIDI Synthesizer is connected to it on its waveblaster connector. Without the waveblaster daughterboard, it just acts like a MIDI Interface.
Sound cards, beginning with the Sound Blaster, often came with MIDI Interfaces. These interfaces were very basic in their functionality but no two manufacturer's interfaces worked alike. The Pro Audio Spectrum and the Covox Sound Master II also had their own unique MIDI Interfaces. Support was lukewarm from games. Only with a Sound Blaster 16 or a Pro Audio Spectrum 16 (rev. D or later) were UART-only MPU-401 compatible interfaces implemented. These interfaces typically used some of the unused pins on a gameport for the MIDI In and Out signals, requiring an external box or adapter to provide the 5-pin DINs MIDI modules of the day expected.
Even though the Sound Blaster and similar sound cards have a MIDI interface, it is completely independent of the FM Synthesis chip found on the card. The MIDI Interface does not communicate with the FM Synthesis on the card in any way. Unfortunately the MIDI Interface has to coexist with the digital audio capabilities of the Sound Blasters, causing no end of troubles.
Some MIDI modules like the Roland SC-55mkII could connect to a PC or a MAC via serial port. They came with a special cable and they used Windows and Macintosh drivers. When USB displaced most other low-bandwidth I/O devices, companies began releasing USB MIDI Interfaces, which still used the 5-pin DINs. Even more recently, many MIDI devices connect directly by a USB cable to a computer.
MIDI Synthesizer
A MIDI Synthesizer is one that will acknowledge and respond to MIDI commands and generate sound. There are many, many MIDI commands, sometimes called messages. Program Change, Control Change, Pitch Bender, Velocity, Mode, After Touch, Note Number, System Common, System Real Time, Auxillary Message and System Exclusive are the main MIDI messages. They have no relations to the commands sent to a MIDI Interface.
MIDI Synthesizers come in many shapes and sizes. There are MIDI Keyboards like the Roland D-50 and MIDI Sound Modules like the Roland MT-32. They are external to the PC and are connected via a 5-pin DIN. Then there are sound cards with a MIDI Synthesizer like the IBM Music Feature Card and the Roland LAPC-I. These two cards have both a MIDI Synthesizer and a MIDI Interface. Finally, there are sound cards with a header for a MIDI Synthesizer on a daughterboard. The Waveblaster-header designed by Creative Labs is an example of this. In virtually every case, the Synthesizer portion is connected only via MIDI Out, not MIDI In. The waveblaster's MIDI Out signal is the same signal as being output via the gameports of the card on which it is found.
Many of the internal devices, whether on a card or attached via a waveblaster header, have a corresponding external device. Here is a short table :
| Internal Device | Device Type | External Device Equivalent |
| IBM Music Feature | Sound Card | Yamaha FB-01 |
| Roland LAPC-I | Sound Card | Roland CM-32L |
| Roland SCC-1 | Sound Card | Roland SC-55 |
| Roland SCB-7 | Daughter Board | Roland SC-7 |
| Roland SCB-55 | Daughter Board | Roland SC-55mkII |
| Yamaha DB50XG | Daughter Board | Yamaha MU10XG |
| Yamaha SW60XG | Sound Card | Yamaha MU10XG |
| Korg Ai20 | Daughter Board | Korg AG-10 |
Some people make the distinction between a MIDI Synthesizer and a MIDI Sound Generator or Sound Module. A user can use an MT-32 to create new instruments and is called a Synthesizer. A device that can only modify existing instruments is often called a Sound Generator.
MIDI 1.0 and General MIDI
The original MIDI Specification, 1.0, defined the communications protocol and the commands to which MIDI devices must respond. One of the most important commands is Program Change, whereby a MIDI Synthesizer can change one of the instruments it is using. In one module, a Program Change 01 could indicate a Grand Piano, and in another synthesizer, 01 could be an electric guitar. MIDI music would sound correct only on the module for which it was composed. In PC Gaming, early games that supported MIDI gave the user a choice of devices which the game supported. The only device to gain widespread acceptance at this time was the Roland MT-32.
Another important type of MIDI command is the System Exclusive message. This message is only intended for a particular synthesizer or module, and is typically used to access the hardware of the module. In the MT-32, new sounds are sent to the module's memory via System Exclusive messages. A MT-32 compatible module like the CM-32L will also accept these messages, but a non MT-32 compatible device like the Yamaha DX-7 should ignore them.
In 1991, the MIDI Manufacturers Association agreed on a new standard called General MIDI. General MIDI compatible synthesizers would share the same basic instrument map. On a General MIDI compatible Synthesizer, a Program Change 01 command would always give a Piano regardless of the model or manufacturer of the Synthesizer. There were also other basic specifications a device would have to meet, such as the number of simultaneous notes (polyphony) and being able to respond on MIDI Channels 1-16. The Roland SC-55 is probably the first MIDI Synthesizer to be General MIDI compatible, although it was released before the General MIDI standard was finalized. The early revisions are unofficially General MIDI compatible and the later revisions are officially General MIDI compatible. General MIDI does not displace the ability to use System Exclusive commands to get the best performance out of a MIDI module, but such tinkering was far less common after General MIDI became quickly accepted.
Further extensions to General MIDI, like Roland GS and Yamaha XG, were essentially company-specific standards that were not often used in games. Most games did not usually go beyond the specifications of General MIDI. An MT-32 could be made much more General MIDI compatible with a utility. Typically a MIDI Synthesizer would respond to 128 Program Changes, giving you 128 instruments. Roland and Yamaha's extensions gave you the ability to select instrument variations via 128 Control Change commands, thereby giving you a theoretical access to 16,384 instruments. No MIDI Synthesizer of the day came close to that number.
MIDI Music
A great deal of MIDI Music is found in a Standard MIDI Format file, which has a .mid extension. It contains all the information needed to play back a song, the commands, the notes, and the timestamps. Eventually, game developers found this basic format too limiting, so they came up with extensions like XMI, EMIDI and many more. SMF files can transmit data specific to modules like the MT-32 as well as data more accepted by any MIDI Synthesizer. MIDI Music is usually composed with a MIDI Sequencer program like Cakewalk or Sequencer Plus Gold.
MIDI Music has got something of a bad reputation for sounding cheesy and unrealistic. If you equate MIDI Music with FM Synthesis, then there may be some truth to the charge. Most PC gamers used FM Synthesis in the early 90s because hardware MIDI devices were very expensive. Also, not every MIDI device was made equally. The Roland SC-55, despite having only 3MB for instrument and drum samples, (and only 2MB of that was typically used), usually sounds much better than the Creative Waveblaster, which had 4MB for samples, and can hold its own against the Yamaha XG MIDI Synthesizers, which came with 4MB or more for samples. The SC-55's samples were well chosen and well balanced, making it the best overall option for PC games by developers and players. When music that is composed for an MT-32 or SC-55 is ported to the FM Synthesis chip found Sound Blaster, the results are frequently unimpressive.
Any device that can respond to MIDI commands can play back MIDI Music. Without a software driver, FM Synthesis chips like the OPL2 and OPL3 as found on the Adlib and Sound Blaster cards do not accept MIDI commands. Nor does the EMU8000 found in the AWE32 and AWE64. By contrast, the FM Synthesis chip found in the IBM Music Feature will respond to MIDI commands. However, MIDI does not care what method the device uses for producing sound, whether PSG-style Synthesis, FM Synthesis, PCM Sample Playback or something in between. In order for a non-MIDI device to respond to MIDI commands, a software interpreter or driver must be used.
Saturday, March 29, 2014
Working with MT-32 & Yamaha FB-01 MIDI Files and Patches
1. Description of the MT-32's Capabilities
The MT-32 consists of eight instrument parts and one rhythm/percussion part. It calls them Parts 1-8 and R. Any part can be assigned to any of MIDI channels 1-16. The default is that parts 1-8 are assigned to MIDI channels 2-9. There is a setting to change this to MIDI channels 1-8. The rhythm/percussion part is always assigned to MIDI channel 10 by default.
These parts share 32-voices/notes of polyphony, but the dynamic allocation of polyphony is not efficient over 22-24 voices, especially on a first generation unit. The MT-32 does support an Overlow Assign mode where excess polyphony can be sent to a second MT-32 unit, but operation in practice is unreliable with first generation units.
A patch, which contains all the essential information for an instrument, is assigned to each part. Each patch can require up to 4 voices/notes to play, so there are restrictions on the sounds that can be played from the module. The use of multiple parts enables the MT-32 to be called Multi-Timbral, hence the name. This is done via a Program Change MIDI message, and the MT-32 contains built-in 128 instrument patches and 30 rhythm patches. A patch is made up of a timbre plus the patch parameter. Timbres are made up of up to four partials and common parameter setting for all partials. Each partial has many settings which can be individually controlled. Each partial takes one polyphony note/voice and can use either a waveform (square, rectangle or sawtooth) or a 16-bit PCM sample (128 available) as the basis of its sound.
A patch can call on four timbre banks, A, B, M & R. Timbre bank A corresponds to the first 64 built-in patches of the MT-32, bank B the second 64 built-in patches, bank R corresponds to the 30 percussion patches of the rhythm section (and the 33 sound effects of the LAPC-I/CM-32L), and bank M corresponds to an area where up to 64 user-created timbres are stored.
The MT-32 is a synthesizer because user created patches can be stored and recalled from memory. The SC-55, by contrast, is not a synthesizer. While each of the patches used by the 16 parts of the SC-55 can be adjusted similarly to an MT-32 timbre, there is much less flexibility and you can only modify the active patch. While the SC-55 is battery backed, this is intended to store the general settings of the module.
To dump or send custom patch/timbre data to the MT-32, System Exclusive MIDI messages are required. The sysex messages for patch/timbre data are unique to the MT-32 series and sequencers do not understand what they do. Moreover, most sequencer programs assume that Program Changes correspond to General MIDI instrument assingments, but the MT-32 has very different assignments.
2. Format of MT-32 Patches
The structure of an MT-32 patch, as contained in a sysex file, is as follows :
The various areas can be in any order, since each area is separate and independent in the MT-32's memory. The temporary areas may not be required to be transmitted.
The MT-32 sends and receives data in packets no larger than 256 bytes (really 128 bytes, see below). In order to send or receive bytes to the MT-32's various memory areas, System Exclusive messages are required. Each message adds 10 bytes to the data to be transmitted. By doing the math, up to 71 (MT-32) or 72 (CM-32L) System Exclusive messages may be sent at the start of a game to a LA synthesizer. The structure of a system exclusive message is as follows :
F0 - Begin System Exclusive Message
41 - Manufacturer ID (Roland)
10 - Device ID/Unit # (Default is Unit 17)
16 - Model ID (Roland LA Device)
11 - Command ID (Request Data 1/RQ1)
This is sent from the computer to the synthesier to tell it to send the data in a memory area to the computer. Command ID 12 is Data Set 1/DT1, and it is used when writing data to the synthesizer.
10 00 00 - The address of the area of memory to be addressed
00 00 17 - The number of bytes of data to be requested with RQ1. With DT1, this can be up to 256 bytes with a single sysex command.
59 - Checksum
F7 - End of System Exclusive Message
The sysex files from Quest Studios also include an MT-32 Display Message at the beginning and at the end of the sysex file, adding approximately 58 bytes to the file. The format of these commands is as follows :
F0 41 10 16 12 20 00 00 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx ck F7
The Display of the MT-32 supports 20 characters, but the command data need not include all twenty character places. Text is encoded in 7-bit ASCII. You will have to calculate the checksum for the message. You can find a Windows program that will avoid that tedious business here :
http://www.bwalk.com.au/Convert/Convert.html
This program can be used to convert text file containing command strings into a syx or a mid file :
http://www.bwalk.com.au/MidiUtil/FileConvert.html
Note that addresses and data never use a value above 7F, this is because these bytes are actually 7-bit bytes, not 8-bit bytes, the high bit is never used. The above program can convert decimal and hexadecimal to the 7-bit values the MT-32 uses.
With a rev. 0 MT-32, there must be a 40 microsecond delay between the sending of system exclusive messages. Thus it will take a minimum of three seconds to send a full patch bank to the MT-32. The rev. 1 MT-32 and all other MT-32 compatible LA synthesizers do not have this limitation.
There is no reason why you cannot send more than one dump receive request at one time. You can combine all the above dump receive commands into one file and use the file to obtain all the data at once. The resulting file size for the MT-32 will be 18,541 bytes. For the CM-32L, it will be 18,635 bytes. After accounting for the text messages, this dump will be 16 bytes larger than the Quest Studio's dumps. This is because QS missed the temporary patch area for the rhythm part.
Yamaha FB-01 and IBM Music Feature Card
The Yamaha FB-01 FM Sound Generator supports seven patch/voice banks. Each bank can hold up to 48 patches. Banks 1 and 2 are RAM banks and this is where users can store their custom patches. Banks 3-7 are ROM banks and have 48 patches each. As its name suggests, these are the built-in patches. Unlike the MT-32, there is no distinction between instrument and percussion channels/patches. Thus the device supports 240 built-in patches and 96 user-created patches.
A Program Change command only works with numbers 0-47, essentially confining the non-FB-01 aware device to a small subset of its available patches. To change the patch/voice bank requires a System Exclusive command to change the configuration parameters. This is how another voice bank is selected. The FB-01 has 16 RAM and 4 ROM choices for its Configuration Memory, which assigns MIDI channels, polyphony reserve, channel volume and the like.
The FB-01 receives 8 MIDI channels (8 parts), and by default uses MIDI channel 1-8. It only supports 8 simultaneous note playback (8 note polyphony). Each instrument patch can take from 1-8 notes. The core of the device is the Yamaha YM2614 FM Operator Type-P, which is musicially and (almost) functionally identical to the YM2151 chip found in many, many arcade machines. This chip supports 4-operator FM synthesis.
Sierra's games store custom patches in both RAM banks, so both will need to be dumped. The FB-01 can only receive System Exclusive messages on the MIDI channel assigned to a specific module (thus up to 16 modules can be supported via the MIDI channels) The default is channel 0/1. The system exclusive commands to do this are as follows :
F0 43 75 00 20 00 00 F7 (Voice Bank 0)
F0 43 75 00 20 00 01 F7 (Voice Bank 1)
Each resulting file will be 6,363 bytes.
Additionally, you may also need to dump the configuration memory. The command to dump all configuration memory is :
F0 43 75 00 20 03 00 F7
The file will be 2,616 bytes.
Sierra's games also use System Exclusive messages to change instruments and voice banks and adjust certain events like Note On and Note Off with a finer degree of control than possible with a standard message. This sysex is not generally large, but must be included to obtain an accurate rendition of the song.
This method works with either the IBM Music Feature Card or the FB-01. The makers of the FB-01 helpfully also decided to allow you to also send data from the module using the front panel buttons, but using the sysex above allows for saving the resulting data in one step.
The IBM Music Feature Card defaults to the memory protection function to off. It does not have a battery. The FB-01 defaults memory protection to on and has a spot-welded CR2032 battery. It needs to be set to off for custom patch data to be received by the FB-01. The IBM Music Feature Card's power on defaults allow all MIDI messages to pass from the MIDI IN (with the breakout box) to the music hardware on the card.
When the FB-01 or IBM card receives patch/configuration dumps, it will send back the following sysex : F0 43 60 0x F7. The 02 indicates an ACK, 03 indicates error, and 04 usually means you forgot to set the memory protection to off. The FB-01 will also show dump/received!! for a good dump, a dump/error for a bad dump and memory/protect if the memory protection is on. If you send all three sets of data, you will see the above sysex three times in the monitor.
If you want to send one sysex file to dump all three areas, put the configuration memory command first, then followed by the voice bank commands. I have found that the FB-01 will not acknowledge the configuration memory dump if it immediately follows a voice bank dump command. If it still doesn't work, send the dump commands as separate sysex files. A complete sysex file with all three areas will be 15,342 bytes, and should have the configuration memory sent first.
Capturing MT-32 or FB-01 Music
In order to obtain MT-32 or FB-01 song data, the following steps must be accomplished :
1. Capture the custom patches, if any
Not all games that support the MT-32 use custom patches. Games like King's Quest IV, Police Quest II, LOOM, The Secret of Monkey Island and Ultima VI do not use custom patches. However, they may still use a modest amount of sysex to modify existing patch and device parameters. Most games only load patches once, but some games like Ultima VII and Serpent Isle load three sets of patches, and each must be captured to capture all the music.
Fortunately, most games do not send an MT-32 reset once the player quits them. Additionally, MIDI cables are hot-swappable, so there are many ways to cut off a game and preserve its patches. So the first task is to start a game and let load its patches, then quit. The patches will be kept in the MT-32's memory.
The next step is to obtain those patches. If you are looking to dump a Sierra game's patches, the work has probably already been done and you can skip this step. Download the Sierra MT-32 Sound Library here : http://www.midimusicadventures.com/queststudios/mt32-resource/utilities/
The way I present here is a slightly tedious process, but typically you need only do it once per game. It requires a windows-compatible MIDI interface and the MIDI-OX program. The module will need to have its MIDI in and MIDI out cables connected to the interface. I found that an rev. 0 MT-32 did not send all the data to MIDI-OX, but a CM-32L did. The idea is to send sysex commands requesting that the module send the data in its memory. You will need one command for each section of memory, then you will need to save the resulting data to a file and perhaps convert it from text to a binary sysex file.
MIDI-OX is good because it has command called "Send/Receive Sysex", which will automatically save your data to a .syx file.
Note that an LAPC-I will not work to capture patches in this way. The LAPC-I is equilavent to an MPU-401 connected to a CM-32L by a MIDI OUT cable only. As there is no MIDI IN connection, the synthesizer has no way of sending data to the MPU-401 and thus the computer has no way to read it. The SCC-1 and all wavetable daughterboards have the same issue, but typically patch information is not requested from those devices.
When capturing a dump, do not use a crappy UART MPU-401 compatible interface like the ones found on a Sound Blaster 16. They failed to complete transfers of the MT-32's timbre banks.
2. Record the MIDI as played in a game
DOSBox is extremely useful for recording MIDI via its Capture Raw MIDI function. It saves all MIDI data to a MID file for easy editing in just about any sequencer.
You can also do this via a sequencer, which should be able to record MIDI data. This works best with two computers. In this case, connect the MIDI IN from your interface on computer one to the MIDI THRU of your MT-32. Computer two, preferably the older machine, will play the game and connect its interface to the MIDI IN of your MT-32.
3. Edit MIDI in Sequencer
In order to work with any MIDI file, you need a Sequencer. The best two sequencers back in the day were Voyetra Sequencer Plus Gold and Cakewalk Pro. Since we are talking to the MT-32, it is best to use vintage sequencers, and Quest Studios provides Voyetra's software for DOS and Cakewalk for Windows 3.1 Find them here :
http://www.midimusicadventures.com/queststudios/mt32-resource/utilities/
Both work in DOSBox, but because DOSBox does not implement the MIDI IN function, their functionality is somewhat crippled. Personally I prefer Cakewalk Pro.
MIDI files can be edited in a Sequencer similarly to how audio files are edited in an audio editing program. In this case, however, you will want to remove all the patch data that DOSBox captured. For the MT-32, DOSBox will fill all 256 banks (and they are not enough) with the patch data. Delete all of it with the Event List View. Do not delete any other sysex. For the FB-01, DOSBox will not completely capture the voice bank data, but you must only delete the sysex banks with the size 1024.
One thing you will want to do is to mute or delete any channels other than 2-10 for the MT-32. In Sierra's early SCI games, for example, channel 1 contains PC speaker data and channels 11-15 contains Adlib data. A CM-64 and CM-500 use channels 11-16 for their CM-32P and thus unintended sound will play on these channels if you are using those modules.
Cakewalk has the ability to play MIDI files, and you should avail yourself of this functionality. However, before you play a file, make sure to transmit the sysex patch bank with the Sysx view first. Find an empty bank and send it.
4. Embed patch to MIDI file (optional)
Cakewalk Pro uses .syx files to load patch banks in its bank manager. Load the .MID, go into the Sysex View page and load the sysex bank. Click on the Auto button and save your MID file. That is it! Additionally, it may be advisable to also embed an MT-32 reset sysex command so that you are sure you are not using any leftover data from any MIDI you played on the device prior. Finally, you may want to add a few extra measures of silence at the beginning of the song.
I do not believe that embedding is the best way to present these files. Many MIDI players have difficulty with large files or files with lots of sysex in it. Windows Media Player does not have any such issues, nor does DOSmid.
The MT-32 consists of eight instrument parts and one rhythm/percussion part. It calls them Parts 1-8 and R. Any part can be assigned to any of MIDI channels 1-16. The default is that parts 1-8 are assigned to MIDI channels 2-9. There is a setting to change this to MIDI channels 1-8. The rhythm/percussion part is always assigned to MIDI channel 10 by default.
These parts share 32-voices/notes of polyphony, but the dynamic allocation of polyphony is not efficient over 22-24 voices, especially on a first generation unit. The MT-32 does support an Overlow Assign mode where excess polyphony can be sent to a second MT-32 unit, but operation in practice is unreliable with first generation units.
A patch, which contains all the essential information for an instrument, is assigned to each part. Each patch can require up to 4 voices/notes to play, so there are restrictions on the sounds that can be played from the module. The use of multiple parts enables the MT-32 to be called Multi-Timbral, hence the name. This is done via a Program Change MIDI message, and the MT-32 contains built-in 128 instrument patches and 30 rhythm patches. A patch is made up of a timbre plus the patch parameter. Timbres are made up of up to four partials and common parameter setting for all partials. Each partial has many settings which can be individually controlled. Each partial takes one polyphony note/voice and can use either a waveform (square, rectangle or sawtooth) or a 16-bit PCM sample (128 available) as the basis of its sound.
A patch can call on four timbre banks, A, B, M & R. Timbre bank A corresponds to the first 64 built-in patches of the MT-32, bank B the second 64 built-in patches, bank R corresponds to the 30 percussion patches of the rhythm section (and the 33 sound effects of the LAPC-I/CM-32L), and bank M corresponds to an area where up to 64 user-created timbres are stored.
The MT-32 is a synthesizer because user created patches can be stored and recalled from memory. The SC-55, by contrast, is not a synthesizer. While each of the patches used by the 16 parts of the SC-55 can be adjusted similarly to an MT-32 timbre, there is much less flexibility and you can only modify the active patch. While the SC-55 is battery backed, this is intended to store the general settings of the module.
To dump or send custom patch/timbre data to the MT-32, System Exclusive MIDI messages are required. The sysex messages for patch/timbre data are unique to the MT-32 series and sequencers do not understand what they do. Moreover, most sequencer programs assume that Program Changes correspond to General MIDI instrument assingments, but the MT-32 has very different assignments.
2. Format of MT-32 Patches
The structure of an MT-32 patch, as contained in a sysex file, is as follows :
| Length in Bytes (Decimal) | MT-32 Area | Sysex Receive String |
| 33 | System Area | F0 41 10 16 11 10 00 00 00 00 17 59 F7 |
| 154 | Patch Temporary Area | F0 41 10 16 11 03 00 00 00 01 10 6C F7 |
| 266 | Rhythm Setup Temporary Area | F0 41 10 16 11 03 01 10 00 02 00 6A F7 |
| 360 | Rhythm Setup Temporary Area (CM-32L) | F0 41 10 16 11 03 01 10 00 02 54 16 F7 |
| 1064 | Patch Memory | F0 41 10 16 11 05 00 00 00 08 00 73 F7 |
| 17024 | Timbre Memory | F0 41 10 16 11 08 00 00 02 00 00 76 F7 |
The various areas can be in any order, since each area is separate and independent in the MT-32's memory. The temporary areas may not be required to be transmitted.
The MT-32 sends and receives data in packets no larger than 256 bytes (really 128 bytes, see below). In order to send or receive bytes to the MT-32's various memory areas, System Exclusive messages are required. Each message adds 10 bytes to the data to be transmitted. By doing the math, up to 71 (MT-32) or 72 (CM-32L) System Exclusive messages may be sent at the start of a game to a LA synthesizer. The structure of a system exclusive message is as follows :
F0 - Begin System Exclusive Message
41 - Manufacturer ID (Roland)
10 - Device ID/Unit # (Default is Unit 17)
16 - Model ID (Roland LA Device)
11 - Command ID (Request Data 1/RQ1)
This is sent from the computer to the synthesier to tell it to send the data in a memory area to the computer. Command ID 12 is Data Set 1/DT1, and it is used when writing data to the synthesizer.
10 00 00 - The address of the area of memory to be addressed
00 00 17 - The number of bytes of data to be requested with RQ1. With DT1, this can be up to 256 bytes with a single sysex command.
59 - Checksum
F7 - End of System Exclusive Message
The sysex files from Quest Studios also include an MT-32 Display Message at the beginning and at the end of the sysex file, adding approximately 58 bytes to the file. The format of these commands is as follows :
F0 41 10 16 12 20 00 00 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx ck F7
The Display of the MT-32 supports 20 characters, but the command data need not include all twenty character places. Text is encoded in 7-bit ASCII. You will have to calculate the checksum for the message. You can find a Windows program that will avoid that tedious business here :
http://www.bwalk.com.au/Convert/Convert.html
This program can be used to convert text file containing command strings into a syx or a mid file :
http://www.bwalk.com.au/MidiUtil/FileConvert.html
Note that addresses and data never use a value above 7F, this is because these bytes are actually 7-bit bytes, not 8-bit bytes, the high bit is never used. The above program can convert decimal and hexadecimal to the 7-bit values the MT-32 uses.
With a rev. 0 MT-32, there must be a 40 microsecond delay between the sending of system exclusive messages. Thus it will take a minimum of three seconds to send a full patch bank to the MT-32. The rev. 1 MT-32 and all other MT-32 compatible LA synthesizers do not have this limitation.
There is no reason why you cannot send more than one dump receive request at one time. You can combine all the above dump receive commands into one file and use the file to obtain all the data at once. The resulting file size for the MT-32 will be 18,541 bytes. For the CM-32L, it will be 18,635 bytes. After accounting for the text messages, this dump will be 16 bytes larger than the Quest Studio's dumps. This is because QS missed the temporary patch area for the rhythm part.
Yamaha FB-01 and IBM Music Feature Card
The Yamaha FB-01 FM Sound Generator supports seven patch/voice banks. Each bank can hold up to 48 patches. Banks 1 and 2 are RAM banks and this is where users can store their custom patches. Banks 3-7 are ROM banks and have 48 patches each. As its name suggests, these are the built-in patches. Unlike the MT-32, there is no distinction between instrument and percussion channels/patches. Thus the device supports 240 built-in patches and 96 user-created patches.
A Program Change command only works with numbers 0-47, essentially confining the non-FB-01 aware device to a small subset of its available patches. To change the patch/voice bank requires a System Exclusive command to change the configuration parameters. This is how another voice bank is selected. The FB-01 has 16 RAM and 4 ROM choices for its Configuration Memory, which assigns MIDI channels, polyphony reserve, channel volume and the like.
The FB-01 receives 8 MIDI channels (8 parts), and by default uses MIDI channel 1-8. It only supports 8 simultaneous note playback (8 note polyphony). Each instrument patch can take from 1-8 notes. The core of the device is the Yamaha YM2614 FM Operator Type-P, which is musicially and (almost) functionally identical to the YM2151 chip found in many, many arcade machines. This chip supports 4-operator FM synthesis.
Sierra's games store custom patches in both RAM banks, so both will need to be dumped. The FB-01 can only receive System Exclusive messages on the MIDI channel assigned to a specific module (thus up to 16 modules can be supported via the MIDI channels) The default is channel 0/1. The system exclusive commands to do this are as follows :
F0 43 75 00 20 00 00 F7 (Voice Bank 0)
F0 43 75 00 20 00 01 F7 (Voice Bank 1)
Each resulting file will be 6,363 bytes.
Additionally, you may also need to dump the configuration memory. The command to dump all configuration memory is :
F0 43 75 00 20 03 00 F7
The file will be 2,616 bytes.
Sierra's games also use System Exclusive messages to change instruments and voice banks and adjust certain events like Note On and Note Off with a finer degree of control than possible with a standard message. This sysex is not generally large, but must be included to obtain an accurate rendition of the song.
This method works with either the IBM Music Feature Card or the FB-01. The makers of the FB-01 helpfully also decided to allow you to also send data from the module using the front panel buttons, but using the sysex above allows for saving the resulting data in one step.
The IBM Music Feature Card defaults to the memory protection function to off. It does not have a battery. The FB-01 defaults memory protection to on and has a spot-welded CR2032 battery. It needs to be set to off for custom patch data to be received by the FB-01. The IBM Music Feature Card's power on defaults allow all MIDI messages to pass from the MIDI IN (with the breakout box) to the music hardware on the card.
When the FB-01 or IBM card receives patch/configuration dumps, it will send back the following sysex : F0 43 60 0x F7. The 02 indicates an ACK, 03 indicates error, and 04 usually means you forgot to set the memory protection to off. The FB-01 will also show dump/received!! for a good dump, a dump/error for a bad dump and memory/protect if the memory protection is on. If you send all three sets of data, you will see the above sysex three times in the monitor.
If you want to send one sysex file to dump all three areas, put the configuration memory command first, then followed by the voice bank commands. I have found that the FB-01 will not acknowledge the configuration memory dump if it immediately follows a voice bank dump command. If it still doesn't work, send the dump commands as separate sysex files. A complete sysex file with all three areas will be 15,342 bytes, and should have the configuration memory sent first.
Capturing MT-32 or FB-01 Music
In order to obtain MT-32 or FB-01 song data, the following steps must be accomplished :
1. Capture the custom patches, if any
Not all games that support the MT-32 use custom patches. Games like King's Quest IV, Police Quest II, LOOM, The Secret of Monkey Island and Ultima VI do not use custom patches. However, they may still use a modest amount of sysex to modify existing patch and device parameters. Most games only load patches once, but some games like Ultima VII and Serpent Isle load three sets of patches, and each must be captured to capture all the music.
Fortunately, most games do not send an MT-32 reset once the player quits them. Additionally, MIDI cables are hot-swappable, so there are many ways to cut off a game and preserve its patches. So the first task is to start a game and let load its patches, then quit. The patches will be kept in the MT-32's memory.
The next step is to obtain those patches. If you are looking to dump a Sierra game's patches, the work has probably already been done and you can skip this step. Download the Sierra MT-32 Sound Library here : http://www.midimusicadventures.com/queststudios/mt32-resource/utilities/
The way I present here is a slightly tedious process, but typically you need only do it once per game. It requires a windows-compatible MIDI interface and the MIDI-OX program. The module will need to have its MIDI in and MIDI out cables connected to the interface. I found that an rev. 0 MT-32 did not send all the data to MIDI-OX, but a CM-32L did. The idea is to send sysex commands requesting that the module send the data in its memory. You will need one command for each section of memory, then you will need to save the resulting data to a file and perhaps convert it from text to a binary sysex file.
MIDI-OX is good because it has command called "Send/Receive Sysex", which will automatically save your data to a .syx file.
Note that an LAPC-I will not work to capture patches in this way. The LAPC-I is equilavent to an MPU-401 connected to a CM-32L by a MIDI OUT cable only. As there is no MIDI IN connection, the synthesizer has no way of sending data to the MPU-401 and thus the computer has no way to read it. The SCC-1 and all wavetable daughterboards have the same issue, but typically patch information is not requested from those devices.
When capturing a dump, do not use a crappy UART MPU-401 compatible interface like the ones found on a Sound Blaster 16. They failed to complete transfers of the MT-32's timbre banks.
2. Record the MIDI as played in a game
DOSBox is extremely useful for recording MIDI via its Capture Raw MIDI function. It saves all MIDI data to a MID file for easy editing in just about any sequencer.
You can also do this via a sequencer, which should be able to record MIDI data. This works best with two computers. In this case, connect the MIDI IN from your interface on computer one to the MIDI THRU of your MT-32. Computer two, preferably the older machine, will play the game and connect its interface to the MIDI IN of your MT-32.
3. Edit MIDI in Sequencer
In order to work with any MIDI file, you need a Sequencer. The best two sequencers back in the day were Voyetra Sequencer Plus Gold and Cakewalk Pro. Since we are talking to the MT-32, it is best to use vintage sequencers, and Quest Studios provides Voyetra's software for DOS and Cakewalk for Windows 3.1 Find them here :
http://www.midimusicadventures.com/queststudios/mt32-resource/utilities/
Both work in DOSBox, but because DOSBox does not implement the MIDI IN function, their functionality is somewhat crippled. Personally I prefer Cakewalk Pro.
MIDI files can be edited in a Sequencer similarly to how audio files are edited in an audio editing program. In this case, however, you will want to remove all the patch data that DOSBox captured. For the MT-32, DOSBox will fill all 256 banks (and they are not enough) with the patch data. Delete all of it with the Event List View. Do not delete any other sysex. For the FB-01, DOSBox will not completely capture the voice bank data, but you must only delete the sysex banks with the size 1024.
One thing you will want to do is to mute or delete any channels other than 2-10 for the MT-32. In Sierra's early SCI games, for example, channel 1 contains PC speaker data and channels 11-15 contains Adlib data. A CM-64 and CM-500 use channels 11-16 for their CM-32P and thus unintended sound will play on these channels if you are using those modules.
Cakewalk has the ability to play MIDI files, and you should avail yourself of this functionality. However, before you play a file, make sure to transmit the sysex patch bank with the Sysx view first. Find an empty bank and send it.
4. Embed patch to MIDI file (optional)
Cakewalk Pro uses .syx files to load patch banks in its bank manager. Load the .MID, go into the Sysex View page and load the sysex bank. Click on the Auto button and save your MID file. That is it! Additionally, it may be advisable to also embed an MT-32 reset sysex command so that you are sure you are not using any leftover data from any MIDI you played on the device prior. Finally, you may want to add a few extra measures of silence at the beginning of the song.
I do not believe that embedding is the best way to present these files. Many MIDI players have difficulty with large files or files with lots of sysex in it. Windows Media Player does not have any such issues, nor does DOSmid.
Sunday, June 16, 2013
Roland MPU-401 : The Vintage Computing Part that Simply Works
I have, and have owned lots of vintage PC items since 2006. I used to have an Apple II Platinum with dual Mockingboards, that was quite the system. I have an Atari 800 that works, but I have no software for it. I also have had lots of PC compatible cards and components. I have owned one of every major iteration of the 3dfx Voodoo cards except the Voodoo 2 (and I had one of those back in the day). At one time I possessed a representative of every major ISA Sound Blaster. I currently possess a Game Blaster complete in box with all manuals, and while that is an exceptionally rare card, it is not what I consider the highlight of my collection. The quality of the music for the card or its chips is often third-rate (behind MT-32 and Adlib). I have the true IBM VGA 8-bit card, and while it is also extremely rare its not especially impressive in what it can do. I have a Gravis Ultrasound ACE, but from what I hear the full Ultrasound is not particularly incompatible with the Adlib or Sound Blaster, so its Adlib port disabling feature is not a great selling point. The 286 Express Tandy 1000/SX accelerator is also quite a find, but it can overheat with software. The ADP-50L is a fine 16-to-8 bit IDE card, but it has a very long bootup screen.
Perhaps most prized item in my possession is my Roland MPU-401 MIDI Processing Unit. Equally as important is the interface card that came with it, the MIF-IPC-A. The MPU-401 is essentially a computer in its own right, with a CPU, ROM, RAM and a bus interface. The external unit contains all the intelligent circuitry and can be connected to an Apple II, a Commodore 64, an MSX, Sharp X1, a Fujitsu FM7 or an NEC PC-88 or PC-98 machine in addition to a PC compatible. All you need is the appropriate adapter card or cartridge. The external unit connects to the interface card/cartridge through a DB-25 male/male cable. In my cable, pins 7, 8, 19, 20 and 21 are not connected and pins 13 & 25 are tied together (both GND).
Just as important, it came with all documentation and manuals. It had the Roland MPU-401 Technical Interface Manual, the MPU-401 Booklet and the sheet for the MIF-IPC(-A) with the schematic on the back. Finally, the equipment and manuals are in beautiful shape. It didn't come with the box as I recall. Later a friend of mine donated a second MPU-401 to me, but I don't have a second interface card for it.
What is the most important thing about this interface is what it represented. The principal function of this interface was to connect to a Roland MT-32 or CM-32L (have both of them). Unlike the Game Blaster, when a game supported the MT-32, the game almost always sounded best on it (not too hard when the competition was the Adlib Music Synthesizer Card and to a lesser extent the Game Blaster). Roland LA Synthesis had a very long reign in the PC sound realm, from 1988 to 1992 when General MIDI devices began taking over.
The interface card provides two I/O ports to the interface at I/O 330 & 331. By its design, it cannot use I/O 332-337 because pins A1 & A2 are unconnected The traces next to the comparator allow it to be put virtually anywhere in the PC's 10-bit address space. It can also use any interrupt request available on the ISA bus, but to use an IRQ other than the default 2/9, you also have to cut a trace. Essentially the card is a traffic cop and a buffer for the 8 data bits and a few other signals. It also supplies an Interrupt Request when the MPU-401 needs to assert an interrupt. The card uses a DB-25 female connector and bracket, four 74LS TTL logic chips and decoupling capacitors, one resistor and one electrolytic capacitor. The card is as simple as you get and can easily be recreated. You can find the schematic in my Tutorial : How to Get the Roland MT-32 working with DOS Games. Without it, the complex interface unit is useless.
The card can be used in every PC compatible system, including PCs, XTs, ATs, Tandy 1000s and others. The original MIF-IPC was a more complex card but has issues working in AT-class machines. While the MPU-IPC and MPU-IPC-T can also work with everything, the interface is on the card, and if lost the breakout box is useless. The last in the series, the MPU-401AT is not guaranteed to work in something less advanced than an AT system. However, it was released in 1994 when the XT class machines were no longer a strong market segment, so it may not have been tested in them. It is an 8-bit card, and probably will work without trouble in standard and near-standard (Tandy 1000) PCs. However, it, like the MPU-401 SCC-1 and LAPC-I card go for very high prices when they are auctioned off on ebay. MPU-IPC and MPU-IPC-Ts are often auctioned off incomplete. In those cases, the card is important and the external MIDI IN and OUT ports can be recreated easily.
The MPU-401, MPU-IPC, MPU-IMC, MPU-IPC-T and LAPC-I all provide two MIDI OUTs. Thus you can control a Roland MT-32 and a Roland SC-55 with one of these devices and not have to use a MIDI THRU, which can add latency and eventually lead to loss of data integrity depending on how many modules are in the Thru chain. In practice, the first module in a MIDI THRU loop will be fine.
In my experience, the interface cards are much more difficult to find than the external interface. If you find one, some things to note :
On the card itself, the traces by the silkscreened I/O and Int boxes should be at A7 & A& and 2/9, respectively. If the unlikely event they are not, then you will need to connect them with wire and obliterate any other traces made. Otherwise the card will not be at the ideal settings and your games will not work with it unless they have an option to manually set the I/O and IRQ values.
The external interface unit has a cover secured by four Phillips screws. You should remove them. Inside, depending on the age of the board, you may or may not have an EPROM/ROM. Versions 1.2A, 1.2B, 1.3, 1.4, 1.4A, 1.4B, 1.5 and 1.5A exist. Version 1.5A is the version found in the MPU-IPC, MPU-IMC, MPU-IPC-T and LAPC-I, so that is the version you should look for. If the CPU inside is a HD6801VOB55P, then the ROM is embedded in the chip. Serial numbers above 588000 are safe. Look on the underneath of the box to find it. You can find the version number, if not identified by an EPROM sticker, with a program called mputhru. In the end, I am uncertain if it makes any difference what the ROM version is, at least if you have a 1.3 or above.
Second, inside the box there is a silkscreened "ADRS" with four positions numbered 1-4. This must not be modified in order for your unit to work with the MIF-IPC-A or at I/O 330-331. If it is, you must set it back to #1 with a jumper wire. This was there to allow a single MIF-IPC and other cards to control up to four external interfaces. It will not work with the MIF-IPC-A, with the MIF-IPC-A only address #1 will be valid. You need an original IF-MIDI/IBM or MIF-IPC (functionally identical) card to get this to work. Here is how the address lines were configured on the IF-MIDI/IBM and MIF-IPC :
A0 - 0 or 1 (selects command/data or status port)
A1 - 0 or 1
A2 - 0 or 1
A3 - 0 or 1 (Unconnected at MPU-401)
A4 - 1
A5 - 1
A6 - 0
A7 - 0
A8 - 1
A9 - 1
The MPU-IPC-A connects the lines as follows :
A0 - 0 or 1 (selects command/data or status port)
A1 - 0 (Not connected to MPU-401)
A2 - 0 (Not connected to MPU-401)
A3 - 0
A4 - 1
A5 - 1
A6 - 0
A7 - 0
A8 - 1
A9 - 1
For all cards, the traces can be cut and a jumper block can be soldered on to select 0 or 1 for A4-A9, which gives 64 choices, not all of them would work.
As I understand the function of the LS138 in the MPU-401 box, it is responsive to ISA A1 and A2. Typically, they are both 0 and the third '138 input is always 0, only Y0 will be active (low). If A1 or A2 become 1, then the MPU-401 should be unresponsive. You could control up to four MPU-401 boxes in software just by setting the right address. A1 = 1, A2 = 0, I/O 332-333; A1 = 0, A2 = 1, I/O 334-335; A1 = 1, A2 = 1, I/O 336-337.
The ADRS block in the MPU-401 should allow you to rearrange the addressing of the 138 with only cutting a trace and installing a jumper block or wire. I have never done this and see no reason to do it, but it is definitely possible, but only with the older boards. These boards have flaky compatibility in an IBM AT or systems with faster speeds, but the MIF-IPC-A is sold in any system with an ISA slot, including Tandy 1000s.
Fascinatingly, this unit, which was released around 1984, combined with the MIF-IPC-A card released in 1986, functioned perfectly as a MIDI interface for well over fifteen years after it was released. I am positive that driver support exists for it in every version of Windows from 3.0 with multimedia extensions to Windows XP. It has no hanging note bugs and any game or software requiring Normal, a.k.a. Intelligent MPU-401 features will work with it.
Unlike virtually every other contemporary sound card, the Roland MPU-401 + MT-32 or SC-55 never requires any kind of software driver to use with games or programs. Drivers always accompany the software or can be found as patches (floppy versions of LOOM, Secret of Monkey Island & Day of the Tentacle). Usually the same can be said for the Adlib, Game Blaster and Sound Blasters, but some games do require drivers supplied on the card's installation disks to work. Once you get to the Sound Blaster Pros and 16s or your Pro Audio Spectrums and your Gravis Ultrasounds, you will need your installation disks.
Unknown to me for the longest time, but there was secretly trouble in this paradise. One game that required MPU-401 was It Came from the Desert. That game would simply not work with the MT-32 option in my 486 with the MPU-401 and MIF-IPC-A. I put it down to marginal code which did not like my system and I did not think of it again for a long time. However, eventually I found there were problems in trying to use the MIDI IN of the MPU-401. I eventually isolated the issue to the 74LS04 Hex Inverter on my MIF-IPC-A. The interrupt line goes though that IC and was not being raised by the system, thus breaking many MIDI recording programs and It Came from the Desert. I replaced that IC and everything worked thereafter, including that Cinemaware game. Roland did not use all the inputs (6) on the hex inverter and left the unused inputs floating. Apparently this is a bad thing for the life of the chip, and all the unused inputs (pins 1, 11 & 13) should be tied to ground (pin 7) .
Perhaps most prized item in my possession is my Roland MPU-401 MIDI Processing Unit. Equally as important is the interface card that came with it, the MIF-IPC-A. The MPU-401 is essentially a computer in its own right, with a CPU, ROM, RAM and a bus interface. The external unit contains all the intelligent circuitry and can be connected to an Apple II, a Commodore 64, an MSX, Sharp X1, a Fujitsu FM7 or an NEC PC-88 or PC-98 machine in addition to a PC compatible. All you need is the appropriate adapter card or cartridge. The external unit connects to the interface card/cartridge through a DB-25 male/male cable. In my cable, pins 7, 8, 19, 20 and 21 are not connected and pins 13 & 25 are tied together (both GND).
Just as important, it came with all documentation and manuals. It had the Roland MPU-401 Technical Interface Manual, the MPU-401 Booklet and the sheet for the MIF-IPC(-A) with the schematic on the back. Finally, the equipment and manuals are in beautiful shape. It didn't come with the box as I recall. Later a friend of mine donated a second MPU-401 to me, but I don't have a second interface card for it.
What is the most important thing about this interface is what it represented. The principal function of this interface was to connect to a Roland MT-32 or CM-32L (have both of them). Unlike the Game Blaster, when a game supported the MT-32, the game almost always sounded best on it (not too hard when the competition was the Adlib Music Synthesizer Card and to a lesser extent the Game Blaster). Roland LA Synthesis had a very long reign in the PC sound realm, from 1988 to 1992 when General MIDI devices began taking over.
The interface card provides two I/O ports to the interface at I/O 330 & 331. By its design, it cannot use I/O 332-337 because pins A1 & A2 are unconnected The traces next to the comparator allow it to be put virtually anywhere in the PC's 10-bit address space. It can also use any interrupt request available on the ISA bus, but to use an IRQ other than the default 2/9, you also have to cut a trace. Essentially the card is a traffic cop and a buffer for the 8 data bits and a few other signals. It also supplies an Interrupt Request when the MPU-401 needs to assert an interrupt. The card uses a DB-25 female connector and bracket, four 74LS TTL logic chips and decoupling capacitors, one resistor and one electrolytic capacitor. The card is as simple as you get and can easily be recreated. You can find the schematic in my Tutorial : How to Get the Roland MT-32 working with DOS Games. Without it, the complex interface unit is useless.
The card can be used in every PC compatible system, including PCs, XTs, ATs, Tandy 1000s and others. The original MIF-IPC was a more complex card but has issues working in AT-class machines. While the MPU-IPC and MPU-IPC-T can also work with everything, the interface is on the card, and if lost the breakout box is useless. The last in the series, the MPU-401AT is not guaranteed to work in something less advanced than an AT system. However, it was released in 1994 when the XT class machines were no longer a strong market segment, so it may not have been tested in them. It is an 8-bit card, and probably will work without trouble in standard and near-standard (Tandy 1000) PCs. However, it, like the MPU-401 SCC-1 and LAPC-I card go for very high prices when they are auctioned off on ebay. MPU-IPC and MPU-IPC-Ts are often auctioned off incomplete. In those cases, the card is important and the external MIDI IN and OUT ports can be recreated easily.
The MPU-401, MPU-IPC, MPU-IMC, MPU-IPC-T and LAPC-I all provide two MIDI OUTs. Thus you can control a Roland MT-32 and a Roland SC-55 with one of these devices and not have to use a MIDI THRU, which can add latency and eventually lead to loss of data integrity depending on how many modules are in the Thru chain. In practice, the first module in a MIDI THRU loop will be fine.
In my experience, the interface cards are much more difficult to find than the external interface. If you find one, some things to note :
On the card itself, the traces by the silkscreened I/O and Int boxes should be at A7 & A& and 2/9, respectively. If the unlikely event they are not, then you will need to connect them with wire and obliterate any other traces made. Otherwise the card will not be at the ideal settings and your games will not work with it unless they have an option to manually set the I/O and IRQ values.
The external interface unit has a cover secured by four Phillips screws. You should remove them. Inside, depending on the age of the board, you may or may not have an EPROM/ROM. Versions 1.2A, 1.2B, 1.3, 1.4, 1.4A, 1.4B, 1.5 and 1.5A exist. Version 1.5A is the version found in the MPU-IPC, MPU-IMC, MPU-IPC-T and LAPC-I, so that is the version you should look for. If the CPU inside is a HD6801VOB55P, then the ROM is embedded in the chip. Serial numbers above 588000 are safe. Look on the underneath of the box to find it. You can find the version number, if not identified by an EPROM sticker, with a program called mputhru. In the end, I am uncertain if it makes any difference what the ROM version is, at least if you have a 1.3 or above.
Second, inside the box there is a silkscreened "ADRS" with four positions numbered 1-4. This must not be modified in order for your unit to work with the MIF-IPC-A or at I/O 330-331. If it is, you must set it back to #1 with a jumper wire. This was there to allow a single MIF-IPC and other cards to control up to four external interfaces. It will not work with the MIF-IPC-A, with the MIF-IPC-A only address #1 will be valid. You need an original IF-MIDI/IBM or MIF-IPC (functionally identical) card to get this to work. Here is how the address lines were configured on the IF-MIDI/IBM and MIF-IPC :
A0 - 0 or 1 (selects command/data or status port)
A1 - 0 or 1
A2 - 0 or 1
A3 - 0 or 1 (Unconnected at MPU-401)
A4 - 1
A5 - 1
A6 - 0
A7 - 0
A8 - 1
A9 - 1
The MPU-IPC-A connects the lines as follows :
A0 - 0 or 1 (selects command/data or status port)
A1 - 0 (Not connected to MPU-401)
A2 - 0 (Not connected to MPU-401)
A3 - 0
A4 - 1
A5 - 1
A6 - 0
A7 - 0
A8 - 1
A9 - 1
For all cards, the traces can be cut and a jumper block can be soldered on to select 0 or 1 for A4-A9, which gives 64 choices, not all of them would work.
As I understand the function of the LS138 in the MPU-401 box, it is responsive to ISA A1 and A2. Typically, they are both 0 and the third '138 input is always 0, only Y0 will be active (low). If A1 or A2 become 1, then the MPU-401 should be unresponsive. You could control up to four MPU-401 boxes in software just by setting the right address. A1 = 1, A2 = 0, I/O 332-333; A1 = 0, A2 = 1, I/O 334-335; A1 = 1, A2 = 1, I/O 336-337.
The ADRS block in the MPU-401 should allow you to rearrange the addressing of the 138 with only cutting a trace and installing a jumper block or wire. I have never done this and see no reason to do it, but it is definitely possible, but only with the older boards. These boards have flaky compatibility in an IBM AT or systems with faster speeds, but the MIF-IPC-A is sold in any system with an ISA slot, including Tandy 1000s.
Fascinatingly, this unit, which was released around 1984, combined with the MIF-IPC-A card released in 1986, functioned perfectly as a MIDI interface for well over fifteen years after it was released. I am positive that driver support exists for it in every version of Windows from 3.0 with multimedia extensions to Windows XP. It has no hanging note bugs and any game or software requiring Normal, a.k.a. Intelligent MPU-401 features will work with it.
Unlike virtually every other contemporary sound card, the Roland MPU-401 + MT-32 or SC-55 never requires any kind of software driver to use with games or programs. Drivers always accompany the software or can be found as patches (floppy versions of LOOM, Secret of Monkey Island & Day of the Tentacle). Usually the same can be said for the Adlib, Game Blaster and Sound Blasters, but some games do require drivers supplied on the card's installation disks to work. Once you get to the Sound Blaster Pros and 16s or your Pro Audio Spectrums and your Gravis Ultrasounds, you will need your installation disks.
Unknown to me for the longest time, but there was secretly trouble in this paradise. One game that required MPU-401 was It Came from the Desert. That game would simply not work with the MT-32 option in my 486 with the MPU-401 and MIF-IPC-A. I put it down to marginal code which did not like my system and I did not think of it again for a long time. However, eventually I found there were problems in trying to use the MIDI IN of the MPU-401. I eventually isolated the issue to the 74LS04 Hex Inverter on my MIF-IPC-A. The interrupt line goes though that IC and was not being raised by the system, thus breaking many MIDI recording programs and It Came from the Desert. I replaced that IC and everything worked thereafter, including that Cinemaware game. Roland did not use all the inputs (6) on the hex inverter and left the unused inputs floating. Apparently this is a bad thing for the life of the chip, and all the unused inputs (pins 1, 11 & 13) should be tied to ground (pin 7) .
Saturday, June 15, 2013
First Generation Roland Sound Canvas Devices
In this article, I will take an overview of the various first generation devices Roland released bearing its "Sound Canvas" branding and GS standard and their importance to PC gaming. I characterize a "first generation Roland GS device" as any device with the features of an SC-55 but not the full features of an SC-55mkII.
In 1991, Roland released its SC-55 MIDI Sound Generator, its first GS product. This machine supported 16 MIDI channels (percussion on channel 10), 128 capital tones, 69 variation tones and 8 percussion/drum sets. It could support up to 24 voice polyphony at one time (each instrument using 1-2 voices or partials). It also had an effects processor with chorus and reverb which games (Ultima VIII : Pagan) have used. It has a battery to remember the user's settings This is a standard CR2032 coin cell in a holder and should be replaced or removed when you purchase a unit.
Its backlit LCD screen will show which tone is being played by which part, and games can also control the text at the top of the display (Lands of Lore). All first generation devices also supported 128 MT-32 tones and a MT-32 + CM-32L percussion set (63 sounds). The total Sound Canvas patch set is 3MB in size, 1MB of which is probably dedicated to the MT-32 tones
The SC-55 has two MIDI IN ports, one MIDI OUT and one MIDI THRU port. It has two RCA input jacks and two RCA output jacks and a headphone mini-jack. It also comes with a hand held remote but no software. It has 18 front panel buttons. From here you can mute all sound output from the module, which is very useful if you are sending the input from an MT-32 or CM-32L through it. You can set the MT-32 emulation mode by pressing the instrument left button as you turn the power on and pressing All. You can set the GS mode by pressing the instrument right button and pressing All. You can do a full factory reset by holding both instrument buttons and pressing all.
The earliest Roland SC-55s simply have a "GS STANDARD" logo on the bottom of the front panel, while slightly later SC-55s have a "GS" logo. Modules with the GS logo may still be
Between these Roland SC-55s and the later devices, there were two changes in the instrument map. Early modules have at Program Change #121 Fl. Key Click. There is no Breath Noise tone. Later modules in the series would put Breath Noise as the default tone on PC#121 and put Fl. Key Click as a variation tone. Breath Noise is the canonical General MIDI tone for PC#121. Early modules lack a sine wave variation tone at PC#81. These changes can be seen in all General MIDI/GS units and even some simply "GS" branded units. GS branded SC-55s with a Control ROM version of 1.10 will have the old instrument table, while units with a 1.20 or 1.21 Control ROM will have the new instruments.
If you want to find the version number of your unit, put the SC-55 in standby mode and press both Instrument buttons followed by both MIDI CH buttons. The information will flash on the LCD panel.
A hypothesis has circulated that certain PC game composers may have used an early "GS STANDARD" to compose their music. Examples included Descent and Descent 2, DOOM, DOOM II or Duke Nukem 3D. However, the composer for DOOM I & II and Duke Nukem, Robert Prince, has stated that he did not use an early SC-55. Moreover, at least six composers contributed to Descent and Descent 2. There is little likelihood of more than one or two of them using an early module. I would suggest that this hypothesis is a myth that has been debunked.
Next, Roland released the SCC-1 IBM PC sound card. This card contained the synthesis portion of the SC-55 with a cut-down Roland MPU-401 interface. No battery, no display. Nonetheless, if a game had an install option for the Roland SCC-1, the exact same functionality will be present though a Roland MPU-401 card/breakout box connected to an SC-55 via MIDI OUT. The SCC-1 has two RCA output jacks, one headphone mini-jack, one MIDI OUT and one MIDI IN mini-DINs. They need adapters to full DINs. Pinouts can be found here : http://nerdlypleasures.blogspot.com/2010/03/tutorial-how-to-get-roland-mt-32.html
Soon after, Roland released the GS compatible devices in its "computer module series", the CM-300 and CM-500. The CM-300 has the exact same capabilities as the SC-55 except no LCD panel or buttons and fewer ports. The CM-500 is a CM-300 combined with an CM-32L. Both CM modules lack a battery. Both have one MIDI IN, MIDI OUT and MIDI THRU ports. They also have two auidio output 1/4" jacks, one stereo headphone 1/4" jack. The CM-300 has two audio input 1/4" jacks, intended for an MT-32 or CM-32L's input. The CM-500 has a four-position mode switch instead. The CM-500 is a true Roland LA Synthesis device, but its vibrato has been criticized as noticeably harsher than the MT-32, MT-100, CM-32L, CM-64 and LAPC-I. The SCC-1, CM-300 and CM-500 also support the first 64 tones ("built-in") of the CM-64 module, although the instrument sample quality is superior on the true CM-64.
By no later than March of 1992, Roland added official support for the General MIDI standard to the SC-55, CM-300 and CM-500. These modules are identified with the General MIDI logo being next to the GS logo. Unlike the SC-55mkII, the SC-55 cannot initialize GM mode via the front panel. However, it can turn the GS features off by pressing the part buttons simultaneously, using the all and mute buttons to get to the Rx GS Reset item and pressing the instrument left button to turn it off (and the right button to turn it on).
What does the addition of General MIDI support mean in practice?
General MIDI is a derived subset of the GS standard. In other words, GS is General MIDI with some extra features. In a pre-General MIDI module, if a GS reset or a GM reset was sent to the module, it would have the identical effect, the module would be reset. In a General MIDI module, a GS reset would turn on GS features (variation tone support and NRPN) if the device was in GM mode. You would think that a GM reset would turn off those GS features. However, this is not the case unless the setting of Rx GS Reset is turned off. In that case, games that use variation tones will not be used (Might and Magic IV-V).
In the beginning of 1992, Roland released the SC-155. This device added sliders to control various settings of the synthesizer and otherwise looks like an SC-55. This is the first device that officially supported the General MIDI standard on its release, as would all Roland products released thereafter.
Later in 1992, Roland released the JV-30 Keyboard. This was a music synthesizer keyboard with 61 keys and could save the user's modifications to individual tones. It appears to contain the extra tones found in the SC-55mkII. However, unlike the mkII it does support capital tone fallback.
What is capital tone feedback and why is it important?
Each of the 128 Capital Tones can support 127 Variation Tones in the GS standard, even though the upper limit never came close to being never reached. If a composer used variation tone #5 of capital tone #1 (Grand Piano), in his MIDI synthesizer for a certain piece of music, it would not play if a listener played back the song on another device that did not contain variation tone #5. In the early first generation GS devices, if the specified variation tone did not exist in the module, then the module would fallback and play the capital tone instead. Since variation tones are supposed to be similar to the capital tone, some semblance of the sound the composer intended would be played. Beginning with the SC55mkII, however, no sound will be heard if the song selects an invalid variation tone. This can be manifested when programmers got lazy and relied on this feature instead of sending proper Program Change and Bank Select messages (Space Quest V : The Next Mutation).
Finally, Roland released an update to the SCC-1. The board itself is labeled the SCC-1A. It has the extra sounds of the JV-30 Keyboard but does not support capital tone fallback. This was a feature patented by Yamaha apparently.
Also during 1992, Roland released the General MIDI only SC-7. This cut down module does not support the GS standard, so no variation tones. However, it does support a Serial MIDI interface (no longer useless for DOS games because of SoftMPU) and 28-voice polyphony. It also supports six out of the nine drumsets, reverb and chorus found in a true Sound Canvas. The SC-55mkII would incorporate the increased polyphony of the SC-7 and the sounds of the SCC-1A.
In 1991, Roland released its SC-55 MIDI Sound Generator, its first GS product. This machine supported 16 MIDI channels (percussion on channel 10), 128 capital tones, 69 variation tones and 8 percussion/drum sets. It could support up to 24 voice polyphony at one time (each instrument using 1-2 voices or partials). It also had an effects processor with chorus and reverb which games (Ultima VIII : Pagan) have used. It has a battery to remember the user's settings This is a standard CR2032 coin cell in a holder and should be replaced or removed when you purchase a unit.
Its backlit LCD screen will show which tone is being played by which part, and games can also control the text at the top of the display (Lands of Lore). All first generation devices also supported 128 MT-32 tones and a MT-32 + CM-32L percussion set (63 sounds). The total Sound Canvas patch set is 3MB in size, 1MB of which is probably dedicated to the MT-32 tones
The SC-55 has two MIDI IN ports, one MIDI OUT and one MIDI THRU port. It has two RCA input jacks and two RCA output jacks and a headphone mini-jack. It also comes with a hand held remote but no software. It has 18 front panel buttons. From here you can mute all sound output from the module, which is very useful if you are sending the input from an MT-32 or CM-32L through it. You can set the MT-32 emulation mode by pressing the instrument left button as you turn the power on and pressing All. You can set the GS mode by pressing the instrument right button and pressing All. You can do a full factory reset by holding both instrument buttons and pressing all.
The earliest Roland SC-55s simply have a "GS STANDARD" logo on the bottom of the front panel, while slightly later SC-55s have a "GS" logo. Modules with the GS logo may still be
Between these Roland SC-55s and the later devices, there were two changes in the instrument map. Early modules have at Program Change #121 Fl. Key Click. There is no Breath Noise tone. Later modules in the series would put Breath Noise as the default tone on PC#121 and put Fl. Key Click as a variation tone. Breath Noise is the canonical General MIDI tone for PC#121. Early modules lack a sine wave variation tone at PC#81. These changes can be seen in all General MIDI/GS units and even some simply "GS" branded units. GS branded SC-55s with a Control ROM version of 1.10 will have the old instrument table, while units with a 1.20 or 1.21 Control ROM will have the new instruments.
If you want to find the version number of your unit, put the SC-55 in standby mode and press both Instrument buttons followed by both MIDI CH buttons. The information will flash on the LCD panel.
A hypothesis has circulated that certain PC game composers may have used an early "GS STANDARD" to compose their music. Examples included Descent and Descent 2, DOOM, DOOM II or Duke Nukem 3D. However, the composer for DOOM I & II and Duke Nukem, Robert Prince, has stated that he did not use an early SC-55. Moreover, at least six composers contributed to Descent and Descent 2. There is little likelihood of more than one or two of them using an early module. I would suggest that this hypothesis is a myth that has been debunked.
Next, Roland released the SCC-1 IBM PC sound card. This card contained the synthesis portion of the SC-55 with a cut-down Roland MPU-401 interface. No battery, no display. Nonetheless, if a game had an install option for the Roland SCC-1, the exact same functionality will be present though a Roland MPU-401 card/breakout box connected to an SC-55 via MIDI OUT. The SCC-1 has two RCA output jacks, one headphone mini-jack, one MIDI OUT and one MIDI IN mini-DINs. They need adapters to full DINs. Pinouts can be found here : http://nerdlypleasures.blogspot.com/2010/03/tutorial-how-to-get-roland-mt-32.html
Soon after, Roland released the GS compatible devices in its "computer module series", the CM-300 and CM-500. The CM-300 has the exact same capabilities as the SC-55 except no LCD panel or buttons and fewer ports. The CM-500 is a CM-300 combined with an CM-32L. Both CM modules lack a battery. Both have one MIDI IN, MIDI OUT and MIDI THRU ports. They also have two auidio output 1/4" jacks, one stereo headphone 1/4" jack. The CM-300 has two audio input 1/4" jacks, intended for an MT-32 or CM-32L's input. The CM-500 has a four-position mode switch instead. The CM-500 is a true Roland LA Synthesis device, but its vibrato has been criticized as noticeably harsher than the MT-32, MT-100, CM-32L, CM-64 and LAPC-I. The SCC-1, CM-300 and CM-500 also support the first 64 tones ("built-in") of the CM-64 module, although the instrument sample quality is superior on the true CM-64.
By no later than March of 1992, Roland added official support for the General MIDI standard to the SC-55, CM-300 and CM-500. These modules are identified with the General MIDI logo being next to the GS logo. Unlike the SC-55mkII, the SC-55 cannot initialize GM mode via the front panel. However, it can turn the GS features off by pressing the part buttons simultaneously, using the all and mute buttons to get to the Rx GS Reset item and pressing the instrument left button to turn it off (and the right button to turn it on).
What does the addition of General MIDI support mean in practice?
General MIDI is a derived subset of the GS standard. In other words, GS is General MIDI with some extra features. In a pre-General MIDI module, if a GS reset or a GM reset was sent to the module, it would have the identical effect, the module would be reset. In a General MIDI module, a GS reset would turn on GS features (variation tone support and NRPN) if the device was in GM mode. You would think that a GM reset would turn off those GS features. However, this is not the case unless the setting of Rx GS Reset is turned off. In that case, games that use variation tones will not be used (Might and Magic IV-V).
In the beginning of 1992, Roland released the SC-155. This device added sliders to control various settings of the synthesizer and otherwise looks like an SC-55. This is the first device that officially supported the General MIDI standard on its release, as would all Roland products released thereafter.
Later in 1992, Roland released the JV-30 Keyboard. This was a music synthesizer keyboard with 61 keys and could save the user's modifications to individual tones. It appears to contain the extra tones found in the SC-55mkII. However, unlike the mkII it does support capital tone fallback.
What is capital tone feedback and why is it important?
Each of the 128 Capital Tones can support 127 Variation Tones in the GS standard, even though the upper limit never came close to being never reached. If a composer used variation tone #5 of capital tone #1 (Grand Piano), in his MIDI synthesizer for a certain piece of music, it would not play if a listener played back the song on another device that did not contain variation tone #5. In the early first generation GS devices, if the specified variation tone did not exist in the module, then the module would fallback and play the capital tone instead. Since variation tones are supposed to be similar to the capital tone, some semblance of the sound the composer intended would be played. Beginning with the SC55mkII, however, no sound will be heard if the song selects an invalid variation tone. This can be manifested when programmers got lazy and relied on this feature instead of sending proper Program Change and Bank Select messages (Space Quest V : The Next Mutation).
Finally, Roland released an update to the SCC-1. The board itself is labeled the SCC-1A. It has the extra sounds of the JV-30 Keyboard but does not support capital tone fallback. This was a feature patented by Yamaha apparently.
Also during 1992, Roland released the General MIDI only SC-7. This cut down module does not support the GS standard, so no variation tones. However, it does support a Serial MIDI interface (no longer useless for DOS games because of SoftMPU) and 28-voice polyphony. It also supports six out of the nine drumsets, reverb and chorus found in a true Sound Canvas. The SC-55mkII would incorporate the increased polyphony of the SC-7 and the sounds of the SCC-1A.
Subscribe to:
Posts (Atom)






