MIDI

MIDI är en akronym för Musical Instrument Digital Interface.

Vem bestämmer?
right|thumb|300px|MMA's logotype Det är MMA (Midi Manufacturers' Association) som bestämmer alla detaljer om de officiella Midi-standards som finns.

Deras hemsida hittar du HÄR.

Funktion
MIDI är ett sätt för olika elektroniska musikinstrument att kommunicera med varandra. Exempelvis kan det användas för att synka olika sequencers med varandra, så de spelar i samma tempo. MIDI används även för att skicka notinformation. Har man t ex ett mjukvaruinstrument i datorn kan man spela på det med hjälp av ett MIDI-klaviatur; klaviaturet genererar inte ljudet utan skickar endast information till datorn om vilken tangent som trycks ner, när det trycks ner, hur hårt anslaget är, ev aftertouch, när den släpps upp igen, och liknande saker. Mjukvaran i datorn som tar emot informationen genererar sedan ljudet utifrån den. På samma sätt kan man spela på olika ljudmoduler från en midi-klaviatur.

Tekniksnack
Hastigheten i midisystemet är 31.25kbaud - och eftersom det handlar om seriell överföring, så kan det snabbt bli trafikstockning om man kör komplexa arrangemang. 10 bits (digital 1 eller 0) bygger upp ett midi-"ord". Den första biten är en startbit som följs av 8 databitar - och den sista biten är en stopp-bit. Varje midi-ord tar 320 mikrosekunder att sända.

Det första midi-ordet är alltid ett statusord som innehåller information om vilken midikanal som ska ta emot och vilken typ av information som kommer att skickas i nästa "ord". Det vanligaste som kommer att skickas, är "NOTE ON", som består av ett statusord och två dataord (där ord 2 berättar vilken ton som ska spelas och ord 3 berättar vilken velocity tonen ska spelas med) - dvs så kräver varje enskild ton att tre midi-ord skickas, innan ljudkällan kan ge ifrån sig något ljud efter att ha tolkat informationen som skickas.

Just för att det är vanligt förekommande med samma kommandon efter varandra, så tillkom "Running Status" till den ursprungliga standarden. Det innebär att om en viss midikanal skulle ha fått samma status-ord som den fick i den föregående sändningen, så skickar man aldrig statusordet, utan enbart dataorden. På så sätt kan man spara in lite tid, eftersom det bara blir två dataord för varje ton (förutom den första) - under förutsättning att inget annat statusord (t ex sustainpedal, aftertouch, pitchbend, modulation eller annat) skickas mellan tonerna till samma midikanal.

MIDI eller ljud?
MIDI är styrsignaler och inte ljud - något som inte alltid är så självklart för alla att förstå - speciellt om man aldrig har haft med hårdvaru-syntar att göra, utan bara har använt mjukvara... MIDI är till för att berätta för instrumentet vad det ska spela och hur det ska spelas. Sedan kommer ljudet ut på instrumentets audio-utgångar. Detta gäller både hårdvara och virtuella instrument.

Ljudstandard
Midiprotokollet i sig innehåller ingen standard för ljudkällans ljud. Därför tillkom GM (General Midi), som definierar ljudbanken så att om GM används både vid programmeringen och i ljudkällan, så kommer ett piano (kanske inte samma, men åtminstone ett pianoljud) att spelas upp om man har ställt in programmeringen på att spela piano på den valda midikanalen. Roland skapade en utökad variant som de kallade för GS (General Standard), medan Yamaha skapade sin standard, som de kallade för XG. Varken GS eller XG är officiella standards, men bådas utökade funktioner och ljud inkluderades i den officiella standarden General Midi 2 (GM2), som kom 1999. Visst är det härligt med standards...? ;)

Filformat
Det finns 3 olika varianter av SMF (Standard Midi File): Dessa har alltid filändelsen .mid.
 * 0 - Består av ett spår som innehåller alla ingående midikanaler för en låt
 * 1 - Består av separata midispår för en låt
 * 2 - Kan ha flera olika spår, där varje spår innehåller alla midikanaler för en låt - på samma sätt som i format 0 med midikanalerna alltså, men ett spår per låt. Används väldigt sällan.

