Musical Instrument Digital Interface
Musical Instrument Digital Interface (MIDI) is een digitaal systeem en protocol waarmee elektronische muziekinstrumenten in realtime muzikale informatie kunnen ontvangen en onderling uitwisselen.

Kenmerken 
MIDI werkt met codes waarin versleutelde commando's worden verstuurd, zoals "selecteer nu instrument 72", "laat nu een Fis horen" en "voeg nu vibrato toe". Het is een soort elektronisch 'notenschrift'. Hoe het geluid uiteindelijk klinkt, hangt af van de gebruikte synthesizer of geluidskaart. De muziekkaart van een laptop produceert doorgaans een minder fraai geluid dan een professionele synthesizer. 

Veel elektronische muziekinstrumenten bestaan uit een gebruikersinterface, bijvoorbeeld een keyboard-toetsenbord en een synthesizer. MIDI OUT maakt het mogelijk om de commando's van een toetsenbord naar een andere synthesizer of ander MIDI-apparaat te leiden, die deze ontvangt op MIDI IN. De synthesizer van eerstgenoemd instrument en het toetsenbord van het tweede instrument worden in dit voorbeeld niet gebruikt.

MIDI-commando's kunnen ook worden opgeslagen in bestanden. In de zogenaamde standaard MIDI-bestanden (met de extensie .MID) wordt tussen de commando's vastgelegd, hoelang er gewacht moet worden voordat het volgende commando moet worden gegeven. MIDI-bestanden kunnen handmatig worden aangemaakt met speciale sequencerprogrammatuur, maar ook door de MIDI signalen van een MIDI-muziekinstrument dat door een muzikant wordt bespeeld, op te nemen. MIDI-bestanden kunnen worden afgespeeld op of via synthesizers; ook de meeste computers hebben tegenwoordig MIDI-ondersteuning. Een MIDI-geluidsbron heeft doorgaans 'banken' waarin voorgebakken geluiden zijn opgeslagen, die via MIDI-commando's kunnen worden afgespeeld. Ook zijn er programma's die via MIDI gesampelde geluiden kunnen afspelen, die bijvoorbeeld op cd, dvd of harde schijf zijn opgeslagen.

Op internet zijn heel veel MIDI-bestanden te vinden. Omdat MIDI-bestanden uit commando's bestaan, zijn zij ook betrekkelijk eenvoudig te bewerken. Zo kunnen instrumenten worden toegevoegd of verwijderd en kan het tempo worden gewijzigd zonder dat de toonhoogte verandert, of kan juist de toonhoogte worden veranderd zonder het tempo te wijzigen. Aan de productie van MIDI-bestanden hoeft geen uitvoerend kunstenaar te pas te komen, of men zou degene die het MIDI-bestand invoert, bijvoorbeeld direct van de bladmuziek, als zodanig moeten aanmerken. Sommige MIDI-bestanden zijn bepaald kunstzinnig, terwijl andere heel mechanisch klinken.

Computers, synthesizers, keyboards, sequencers, en veel andere elektronische instrumenten, opnameapparatuur en effectapparaten werken veelal met MIDI. 

Behalve voor muziekinstrumenten kan MIDI ook gebruikt worden voor andere toepassingen, in plaats van tonen kunnen dan bijvoorbeeld lampen aan- en uitgezet worden.

De MIDI-standaard definieert ook de vorm van de stekkertjes en de bijbehorende stopcontacten (DIN-5). Maar het is natuurlijk ook mogelijk om MIDI-signalen via andere hardware door te geven, mits zender en ontvanger dezelfde hardware ondersteunen. Er valt te denken aan mLAN-, USB- en IEEE(Firewire)-aansluitingen.

Geschiedenis 
Het MIDI-protocol is in 1982 en 1983 ontwikkeld door een groep van Amerikaanse en Japanse synthesizerfabrikanten, die de wildgroei aan verbindingsmethoden wilden beteugelen. Men kwam erachter dat synthesizers onderling niet met elkaar konden communiceren. Door samenwerking met de fabrikanten Sequential Circuits, Roland, Yamaha, Korg en Kawai werd de MIDI-standaard opgesteld. Met name Dave Smith wordt genoemd als initiatiefnemer en voor zijn inzet wordt hij ook wel beschouwd als de 'vader van MIDI'. Hij wilde de techniek vrijgeven zonder licentiekosten om hiermee de implementatie door zoveel mogelijk fabrikanten te bevorderen.

