Difference between revisions of "MIDI"

From Video Game Music Preservation Foundation Wiki
Jump to: navigation, search
(? to MIDI)
 
(49 intermediate revisions by 7 users not shown)
Line 1: Line 1:
 
{{Infobox Format
 
{{Infobox Format
| Title      = Multiple Instrument Digital Interface
+
| Title      = Musical Instrument Digital Interface
| Format      = MIDI
+
| Format      = MIDI
| Developer  = [[Dave Smith]]
+
| Developer  = [[Dave Smith]]
| Header      = SMF
+
| Header      = SMF
| Content    = Notational
+
| Content    = Notational
| Instruments = Optional
+
| Instruments = Optional
| OutputDA    = No
+
| OutputDA    = No
| OutputMIDI  = Yes
+
| OutputMIDI  = Yes
| OutputFM    = Yes
+
| OutputFM    = Yes
| OutputPSG  = Yes
+
| OutputPSG  = Yes
| Released    = 1983-??-??
+
| Released    = 1983-??-??
| FirstGame  = ?
+
| FirstGame  = ?
| Extension01 = *.mid
+
| Extension01 = *.mid
| Extension02 = *.midi
+
| Extension02 = *.midi
| Extension03 = *.mff
+
| Extension03 = *.mff
| Extension04 = *.smf
+
| Extension04 = *.smf
| Extension05 = *.kar
+
| Extension05 = *.kar
 
}}
 
}}
  
'''''Musical Instrument Digital Interface (MIDI)''''' is a sound format created in the early 1980s by Dave Smith of Sequential Circuits, Inc. in order to make a standard format for storing music definitions. Unlike PCM audio which stores the exact audio, or tracked audio that stores samples, MIDI doesn't store the any sound itself. Instead, MIDI stores the instructions for the audio (kind of like sheet music) which a MIDI device can play back. This allows for much smaller file sizes and consistent, exact timing. However, since all MIDI devices may synthesize sound differently, MIDI music will sound different everywhere it's played.
+
'''''Musical Instrument Digital Interface (MIDI)''''' is a sound format created in the early 1980s by Dave Smith (1950-2022) of Sequential Circuits, Inc. in order to make a standard format for storing music definitions. Unlike PCM audio which stores the exact audio, or tracked audio that stores samples, MIDI doesn't store the any sound itself. Instead, MIDI stores the instructions for the audio (kind of like sheet music) which a MIDI device can play back. This allows for much smaller file sizes and consistent, exact timing. However, since all MIDI devices may synthesize sound differently, MIDI music will sound different everywhere it's played.
  
 
Most MIDI files are type 1, which means that they have a header for track information and allow multiple tracks. Some MIDI files are type 0, which don't support multiple tracks, and take up slightly less space. There is also a rarely seen type 2 MIDI file which is a type 1 MIDI file with several embedded type 0 MIDI tracks.
 
Most MIDI files are type 1, which means that they have a header for track information and allow multiple tracks. Some MIDI files are type 0, which don't support multiple tracks, and take up slightly less space. There is also a rarely seen type 2 MIDI file which is a type 1 MIDI file with several embedded type 0 MIDI tracks.
  
 
Some MIDI files use outdated extensions like MFF (MIDI File Format) or SMF (Standard MIDI File). The KAR extension is used by karaoke software, but is still a plain MIDI file.
 
Some MIDI files use outdated extensions like MFF (MIDI File Format) or SMF (Standard MIDI File). The KAR extension is used by karaoke software, but is still a plain MIDI file.
 
  
 
==Standards==
 
==Standards==
Line 37: Line 36:
 
In addition to the features offered by the various standards, some sound cards offered additional functions, such as the possibilities to reprogram instruments. Of particular importance are the AdLib and SoundBlaster cards and the Gravis UltraSound (abbreviated GUS) cards.
 
In addition to the features offered by the various standards, some sound cards offered additional functions, such as the possibilities to reprogram instruments. Of particular importance are the AdLib and SoundBlaster cards and the Gravis UltraSound (abbreviated GUS) cards.
  