Det förekommer också andra, mer eller mindre officiella midiformat:
 * .kar - Detta är en karaoke-variant, där en spelare som är kompatibel med det, visar upp texten i displayen medan midi-musiken spelas upp. Dett aär inte en officiellt godkänd standard och det finns inte stöd för den i alla program och uppspelare.
 * .xmf - eXtended Music File; Ett officiellt format som innehåller både SMF och instrumentdata i DLS-format (DownLoadable Sounds - som också är en officiell standard). XMF är inte en vanlig Midifil, utan en binärfil och används främst i midiplayers eller syntar/keyboard.
 * .rmi - Extended RMID. En officiell standard innehållande både SMF och ljuddata, som dock togs bort till förmån för .xmf.
 * .rmi - Jodå - en till... RIFF-RMID; Ett Windowsformat som egentligen är en SMF som har paketerats i ett "skal" som användes för alla Windows multimediafiler. Detta är inte en officiell standard, utan ett Microsoft-påhitt...
 * .xmi - En specialversion av SMF, som används främst till datorspel och som inte är någon officiell standard.

right|thumb|300px|Midi-portar och kabel

MIDI-portar

 * MIDI In, tar emot data
 * MIDI Out, skickar data
 * MIDI Thru, skickar vidare det data som kommer via MIDI In

MIDI Thru (through) är viktigt för att kunna koppla ihop (seriekoppla) flera instrument eller andra anordningar som tar emot och skickar MIDI. Detta kallas Daisy Chaining. Det förekommer även "Soft Thru" i vissa syntar - och där går midisignalerna in till syntens processor och behandlas, innan de skickas vidare ut på Thru-utgången. En sådan Soft Thru kan ge upphov till en del fördröjningar, så en vanlig Thru är att föredra - eller så finns det Thru-boxar som löser problemet utanför synten i stället.

right|thumb|150px|Schematisk bild på midikontakten left|thumb|150px|Midikabel från Klotz MIDI-kontakterna kallas 5-pin DIN (Deutsche Industrie Norm). Alla MIDI-portar har honkontakt medan alla MIDI-kablar har hankontakter. Även om det finns fem stift i kontakterna, så används bara tre av dem för att skicka eller ta emot MIDI-information. En MIDI-port fungerar bara på ett håll, så det krävs två kablar för att både kunna skicka och ta emot midi till/från en midienhet. Om man däremot använder en synt enbart som klaviatur för att spela på virtuella instrument i datorn, så behöver man förstås bara en kabel.

När man ska koppla ett MIDI-instrument till dator/ljudkort skall man alltså kopppla kabeln från instrumentets MIDI Out till ljudkortets MIDI in. Om man vill kunna spela in något med MIDI-instrumentets eget ljud på datorn, så måste en kabel kopplas från en MIDI-utgång på datorn till en MIDI-ingång på instrumentet. För att göra saken mer komplicerad, måste instrumentets audio-utgångar (line-out) dessutom kopplas till line-ingångar på ljudkortet.

Åter igen, för säkerhets skull: MIDI-anslutningen flyttar inget ljud, endast styrsignaler.

Kopplingsexempel
right|thumb|150px|Exempel 1: Koppla ensam synt till ljudkortet Exempel 1 visar hur man kopplar en ensam synt till datorns ljudkort.
 * Midi Out från synten till Midi In på ljudkortet, för att kunna spela in Midi-signaler.
 * Midi Out från ljudkortet till midi In på synten, för att få synten att spela upp enligt informationen den får över Midi. Denna koppling behövs inte om man enbart använder virtuella instrument i datorn och alltså inte använder den externa syntens eget ljud.
 * Audio Out från synten (i de flesta fall två kanaler, höger och vänster) till lineingångar på ljudkortet, för att kunna spela in syntens eget ljud (som bekant så innehåller ju Midikablarna enbart kontrollsignaler och inget ljud, så därför är audio-kablarna också nödvändiga). För att spela in syntens eget ljud, så måste man därför också spela in det på ett stereo audiospår i sitt DAW-program. Denna koppling behövs förstås inte heller om man inte vill använda syntens eget ljud.

right|thumb|300px|Exempel 2: Koppla två syntar till ljudkortet Exempel 2 visar hur man kopplar två externa syntar till datorns ljudkort,
 * Midi Out från den första synten till Midi In på ljudkortet, för at kunna spela in Midi-signaler.
 * Midi Out från ljudkortet till Midi In på den första synten, för att få synten att spela upp sitt eget ljud enligt Midi-signalerna.
 * Midi Thru från den första synten till Midi In på den andra synten, för att skicka vidare samma Midi-data som kommer in på Midi In på den första synten - så att Midiinformation även går vidare till den andra synten.
 * Audio Out från de båda syntarna till 4 st separata line-ingångar på ljudkortet, för att kunna spela in båda syntarnas ljud på audiospår.