In 1983 werd tijdens de NAMM Show de werking van MIDI voor het eerst in de praktijk gedemonstreerd toen een Sequential Circuits Prophet-600 werd verbonden met een Roland Jupiter-6. Sindsdien wordt praktisch elke synthesizer geleverd met een MIDI-aansluiting. Ook al is het protocol inmiddels meer dan 30 jaar oud, het geldt nog steeds als de universele standaard om muziekinstrumenten op elkaar aan te sluiten. 

De opkomst van MIDI heeft gezorgd voor het einde van het fenomeen van de muur van synthesizer-klavieren zoals dat in de jaren 1970 en 1980 in de popmuziek vaak te zien was (Rick Wakeman, Keith Emerson). MIDI maakte het mogelijk meerdere synthesizers, die ergens in een kast stonden, te besturen vanaf een enkel keyboard. Zo'n synthesizer zonder klavier wordt een soundmodule of rack synth genoemd. Via één enkele MIDI-poort kunnen tot 16 verschillende apparaten aangestuurd worden, of tot 16 verschillende kanalen in een multitimbraal instrument.

Vandaag de dag wordt MIDI het meest gebruikt in studio's in combinatie met een sequencer, die vaak het hart van de studio is. In dit geval neemt MIDI de taak van de instrumentalist over. Het grote voordeel hiervan is, dat muzikale informatie snel en flexibel bewerkt kan worden.

MIDI 2.0 
MIDI 2.0 werd op 17 januari 2020 tijdens het NAMM-congres in de Verenigde Staten onthuld door vertegenwoordigers van onder meer Yamaha, Microsoft en Google.

MIDI 2.0 is al sinds 2005 in ontwikkeling en wordt overzien door twee grote organisaties (MMA en AMEI) in Europa, Noord-Amerika en Japan. MIDI 2.0 is de eerste grote verandering voor het protocol sinds 1982, en is naast het aanbieden van extra functionaliteit ook achterwaarts compatibel met MIDI 1.0.

Door middel van het uitwisselen van zogeheten "property exchanges" kunnen apparaten bepalen welke protocolversie gebruikt kan worden. Als nieuwe apparaten MIDI 2.0 ondersteunen, dan zijn deze apparaten in staat om via een "profile configuration" informatie uit te wisselen. Dit kan bijvoorbeeld een productnaam, configuratie of de instellingen van alle knoppen en schuiven zijn.

Het principe is dat elk MIDI 2.0-apparaat een eigen profiel heeft, en deze informatie kan uitwisselen. Deze "profile configurations" werken zowel met hardware-apparatuur als met software.

MIDI 2.0 biedt met 32-bits tegenover 7-bits een hogere resolutie dan zijn voorganger, wat betekent dat het systeem nauwkeuriger werkt en meer functies kan ondersteunen. Waar bij MIDI 1.0 de waarden tussen 0 en 127 liggen, is dit vergroot naar 65.535. Ten slotte is het aantal kanalen verhoogd van 16 naar 256 (16 groepen van 16 MIDI-kanalen).

Protocol 
Om MIDI-communicatie te kunnen bewerkstelligen moet ieder apparaat, zowel fysiek als communicatief, voldoen aan het MIDI-protocol.

Aansluitingen en kabels 

Een apparaat kan over een of meer MIDI-connectoren beschikken. Een connector is altijd een mannelijke 180° 5-pin DIN-connector. De pinnen 4 en 5 worden gebruikt, eventueel kan een afscherming op pin 2 aangesloten zijn.

Er bestaan drie verschillende connectoren:
 Een MIDI IN, via deze aansluiting ontvangt een apparaat MIDI-boodschappen die door het apparaat verwerkt worden.
 Een MIDI OUT, boodschappen die een apparaat zelf genereert (bijvoorbeeld door middel van een klavier) worden via deze aansluiting verzonden.
 Een MIDI THRU, alle boodschappen die via de MIDI IN binnen komen worden direct en onveranderd weer via de MIDI THRU verzonden. Deze wordt gebruikt om verschillende apparaten in serie aan één bron aan te sluiten, soms ook wel daisy chaining genoemd.