The [[AdLib]] offered FM synthesis with its [[YM3812]] sound chip (better known as OPL2). The OPL2 chip could be reprogrammed by changing the values in its registers to modify the sounds produced.
+
The [[AdLib]] offered FM synthesis with its [[YM3812]] sound chip (better known as OPL2). The OPL2 chip could be reprogrammed by changing the values in its registers to modify the sounds produced. [[Ad Lib|Ad Lib Inc.]] created [[MDI]] derivative format for this purpose.
  
 
The GUS used a system of "instrument patches" containing instrument samples to offer high-quality MIDI playback. However, the limited RAM on-board the card made it impossible to give each General MIDI instrument its own patch simultaneously. To reduce memory use, configuration files (ultramid.ini) were used to remap instrument to similar patches, making it necessary to optimize such configurations for the instruments used in the songs played. But it was possible to use custom patches, either to improve the quality of certain instruments, or make the patches smaller so more of them could be loaded at once, or even provide entirely new custom instruments.
 
The GUS used a system of "instrument patches" containing instrument samples to offer high-quality MIDI playback. However, the limited RAM on-board the card made it impossible to give each General MIDI instrument its own patch simultaneously. To reduce memory use, configuration files (ultramid.ini) were used to remap instrument to similar patches, making it necessary to optimize such configurations for the instruments used in the songs played. But it was possible to use custom patches, either to improve the quality of certain instruments, or make the patches smaller so more of them could be loaded at once, or even provide entirely new custom instruments.
Line 44: Line 43:
  
 
For all these reasons, there exist OPL emulators, GUS emulators, and MT-32 emulators in addition to generic MIDI players.
 
For all these reasons, there exist OPL emulators, GUS emulators, and MT-32 emulators in addition to generic MIDI players.
 
  
 
==Players==
 
==Players==
Line 51: Line 49:
 
* [[AdPlug]] - DOS, foobar2000, UNIX, Winamp, XMMS
 
* [[AdPlug]] - DOS, foobar2000, UNIX, Winamp, XMMS
 
* [[Cakewalk]] - DOS, Windows
 
* [[Cakewalk]] - DOS, Windows
 +
* [[Creative MIDI]] - Windows
 
* [[Cubase]] - Atari ST, Falcon030, Macintosh, Windows 16, Windows 32, Windows 64
 
* [[Cubase]] - Atari ST, Falcon030, Macintosh, Windows 16, Windows 32, Windows 64
 
* [[Digital Performer]] - Macintosh, Windows
 
* [[Digital Performer]] - Macintosh, Windows
 +
* [[Digital Orchestrator Pro]] - Windows 16
 
* [[Digital Sound System]] - DOS
 
* [[Digital Sound System]] - DOS
 +
* [[JukeBox]] - Windows
 
* [[MIDI Decoder]] - foobar2000
 
* [[MIDI Decoder]] - foobar2000
 
* [[MIDI (XMPlay)]] - XMPlay
 
* [[MIDI (XMPlay)]] - XMPlay
Line 65: Line 66:
 
* [[Winamp]] - Android, Macintosh, Windows 32
 
* [[Winamp]] - Android, Macintosh, Windows 32
 
* [[Windows Media Player]] - Windows 32
 
* [[Windows Media Player]] - Windows 32
 
  
 
==Editors==
 
==Editors==
Line 73: Line 73:
 
* [[Cubase]] - Atari ST, Falcon030, Macintosh, Windows 16, Windows 32, Windows 64
 
* [[Cubase]] - Atari ST, Falcon030, Macintosh, Windows 16, Windows 32, Windows 64
 
* [[Digital Performer]] - Macintosh, Windows
 
* [[Digital Performer]] - Macintosh, Windows
* [[Digital Orchestrator Pro]] - Windows
+
* [[Digital Orchestrator Pro]] - Windows 16
* [[Logic]]
+
* [[Logic]] - Macintosh
 
* [[Master Tracks]] - Atari ST, DOS, Macintosh, Windows
 
* [[Master Tracks]] - Atari ST, DOS, Macintosh, Windows
 +
* [[MIDIPLEX]] - Windows 32
 
* [[Musicator]] - DOS, Windows 16, Windows 32
 
* [[Musicator]] - DOS, Windows 16, Windows 32
 
* [[Performer]] - Atari ST, Macintosh
 