Eftersom Midi out från den andra synten inte är inkopplad, så kan man förstås inte spela in Midi från den.

right|thumb|300px|Exempel 3: Koppla två syntar till ljudkort som bara har stereo in Exempel 3 visar samma sak som exempel 2, men med skillnaden att ljudkortet bara har stereo in, så att man behöver använda en mixer.
 * Midi Out från första synten till Midi In på ljudkortet, i vanlig ordning.
 * Midi Out från ljudkortet till Midi in på första synten, som tidigare.
 * Midi Thru från första synten till Midi In på den andra - också som tidigare exempel.
 * Audio Out från de båda syntarna kopplas i detta exemplet in på 4 lineingångar på mixern så att man gör en lagom mix med syntarna där. För att behålla den stereobild som finns i syntarna så panorerar man normalt ut kanalerna på mixern helt till vänster respektive höger. I exemplet kommer första syntens audio-utgångar till mixerns kanal 3 och 4 (det blev enklare att rita det så...;)), så då ska alltså kanal 3 panoreras helt till vänster och kanal 4 helt till höger.
 * Out från mixern till lineingångar på ljudkortet, så att man kan spela in mixen av de båda syntarna på ett audio stereospår.

Inte heller i detta exempel går det att spela in Midi från den andra synten, eftersom Midi out inte är inkopplad.

right|thumb|300px|Exempel 4: Koppla två syntar till ljudkortet och gör det möjligt att spela på båda syntarna Exempel 4 visar samma sak som i exempel 2, men med skillnaden att man vill kunna spela in Midi från båda syntarna, om man inte har två Midi-ingångar på ljudkortet
 * Midi Out från synt 1 och synt 2 kopplas till två Midi IN på en Midi Merge-box.
 * Midi Out från Merge-boxen kopplas till ljudkortets Midi In.
 * Allt annat är som sagt precis som i exempel 2

Om man har ett ljudkort eller ett Midiinterface med två Midi-ingångar, så behövs förstås inte mergeboxen i detta exemplet.

right|thumb|300px|Exempel 5: Koppla två syntar till ljudkort som bara har stereo in Exempel 5 handlar om att spela live på en synt eller midiklaviatur, men spela upp ljudet från en annan synt/syntmodul
 * Midi Out från första synten kopplas till Midi In på den andra.
 * Midi In på den första synten används inte, eftersom inget kommer att skickas in i den när man bara använder den som klaviatur.
 * Midi Thru används inte heller på den första synten, eftersom den ju bara innehåller en kopia av det som kommer in på Midi In och därför inte fyller någon funktion i detta fallet.
 * Audio Out från den andra synten kopplas till lineingångar på ljudkortet i datorn om man vill spela in i sitt DAW-program - eller så kopplas de till mixern i ett PA, om det är ett liveframträdande.

Begränsningar och problem
En midiport innehåller 16st midikanaler - och kan alltså leverera information till en multitimbral synt eller syntmodul som kan ta emot upp till 16 kanaler. Om man bara har tillgång till en port, så kan det bli begränsat, men det beror förstås också på hur komplexa arrangemang man gör. Denna begränsning lever kvar även i virtuella instrument för att behålla kompatibiliteten med midiprotokollet.

Hastighet
Hastigheten (se ovan, under Tekniksnack)) kan vålla en del bekymmer.

För att belysa detta så tar jag ett exempel; Två syntar med ackord på 4 toner vardera, 4 syntar med 2 toner vardera, baskagge, virvelkagge, hi-hat och congas. Detta ger totalt 20 toner som ska spelas upp så att de låter "samtidigt". Det tar som sagt 320 mikrosekunder att skicka ett midi-ord - och det innebär att dess 20 toner tar; 20 toner * 3 ord per ton * 320 mikrosekunder = 19200 mikrosekunder - eller 19.2 millisekunder (ms). Det innebär att fördröjningen mellan den första och sista tonen kommer att bli ca 19ms, eftersom den seriella kommunikationen omöjliggör att det skickas på annat sätt än efter vartannat. Tack vare "Running Status", som också nämndes tidigare, kommer denna fördröjning att trimmas till 15-16ms, men det är fortfarande klart hörbart. Man ska dock inte gå till överdrift när man räknar på det, eftersom en skillnad på 19ms motsvarar en avståndsskillnad på ca 6.5m (se latency för närmare förklaring) - ett avstånd som inte märks så farligt mycket om man spelar tillsammans i en replokal. Om det däremot handlar om väldigt kritiska arrangemang, så kan det dock vara all idé att dela upp denna mididata över fler midiportar för att reducera fördröjningen. Ovanstående hastighetsproblem finns med externa midisyntar. När det gäller interna virtuella instrument, så kan datorns sequencerprogram hantera det mycket effektivare och även kompensera för inbyggda problem i midiprotokollet, så de virtuella instrumenten som körs internt i datorn blir faktiskt tajtare än externa midisyntar.