Een MIDI IN dient altijd verbonden te worden met de MIDI OUT of MIDI THRU van een ander apparaat. Dit gebeurt door middel van een MIDI-kabel. Deze kabel bevat aan beide uiteinden een mannelijke 180° 5-pin DIN-connector en mag niet langer zijn dan 15 meter.
Er vindt seriële communicatie plaats, die voor iedere aansluiting eenzijdig (simplex) verloopt. De OUT verstuurt stroompulsjes die in de IN via een optocoupler ingelezen worden om storing door aardlussen te voorkomen. De gebruikte bandbreedte is 31,25 kbit/s, wat voor de meeste toepassingen afdoende is, maar wat bij "volle" multitimbrale orkestraties tot kleine, maar storende vertragingen leidt.

Communicatie 
Over een MIDI-verbinding wordt geen geluid verstuurd, noch digitaal noch analoog, maar alleen de besturingsboodschappen, die toonhoogte, volume en dergelijke aangeven. In feite komt MIDI overeen met een partituur of een draaiorgelboek. 

MIDI voorziet in 16 onafhankelijke kanalen per verbinding, alsof er van de MIDI OUT van het ene apparaat 16 draden parallel gekoppeld zijn aan de MIDI IN van een ander apparaat. Van ieder apparaat kan worden ingesteld naar welk kanaal het moet 'luisteren'; informatie op andere kanalen wordt genegeerd. Multitimbrale apparaten kunnen echter boodschappen van meerdere of alle kanalen tegelijkertijd onafhankelijk verwerken. In een MIDI-boodschap kan bijvoorbeeld staan: zet op kanaal 7 noot c3 (c in het 3e octaaf) aan op volume 110. Of selecteer nu op kanaal 4 klank nummer 37.

Boodschappen 
In het MIDI-protocol komen de volgende boodschappen voor:
Kanaalspecifieke boodschappen hebben invloed op een van de 16 kanalen. De eerste twee parameters van zulke boodschappen beschrijven om welke soort boodschap het gaat en op welk kanaal deze boodschap invloed moet hebben. Deze twee parameters zijn samengevoegd tot één byte. De betekenis van de overige parameters verschillen per soort. Deze parameters zijn 7-bits, wat betekent dat ze een bereik van 0 tot 127 hebben. Voor sommige doeleinden kan dit bereik te klein (of te grof) zijn. De oplossing hiervoor is, zoals dat bij Pitch Bend is toegepast, om twee bytes te combineren voor één parameter. De bytes worden dan respectievelijk MSB (Most Significant Byte) en LSB (least significant byte) genoemd. Het MIDI-protocol kent de volgende kanaalspecifieke boodschappen:
Note-on triggert een toon. De parameters van een note-on zijn toonhoogte en aanslagsnelheid (velocity).
Note-off stopt een reeds klinkende toon. De parameters van een note-off zijn toonhoogte en een zogenoemde release-velocity, die nauwelijks wordt ondersteund. Een note-off moet altijd voorafgegaan worden door een corresponderende note-on. Overigens wordt een note-on met een velocity van 0 algemeen geaccepteerd als een note-off.
Control change verandert een bepaalde eigenschap van de klank, zoals volume, stereopositie (panning), hoeveelheid galm, vibrato, etc. De eerste parameter is het zogeheten controllernummer en bepaalt om welke eigenschap het gaat. De tweede bepaalt de hoeveelheid van die eigenschap. Om een expressie als volume- en helderheidsverschillen binnen een toon na te bootsen, zijn control changes essentieel. Een control change wordt ook wel controller genoemd.
Program change kiest een bepaalde klank. Er is slechts één parameter: het nummer van de te kiezen klank, dat tussen 0 en 127 ligt.
Pitch bend 'buigt' de toonhoogte van een toon geleidelijk omhoog of omlaag. Omdat 127 stapjes hiervoor te grof zijn bestaat deze boodschap uit twee parameters die samengevoegd zijn tot één parameter met een 14-bits resolutie die 16.384 verschillende waardes kan aannemen. Pitch bend wordt onder andere gebruikt om glijdende tonen (glissando) na te bootsen, die een trombone of een viool kunnen produceren.
Aftertouch. Voor toetsenisten is aftertouch een hulpmiddel om meer expressie te genereren. Dit wordt niet op alle synthesizers en modules ondersteund. Door op een ondersteunende synthesizer een reeds aangeslagen toets harder in te drukken, worden aftertouch-boodschappen verstuurd. Er is slechts één parameter: de hoeveelheid aftertouch. Meestal beïnvloedt aftertouch het volume, klankkleur of vibrato van de klank (zie ook Aanslaggevoeligheid). 
Polyaftertouch. Identiek aftertouch, echter met als verschil dat polyaftertouch onafhankelijk per toon werkt. Er zijn twee parameters: de toon waarop aftertouch wordt toegepast en de hoeveelheid aftertouch.
Globale boodschappen hebben een betekenis van algemener aard.
Een System Exclusive-message verandert een specifieke parameter op een specifieke module of wordt gebruikt voor speciale functies. Zie verder ook hieronder.
Een MIDI-verbinding wordt ook gebruikt om te synchroniseren. Dit om te voorkomen dat twee apparaten met een sequencer of andere tempoafhankelijke elementen aan boord muzikaal uit de pas lopen. Zo kan synchronisatie tussen een sequencer en een drumcomputer gerealiseerd worden.