* [[Performer]] - Atari ST, Macintosh
 
* [[Sequencer Plus Gold]] - DOS
 
* [[Sequencer Plus Gold]] - DOS
 
* [[Sonar]] - Windows
 
* [[Sonar]] - Windows
 
  
 
==Converters==
 
==Converters==
Line 86: Line 86:
  
 
===MIDI to ?===
 
===MIDI to ?===
* [[Digital Orchestrator Pro]] - Windows - [[ORC]], [[WAV]]
+
* [[Cakewalk]] - DOS, Windows 16, Windows 32 - [[WRK]]
 +
* [[Camoto]] (type-0 .mid only) - Linux, Windows - {{Camoto/FormatList|type=song|dir=write}}
 +
* [[Digital Orchestrator Pro]] - Windows 16 - [[ORC]], [[WAV]]
 
* [[Digital Sound System]] - DOS - [[MP3]], [[WAV]]
 
* [[Digital Sound System]] - DOS - [[MP3]], [[WAV]]
* [[IMF Creator]] - Winbdows 32 - [[IMF]]
+
* [[IMF Creator]] - Windows 32 - [[IMF]]
 
* [[FamiTracker]] - Windows - [[FTM]]
 
* [[FamiTracker]] - Windows - [[FTM]]
 
* [[MIDI to MUS (Accolade)]] - DOS - [[MUS (Accolade)]]
 
* [[MIDI to MUS (Accolade)]] - DOS - [[MUS (Accolade)]]
* [[MIDI to MUS (id Software)]] - DOS - [[MUS]]
+
* [[MIDI to MUS (id Software)]] - DOS - [[MUS (DMX)]]
 +
* [[MIDI to Stream]] - Windows 32 - [[MDS]]
 +
* [[MIDIPLEX]] - Windows 32 - [[RMI]], [[SYX]], [[XMI]]
 
* [[Minecraft Note Block Studio]] - Windows 32 - [[NBS]]
 
* [[Minecraft Note Block Studio]] - Windows 32 - [[NBS]]
* [[Sequencer Plus Gold]] - DOS - [[SNG]]
+
* [[Sequencer Plus Gold]] - DOS - [[SNG (Voyetra)]]
 
* [[Soundbox]] - Windows - [[SCI]]
 
* [[Soundbox]] - Windows - [[SCI]]
 
* [[VLC]] - Android, FreeBSD, Linux, Macintosh, Windows - Many formats.
 
* [[VLC]] - Android, FreeBSD, Linux, Macintosh, Windows - Many formats.
Line 100: Line 104:
 
===? to MIDI===
 
===? to MIDI===
 
* [[Cake to MIDI]] - DOS - [[WRK]]
 
* [[Cake to MIDI]] - DOS - [[WRK]]
 +
* [[Cakewalk]] - DOS, Windows 16, Windows 32 - [[WRK]]
 +
* [[Camoto]] (type-0 .mid only) - Linux, Windows - {{Camoto/FormatList|type=song|dir=read}}
 
* [[CMF to MIDI]] - DOS - [[CMF]]
 
* [[CMF to MIDI]] - DOS - [[CMF]]
* [[DRO to MIDI]] - Linux, Windows - [[DRO]]
+
* [[DRO to MIDI]] - Linux, Windows - [[DRO]], [[IMF]], [[RAW (Rdos)]]
* [[MUS to MIDI Converter]] - DOS - [[MUS]]
+
* [[MIDI Decoder]] - foobar2000 - [[EMIDI]], [[LDS]], [[MDS]], [[MIDS]], [[RMI]], [[XMI]]
 +
* [[Midi Maker]] (type-1 .mid only) - Windows 32 - [[MIA]]
 +
* [[MIDIPLEX]] - Windows 32 - [[CMF]], [[HERAD]], [[MDI]], [[MDS]], [[MUS (AdLib)]], [[ORC]], [[RMI]], [[ROL]], [[SOP]], [[SYX]], [[XMI]]
 
* [[Minecraft Note Block Studio]] - Windows 32 - [[NBS]]
 
* [[Minecraft Note Block Studio]] - Windows 32 - [[NBS]]
 +