Tänk också på att ett filter som sveper i realtid (väldigt populärt i vissa musikgenre) har 256 steg från lägsta till högsta värde - och om ett dataord används för filtret (jag vet inte säkert om det är ett eller två dataord som används till sådant...), så handlar det alltså om 512 dataord för att gå från lägsta till högsta. 512 dataord tar sina modiga 163,84ms att skicka - och detta ska ske medan man spelar samtidigt. Lägg det till de 20 tonerna i exemplet, så förstår man hur problematiskt det kan vara om man tränger ihop för mycket på en midiport.

Fördröjningar
En gammal missuppfattning är att många "thru"-kopplingar ger fördröjningar.

Det stämmer som har nämnts ovan, när det gäller midiprylar som har en "soft-thru", men med hårdvaru-"thru", handlar fördröjningen om nanosekunder i stigtiden hos kompenenterna som används. Vad som däremot kan hända, är att om man kör för många steg genom "thru"-kopplingar, så förstörs signalen lite grand i varje "thru" - och det kan till slut ge så stora fel att toner försvinner eller blir fel - något som kanske i vissa fall kan misstolkas som en fördröjning. En "thru"-box är då att föredra - eller ett midiinterface med fler separata midiportar.

Dubbla toner
Toner låter dubbelt medan man spelar, men inte när man spelar upp...?!?

En synt har som regel en inställning i sina menyer som heter "Local On/Off". Med den kan man bestämma om syntens klaviatur ska vara ihopkopplad med ljuddelen eller inte. Om den står på Local On, så kommer syntens interna ljud att spelas när man trycker ner en tangent - men samtidigt skickas midiinformationen till syntens Midi Out och alltså vidare exempelvis till en dator. Om ett virtuellt instrument är inställt för att spela när det kommer in mididata från synten, så kommer alltså ljudet från detta virtuella instrument att spelas samtidigt (dock med den latency som är inställd) som den externa syntens ljud - och ljudet blir "dubbelt".

Om man i stället väljer Local Off, så kommer syntens interna ljud inte att spelas upp direkt om man trycker på en tangent, utan då låter enbart datorns virtuella instrument. Om man använder den externa synten som ljudkälla och har synten ställd till Local On, så blir problemet kanske ännu större, eftersom man då kommer att få två identiska toner som spelas upp nästan samtidigt (en direkt och en som går via midi out på synten, vidare in i datorn och tillbaks ut - vidare till syntens midi in) och man får fasfel på köpet - och använder dessutom två röster i synten i stället för en, som skulle ha varit det normala.

"Det låter MIDI"
Jamen - vi kom ju fram till att midi inte låter, utan bara består av kontrollsignaler för att lämna information till en ljudkälla om vad och hur den ska spela. Hur kan man då prata om att "det låter midi"?

Jo - det är ett uttryck som härrör från midis barndom, när det bara fanns ganska mediokra ljudkällor som försökte efterlikna äkta instrument. Eftersom de oftast misslyckade kapitalt med det - och eftersom de som programmerade midi inte hade så mycket erfarenhet, utan de programmerade ofta stelt och odynamiskt - och då dök uttrycket upp ganska snabbt bland de som var lite illvilligt inställda till den fantastiska nyhet som midi ju faktiskt var.

Numera håller ljudbiblioteken betydligt högre klass så idag är det sällan man kan skylla på undermåligt ljud från syntar, syntmoduler och virtuella instrument - men eftersom många fortfarande inte lyckas göra en dynamisk och varierande programmering, så lever uttrycket fortfarande kvar - men numera handlar det oftast om att midiprogrammeringen är stel och odynamisk, om man får en sådan kommentar...