Bank change 
De meeste apparaten hebben meer dan 128 klanken aan boord. Het bereik van een Program Change is dus niet altijd voldoende. Dit bereik kan echter aanzienlijk worden vergroot door het gebruik van banken. Een bank is een verzameling van maximaal 128 verschillende klanken. MIDI verleent ruimte voor 16.384 banken. Met behulp van Control Change met controllernummer 0 (MSB – most significant byte) en 32 (LSB – least significant byte) kan een bank worden gekozen. De tweede parameter bepaalt dan om welke bank het gaat. Het apparaat, dat de bankchange ontvangt, wacht nu op een Program Change. Zodra ook die is verstuurd, schakelt het ontvangende apparaat over naar de gevraagde klank, in de gevraagde bank.

MIDI-bestanden 
Een MIDI-bestand (computerbestand met .MID-extensie) bevat een reeks MIDI-boodschappen. Tussen iedere boodschap zit een tijdsinterval. Dit maakt het mogelijk om melodieën en zelfs complete muziekstukken op te slaan als een bestand. Een MIDI-bestand is veel compacter dan digitale geluidsbestanden van dezelfde duur, zoals bestanden in het .WAV- of zelfs het .MP3-formaat, omdat dit bestand niet het geluid zelf bevat maar alleen instructies om geluid te produceren. MIDI-bestanden lossen voor een groot deel het probleem op, dat twee verschillende softwaresequencers geen bestanden konden uitwisselen.

Het nadeel van MIDI-bestanden is dat de geluidskwaliteit afhankelijk is van de kwaliteit van de gebruikte synthesizer of pc-muziekkaart. Vooral klassieke muziek kan via MIDI synthetisch klinken. Dit is ook afhankelijk van de hoeveelheid controllers die een MIDI-bestand bevat. Hierdoor krijgen veel mensen de indruk dat MIDI slecht klinkt, terwijl de klankkwaliteit niet door MIDI wordt bepaald. In feite is een MIDI-bestand een digitale variant van een draaiorgelboek. Het grote voordeel van MIDI is echter de flexibiliteit. MIDI-bestanden kunnen met speciale editors en sequencers worden bewerkt. Bij het afspelen kan heel eenvoudig het tempo of de toonhoogte worden veranderd, of een instrument worden weggelaten. Bovendien kunnen MIDI-bestanden door middel van speciale software eenvoudig in partituren worden omgezet.

Het internet is rijk aan MIDI-bestanden. Doorgaans zijn deze gemaakt volgens de General MIDI-standaard (zie onder).

Standaardisaties 
Zoals gezegd schrijft MIDI alleen de syntaxis van de communicatie voor. In principe is het aan iedere fabrikant van synthesizers en modules vrij hoe de klanken genummerd worden (bereikbaar via program change). In studio's vormt dit niet echt een probleem, maar bij de uitwisseling van MIDI-bestanden wel. Zo is er een MIDI-boodschap om instrument 72 te selecteren, maar wat voor geluid daarmee correspondeert laat de oorspronkelijke standaard open. Het resultaat was dat een MIDI-bestand dan alleen voor specifieke keyboards en modules geschikt was. Dezelfde MIDI-bestand resulteert in verkeerde geluiden op een andere module.