* [[MUS to MIDI Converter]] - DOS - [[MUS (DMX)]]
 
* [[NSF to MIDI]] - Windows 32 - [[NSF]]
 
* [[NSF to MIDI]] - Windows 32 - [[NSF]]
* [[Quick MUS to MIDI Converter]] - DOS - [[MUS]]
+
* [[Quick MUS to MIDI Converter]] - DOS - [[MUS (DMX)]]
* [[Sequencer Plus Gold]] - DOS - [[SNG]]
+
* [[Sequencer Plus Gold]] - DOS - [[SNG (Voyetra)]]
 
* [[SID to MIDI]] - Windows - [[SID]]
 
* [[SID to MIDI]] - Windows - [[SID]]
 
* [[SND to MIDI]] - Windows - [[SCI]]
 
* [[SND to MIDI]] - Windows - [[SCI]]
 +
* [[Sound Club]] - DOS - [[CMF]], [[MOD]], [[ROL]], [[SN]]
 
* [[XMI to MIDI]] - DOS - [[XMI]]
 
* [[XMI to MIDI]] - DOS - [[XMI]]
  
Line 114: Line 124:
 
<div style="float:right;">([[:Category: Games That Use MIDI|Category]])</div>
 
<div style="float:right;">([[:Category: Games That Use MIDI|Category]])</div>
  
 +
