MIDI
MIDI är en akronym för Musical Instrument Digital Interface.
Innehåll
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 - 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):
- 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.
Dessa har alltid filändelsen .mid .
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.
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.
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.
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.
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 en enda ton - 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.
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.
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...