Om dit euvel te verhelpen is General MIDI ontwikkeld. Deze standaard bevat onder meer een vaste indeling van de klanken, waar bijvoorbeeld instrument 72 als een klarinet moet klinken.

Verder hanteert iedere fabrikant enkele vaste toewijzingen van controllers. Control change nummer 7 staat bijvoorbeeld voor het volume en nummer 10 voor de stereopositie (panning).

System Exclusive 
Volledige compatibiliteit is echter nog steeds niet gewaarborgd. Daar zijn verschillende redenen voor. In de eerste plaats wordt MIDI doorgaans gebruikt om synthesizers aan te sturen, en iedere synthesizer heeft zijn eigen functionaliteit met talloze filters en opties voor bijvoorbeeld de aanslag en het wegsterven van tonen. De MIDI-standaard voorziet daarin met System Exclusive-boodschappen, die een fabrikantcodeveld bevatten en die door fabrikanten naar eigen goeddunken kunnen worden ingevuld. Worden zulke boodschappen naar een synthesizer van een ander merk verstuurd, dan worden deze genegeerd. Het resultaat kan al dan niet aanvaardbaar zijn.

Extensies 
Door de jaren hebben verbeteringen aan de standaard geleid tot diverse verfijningen. Hiermee is ook het aantal toepassingen gegroeid dan voor waar MIDI oorspronkelijk voor was bedoeld.

GS, XG en GM2 
Er werd al snel duidelijk dat de keuze uit 128 instrumenten beperkt was. Roland kwam zodoende met General Standard, of GS, waarbij extra klanken, drumkits en effecten werden toegevoegd. Via een 'bank select'-instructie zijn deze extra mogelijkheden toegankelijk.

Yamaha volgde in 1994 met de Extended General MIDI-standaard, of XG, waarbij vergelijkbare uitbreidingen zijn toegevoegd. Zowel de GS- als XG-standaard bieden achterwaartse compatibiliteit, maar zijn niet uitwisselbaar met elkaar. De extensies zijn niet breed geïmplementeerd geweest door andere fabrikanten, maar wordt wel ondersteund in diverse software.

De GM2-standaard kwam uit in 1999 en biedt eveneens achterwaartse compatibiliteit met GM, maar verhoogt de polyfonie naar 32 stemmen, en voegt meerdere controllers en instructies toe aan de standaard.

Stemming 
De meeste synthesizers maken gebruik van gelijkzwevende stemming. De MIDI-stemming-standaard (MTS) werd goedgekeurd in 1992 en voegt alternatieve stemmingen en microtonale stemming toe. Producenten zijn niet verplicht deze standaard te ondersteunen. Gedeeltelijke ondersteuning wordt ook toegestaan.

Tijdcode 
Een sequencer kan een MIDI-systeem aansturen via de interne klok, maar wanneer het systeem meerdere sequencers bevat, moeten deze worden gesynchroniseerd met een gedeelde klok. MIDI tijdcode (MTC) implementeert SysEx-instructies die specifiek zijn ontworpen voor timing doeleinden en is uitwisselbaar met de SMPTE tijdcodestandaard. Deze SMPTE tijdcode is gebaseerd op beelden per seconde en onafhankelijk van tempo. MTC bevat informatie over de positie en kan zichzelf bijsturen als er synchronisatieproblemen optreden.

Toepassingen 
Het meest toegepaste gebruik van MIDI is dat de computer via een MIDI-interface boodschappen naar een of meer synthesizers of modules stuurt. Een MIDI-interface is een apparaat, dat aan de computer gekoppeld wordt om zo de computer van enkele MIDI IN- en OUT-poorten te voorzien.

Maar er hoeft geen pc aan MIDI te pas te komen. Zo kan MIDI ook worden gebruikt om de gebruikers"interface" (een MIDI-controller), waar een muzikant mee te maken heeft, te koppelen met een afzonderlijke module die van de MIDI boodschappen geluid maakt zoals een mobiele telefoon. Zo zijn er niet alleen MIDI-klaviers, maar ook MIDI-gitaren en MIDI-saxofoons.