These are 20 of the more popular games that use MIDI, for the complete list, view the category.
 +
 +
{| class="wikitable" |
 +
! Released
 +
! Title
 +
! Sample
 +
|-
 +
| 1990-09-??
 +
| [[Prince of Persia (DOS)]]
 +
| {{Song-Box|101 - Prince of Persia - DOS - Prologue A.ogg}}
 +
|-
 +
| 1991-09-19
 +
| [[Wordtris (DOS)]]
 +
| {{Song-Box|201 - Wordtris - DOS - Title Screen.ogg}}
 +
|-
 +
| 1991-10-??
 +
| [[Windows 3 (DOS)]]
 +
| {{Song-Box|101 - Windows 3 - DOS - Trip Through the Grand Canyon.ogg}}
 +
|-
 +
| 1991-??-??
 +
| [[Baby Jo In Going Home (DOS)]]
 +
| {{Song-Box|01 - Baby Jo In Going Home - DOS - Main Menu.ogg}}
 +
|-
 +
| 1991-??-??
 +
| [[SimAnt (DOS)]]
 +
|
 +
|-
 +
| 1991-??-??
 +
| [[Super Tetris (DOS)]]
 +
| {{Song-Box|101 - Super Tetris - DOS - Music 1.ogg}}
 +
|-
 +
| 1991-??-??
 +
| [[Where In the World Is Carmen Sandiego?: 1991 Edition (DOS)]]
 +
|
 +
|-
 +
| 1992-??-??
 +
| [[A-Train (DOS)]]
 +
| {{Song-Box|101 - A-Train - DOS - Title.ogg}}
 +
|-
 +
| 1992-??-??
 +
| [[Chip's Challenge (W16)]]
 +
| {{Song-Box|101 - Chip's Challenge - W16 - Chip 1 (MIDI).ogg}}
 +
|-
 +
| 1992-??-??
 +
| [[SimCity (W16)]]
 +
| {{Song-Box|101 - SimCity - W16 - SimCity Theme.ogg}}
 +
|-
 +
| 1992-??-??
 +
| [[SimLife (W16)]]
 +
| {{Song-Box|01 - SimLife - W16 - Title.ogg}}
 +
|-
 +
| 1994-02-19
 +
| [[Pirates! Gold (W16)]]
 +
| {{Song-Box|01 - Pirates! Gold - W16 - Title.ogg}}
 +
|-
 +
| 1994-10-17
 +
| [[Wacky Wheels (DOS)]]
 +
| {{Song-Box|02 - Wacky Wheels - DOS - Main Menu.ogg}}
 +
|-
 +
| 1994-12-21
 +
| [[Rise of the Triad: Dark War (DOS)]]
 +
| {{Song-Box|11 - Rise of the Triad - DOS - Goin' Down the Fast Way.ogg}}
 +
|-
 +
| 1995-09-30
 +
| [[Monopoly (W16)]]
 +
|
 +
|-
 +
| 1996-??-??
 +
| [[The Elder Scrolls II: Daggerfall (DOS)]]
 +
|
 +
|-
 +
| 1996-??-??
 +
| [[SimFarm (W16)]]
 +
| {{Song-Box|01 - SIM Farm - W16 - A Main.ogg}}
 +
|-
 +
| 1997-05-31
 +
| [[Blood (DOS)]]
 +
| {{Song-Box|201 - Blood - DOS - Unholy Voices.ogg}}
 +
|-
 +
| 1997-10-15
 +
| [[Age of Empires (W32)]]
 +
| {{Song-Box|201 - Age of Empires - W32 - Open.ogg}}
 +
|-
 +
| 1999-09-30
 +
| [[Age of Empires II: The Age of Kings (W32)]]
 +
| {{Song-Box|201 - Age of Empires 2 - W32 - Quest for Butter.ogg}}
 +
|}
 +
 +
==How to Obtain==
 +
MIDI files usually have to be manually extracted from game files, a process that is different for pretty much every game that uses them.
  
 
==Technical==
 
==Technical==
Line 120: Line 220:
 
All properly formatted MIDI files should end with same three bytes, 0xFF 0x2F 0x00.
 
All properly formatted MIDI files should end with same three bytes, 0xFF 0x2F 0x00.
  
 +
MIDI can have a minimum tempo of 16 BPM and a maximum of 500 BPM.
  
 
==Links==
 
==Links==
* [http://en.wikipedia.org/wiki/MIDI en.wikipedia.org/wiki/MIDI] - Wikipedia.
+
* [https://en.wikipedia.org/wiki/MIDI en.wikipedia.org/wiki/MIDI] - Wikipedia.
* [http://www.sonicspot.com/guide/midifiles.html sonicspot.com/guide/midifiles.html] - The Sonic Spot - MIDI technical specifications.
+
* [http://web.archive.org/web/20050607082531/http://www.sonicspot.com/guide/midifiles.html web.archive.org/web/20050607082531/http://www.sonicspot.com/guide/midifiles.html] - The Sonic Spot - MIDI technical specifications.
* [http://www.shikadi.net/moddingwiki/MID_Format shikadi.net/moddingwiki/MID_Format] - Shikadi - More tech specs.
+
* [https://moddingwiki.shikadi.net/wiki/MID_Format moddingwiki.shikadi.net/wiki/MID_Format] - Shikadi - More tech specs.
  
  
 
[[Category: MIDI]]
 
[[Category: MIDI]]

Latest revision as of 13:13, 1 April 2024

Musical Instrument Digital Interface
MIDI.png
Developer: Dave Smith
Header: SMF
Content: Notational
Instruments: Optional
Target Output
Output - Digital Audio - No.png Output - MIDI.png Output - FM Synthesis.png Output - PSG.png
Released: 1983-??-??
First Game: ?
Extensions
  • *.mid
  • *.midi
  • *.mff
  • *.smf
  • *.kar

Musical Instrument Digital Interface (MIDI) is a sound format created in the early 1980s by Dave Smith (1950-2022) of Sequential Circuits, Inc. in order to make a standard format for storing music definitions. Unlike PCM audio which stores the exact audio, or tracked audio that stores samples, MIDI doesn't store the any sound itself. Instead, MIDI stores the instructions for the audio (kind of like sheet music) which a MIDI device can play back. This allows for much smaller file sizes and consistent, exact timing. However, since all MIDI devices may synthesize sound differently, MIDI music will sound different everywhere it's played.

Most MIDI files are type 1, which means that they have a header for track information and allow multiple tracks. Some MIDI files are type 0, which don't support multiple tracks, and take up slightly less space. There is also a rarely seen type 2 MIDI file which is a type 1 MIDI file with several embedded type 0 MIDI tracks.

Some MIDI files use outdated extensions like MFF (MIDI File Format) or SMF (Standard MIDI File). The KAR extension is used by karaoke software, but is still a plain MIDI file.

Standards

MIDI itself is only a standard for a communication format between computers and other digital instruments. The mapping of MIDI "programs" to specific musical instruments was entirely dependent on the MIDI synthesizer. One of the most popular in computer gaming was the Roland MT-32, which appeared in 1987.

To provide a unified standard and avoid cacophony, the MIDI Manufacturer Association created the General MIDI standard in 1991 (often abbreviated GM). The majority of MIDI files are written for this standard. However, finding the standard quite limited and eager to compete by offering additional features, Roland and Yamaha both started to expand on the GM by developing their own proprietary but backward-compatible standards: the Roland GS and the Yamaha XG. Finally, the MMA released a "second level" to the General MIDI standard, called GM2, which is mostly derived from GS.

An XG, GS or GM2 synthesizer will play a GM MIDI file without problem. Inversely, a GM synthesizer will usually play an XG, GS or GM2 file without much loss beyond a few special effects, although it is possible that they use more simultaneous voices than what the GM standard offers, or undefined instruments. (The XG standard offers up to 1149 different instruments and 128 simultaneous voices; GM is limited to 128 instruments and 24 simultaneous voices.)

However, a MT-32 synthesizer playing a GM song, or a GM synthesizer playing an MT-32 song, will produce fundamentally incorrect playback as the instruments are mapped differently.

In addition to the features offered by the various standards, some sound cards offered additional functions, such as the possibilities to reprogram instruments. Of particular importance are the AdLib and SoundBlaster cards and the Gravis UltraSound (abbreviated GUS) cards.

The AdLib offered FM synthesis with its YM3812 sound chip (better known as OPL2). The OPL2 chip could be reprogrammed by changing the values in its registers to modify the sounds produced. Ad Lib Inc. created MDI derivative format for this purpose.

The GUS used a system of "instrument patches" containing instrument samples to offer high-quality MIDI playback. However, the limited RAM on-board the card made it impossible to give each General MIDI instrument its own patch simultaneously. To reduce memory use, configuration files (ultramid.ini) were used to remap instrument to similar patches, making it necessary to optimize such configurations for the instruments used in the songs played. But it was possible to use custom patches, either to improve the quality of certain instruments, or make the patches smaller so more of them could be loaded at once, or even provide entirely new custom instruments.

Many games included multiple variants of their MIDI soundtracks, offering for example an MT-32 version, a GM OPL2 version and a GM wave table version.

For all these reasons, there exist OPL emulators, GUS emulators, and MT-32 emulators in addition to generic MIDI players.

Players

(Category)

Editors

(Category)

Converters

(Category)

MIDI to ?

? to MIDI

Games

(Category)

These are 20 of the more popular games that use MIDI, for the complete list, view the category.

Released Title Sample
1990-09-?? Prince of Persia (DOS)
1991-09-19 Wordtris (DOS)
1991-10-?? Windows 3 (DOS)
1991-??-?? Baby Jo In Going Home (DOS)
1991-??-?? SimAnt (DOS)
1991-??-?? Super Tetris (DOS)
1991-??-?? Where In the World Is Carmen Sandiego?: 1991 Edition (DOS)
1992-??-?? A-Train (DOS)
1992-??-?? Chip's Challenge (W16)
1992-??-?? SimCity (W16)
1992-??-?? SimLife (W16)
1994-02-19 Pirates! Gold (W16)
1994-10-17 Wacky Wheels (DOS)
1994-12-21 Rise of the Triad: Dark War (DOS)
1995-09-30 Monopoly (W16)
1996-??-?? The Elder Scrolls II: Daggerfall (DOS)
1996-??-?? SimFarm (W16)
1997-05-31 Blood (DOS)
1997-10-15 Age of Empires (W32)
1999-09-30 Age of Empires II: The Age of Kings (W32)

How to Obtain

MIDI files usually have to be manually extracted from game files, a process that is different for pretty much every game that uses them.

Technical

All MIDI files begin with "MThd" which is the start of the MIDI header. There may also be sub-headers in the MIDI file. Inside each header there will be a "MTrk" which signifies the beginning of a track. Type-0 MIDI files only have 1 track, but type-1 files may contain multiple tracks.

All properly formatted MIDI files should end with same three bytes, 0xFF 0x2F 0x00.

MIDI can have a minimum tempo of 16 BPM and a maximum of 500 BPM.

Links