Het is mogelijk bladmuziek direct in een MIDI-bestand om te zetten, door de noten in te voeren of de partituur in te scannen. Doorgaans bieden zulke bewerkingsprogramma's de mogelijkheid om MIDI-bestanden af te drukken in notenschrift. 

Het omzetten van digitale geluidsbestanden, bijvoorbeeld de muziek, die op een cd staat, in MIDI-formaat is in theorie wel mogelijk (met spectrumanalyse) maar zeer complex omdat dit een programma vergt dat instrumenten kan herkennen. 
MIDI-bestanden zijn wel zeer geschikt om het werk van een "levende" pianist vast te leggen. Met MIDI kan eventueel ook een speciale echte piano – met snaren – worden aangestuurd. Zo krijgt men een elektronische pianola. Een voorbeeld hiervan is de Disklavier van Yamaha.

MIDI-programchangecommando's worden ook gebruikt voor het wijzigen van parameters van programmeerbare effectapparatuur en instrumentenversterkers. Ook de lichtshow kan met MIDI aangestuurd worden, hoewel het DMX-512-protocol daar specifieker voor is ontworpen.

De gemiddelde pc-gebruiker heeft geen MIDI-interface nodig om MIDI te kunnen gebruiken. MIDI-bestanden die gedownload zijn van internet, kunnen met bijvoorbeeld de QuickTime Player of Windows Media Player worden afgespeeld via de interne muziekkaart, die inmiddels op de meeste computers standaard aanwezig is. In de regel voldoen zulke kaarten aan General MIDI.

Beperkingen 
Door de snelheid van 31,25 kbit/s duurt het versturen van een enkele MIDI-boodschap van drie bytes ongeveer 1 milliseconde. Hierdoor kunnen noten nooit absoluut gelijktijdig aan- en uitgezet worden. Meestal is deze minieme vertraging niet hoorbaar, maar als een "volle" multitimbrale orkestratie over een enkele MIDI-kabel verstuurd wordt kunnen ze storend merkbaar worden. De noten komen dan net niet meer op het goede moment, zodat de ritmesectie bijvoorbeeld net niet strak meer op de tel speelt.
Ook wanneer er na een note-oncommando door een technisch defect (bijvoorbeeld een slecht functionerende MIDI-kabel) een note-offcommando ontbreekt, kan deze toon blijven doorklinken tot de synthesizer manueel gereset wordt, wat natuurlijk zeer storend is tijdens een live optreden.

Hardwaretransport 
Als aanvulling op de oorspronkelijke 5-pin DIN-stekker zijn er ook alternatieve connectoren in gebruik genomen, waarbij dezelfde MIDI-gegevens worden getransporteerd. Dit zijn USB, IEEE 1394 (ook wel FireWire) en Ethernet.

MIDI via USB werd populair toen pc-poorten verdwenen uit computers. Veel besturingssystemen zoals Linux, Windows en Mac OS ondersteunen het MIDI-protocol via toegevoegde stuurprogramma's.

In 1999 introduceerde Yamaha het mLAN-protocol. Het werd ontworpen als een lokaal netwerk voor muziekinstrumenten waarbij FireWire werd gebruikt als transportlaag. mLAN was ontworpen voor meerdere MIDI-kanalen samen met meerkanaals digitale audio, bestandsoverdracht en tijdcode. mLAN werd gebruikt in een aantal producten van Yamaha, zoals mixers en de Motif-synthesizer, maar vanaf 2007 kwamen er geen nieuwe mLAN producten op de markt.

Draadloze MIDI transmissie was al verkrijgbaar in de jaren 80 en is een systeem waarbij via een zender en ontvanger MIDI-gegevens kunnen worden overgedragen.

Sommige apparaten gebruiken een standaard 3,5mm klink voor de overdracht van MIDI-gegevens, zoals de Korg Electribe 2 en de Arturia Beatstep Pro.

Externe link 
  Uitgebreide beschrijving van het MIDI-protocol op Harmony Central

Bestandsformaat
Geluidsapparatuur
Muzieksoftware