Interfață digitală pentru instrumente muzicale

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Interfață digitală pentru instrumente muzicale

Porturi Midi și cablu.jpg
Porturi MIDI IN, OUT și THRU în format DIN 41524

Data prezentării 1983
Specificații fizice
Numarul pin 5
Transfer de date
Rata de date 31,25 kbit / s
NoteNamesFrequenciesAndMidiNumbers.svg

Acronimul MIDI ( Musical Instrument Digital Interface ) indică protocolul standard pentru interacțiunea instrumentelor muzicale electronice , chiar și prin intermediul unui computer .

Specificația standard MIDI

Introducere

Termenul MIDI înseamnă două lucruri: un limbaj de computer , care este o serie de specificații care dau viață protocolului și o interfață hardware care permite conexiunea fizică între dispozitive.
MIDI s-a născut în anii optzeci și, deși poate fi înlocuit de protocoale moderne cu performanțe superioare, a rămas aproape neschimbat și este încă intens utilizat în producția de muzică electronică . Motivele stau probabil în rolul unui standard aproape incontestabil pe care și l-a asumat în domeniul muzical și în grija acordată de proiectanți în elaborarea primelor specificații.

Caracteristicile MIDI sunt:

  • calitatea și practicitatea sistemului: integrarea dintre evenimentele audio și evenimentele MIDI s-a dovedit a fi de succes, confirmând importanța acestui standard în crearea muzicii digitale.
  • greutatea redusă a fișierelor (în ordinea Kb ) care permite transferul prin Internet chiar și pe conexiuni cu lățime de bandă redusă.
  • calitatea bazelor.
  • costul redus: cu o investiție minimă sau recurgând la programe freeware , este posibil să faci producții muzicale de bună calitate.

fundal

Protocolul MIDI s-a născut la începutul anilor '80 : prototipul a fost prezentat de Dave Smith și Chet Wood, doi designeri ai circuitului secvențial (SCi), care în 1981 au propus primele specificații MIDI într-un document publicat sub numele de MIDI complet SCI . A fost răspunsul la nevoia de a face diferite instrumente muzicale electronice să comunice între ele, ținând cont de caracteristicile fiecăruia. Mai mulți producători, de exemplu Oberheim și Roland , au oferit deja unele sisteme de interfață pe instrumentele lor. Aceste interfețe, bazate pe algoritmi proprietari, au garantat funcționarea numai pe instrumente de la același producător, în timp ce protocolul Smith și Wood s-a prezentat ca un sistem capabil să garanteze funcționarea pe instrumente de la diferiți producători. Pentru a asigura compatibilitatea între instrumentele de la diferiți producători, fiecare producător a fost invitat să participe la elaborarea primelor specificații MIDI. SCI, Roland, Yamaha și Kawai au fost primii producători de instrumente digitale care au respectat definiția și difuzarea MIDI.

Proiectul terminat a apărut doar doi ani mai târziu: în august 1983, specificațiile MIDI au fost prezentate publicului la spectacolul Asociației Naționale a Comercianților de Muzică (NAMM), desfășurat la Los Angeles . Popularitatea imediată a standardului a creat divizii în cadrul comitetului fondator: producătorii americani s-au alăturat MMA ( MIDI Manufactures Association ), în timp ce producătorii japonezi au fondat JMA ( Japan MIDI Association ). Deși au lucrat pe un teren comun, cele două consorții au dezvoltat caracteristici care nu erau întotdeauna pe deplin compatibile între ele. Aceste diferențe au fost rezolvate în 1985, când IMA ( International MIDI Association ) a publicat versiunea 1.0 a specificației MIDI, stabilind efectiv standardul protocolului, iar producătorii care acceptă protocolul MIDI sunt fuzionați în două asociații: MMA (producători americani și europeni) și JMSC (producători japonezi). Modificările care trebuie aduse standardului MIDI sunt discutate și aprobate de aceste două asociații. Diseminarea specificațiilor MIDI este responsabilitatea IMA (International Midi Association).

tastatura PROPHET 600 de SCi (Sequential Circuits inc.) din San Francisco, primul sintetizator cu interfață MIDI, a fost prezentat în 1983 și construit sub licență în Italia de SIEL de la Acquaviva Picena din provincia Ascoli Piceno din Marche, chiar dacă versiunea finală a protocolului MIDI a fost implementată în anul următor pe Yamaha DX7 .

Porturi și cabluri MIDI.

MIDI Standardul este un schimb de mesaje de protocol conceput pentru a fi utilizat cu instrumente muzicale electronice și interfața sa fizică. O legătură MIDI constă dintr-o conexiune serială cu buclă de curent ( simplex ), care funcționează la o rată de transmisie de 31.250 bps . Bucla este împământată doar pe o parte, iar celălalt capăt este liber (plutitor) pentru a evita interferențele audio și sonore induse de formarea buclei la sol. Două dispozitive conectate cu o interfață MIDI sunt izolate optic unul de celălalt, adică bucla de curent de pe partea transmițătorului conduce LED-ul unui optocuplator pe partea receptorului. Optocuplorul trebuie să fie foarte rapid (un dispozitiv utilizat pe scară largă este Sharp PC900 ), iar timpul de comutare asimetric care caracterizează majoritatea cuplajelor este în orice caz cauza distorsiuni [ explica ] . În cazul conectării în cascadă a mai multor dispozitive MIDI, întârzierea semnalului devine din ce în ce mai relevantă până când generează erori de transmisie.

Standardul MIDI necesită utilizarea unor conectori circulari standard DIN cu 5 pini. Acești conectori au fost foarte populari în Europa pentru tot felul de conexiuni audio până în anii nouăzeci , când au fost înlocuiți cu mufele mai practice. Chiar și tastaturile foarte obișnuite ale computerelor personale , în prezent toate echipate cu conexiune USB, au folosit în trecut acel conector, apoi abandonat pentru mini-DIN . Prin urmare, MIDI a rămas una dintre puținele aplicații pentru acest tip de conector.
Există, de asemenea, o versiune a standardului care utilizează conexiunea USB și o versiune pentru transmiterea semnalelor MIDI prin Ethernet, iar Internetul este în prezent în curs de dezvoltare de către IETF .

Interfața hardware

Instrumentele muzicale și diverse echipamente MIDI trebuie să fie conectate fizic pentru a comunica între ele. În acest scop, standardul MIDI prevede utilizarea unei triade de conectori DIN cu 5 poli, dintre care sunt utilizați doar cei 3 poli centrali, care printr-un cablu cu cinci poli permit conexiunea fizică între instrumente.
Cei trei conectori se disting ca:

  • IN: permite dispozitivului să primească informații.
  • OUT: permite dispozitivului să transmită informații.
  • THRU: permite dispozitivului să retransmită datele primite de la portul IN la un alt dispozitiv.

Configurația reală a conectorilor, în ceea ce privește numărul și prezența, depinde de funcțiile pentru care este construit un instrument. Pe o tastatură principală , de exemplu, este obișnuit să găsești 2 sau 3 OUT-uri și fără THRU-uri, deoarece ceea ce se așteaptă de la un astfel de instrument este flexibilitatea maximă în transmiterea datelor către alte echipamente.

Interfața software: protocolul MIDI la nivel de software

Una dintre caracteristicile fundamentale ale MIDI este că este o interfață multicanal.
Datorită aplicațiilor software numite secvențiale , care pot fi instalate atât în ​​unități hardware specifice, cât și în computerele personale normale, spectacolele muzicale pot fi înregistrate sub formă de „mesaje MIDI” pentru a le putea modifica și asculta ulterior. Sarcina de sincronizare a diferitelor secvențe MIDI este delegată timecode MIDI , un standard la nivel mondial pentru sincronizarea digitală de muzică , care este o implementare a timecode SMPTE .

Un fișier MIDI este un fișier care conține date care pot fi comunicate prin protocolul MIDI. MIDI acceptă până la 16 canale. Pentru a explica ce se înțelege prin „canal MIDI” se poate utiliza următoarea metaforă: doriți să trimiteți un mesaj unui coleg care se cazează într-una dintre cele 16 camere disponibile într-un hotel; pe lângă adresa hotelului, trebuie să specificați și numărul camerei colegului nostru dacă doriți ca mesajul să fie livrat corect. Gândiți-vă că aveți un modul de sunet cu capacitatea de a reda până la 16 sunete diferite în același timp conectate în MIDI la o tastatură muzicală și fiecare sunet se află într-un canal diferit de la 1 la 16: cum să faceți ca muzica să redea doar unul dintre aceste sunete ? Tastatura trebuie să trimită modulului, pe lângă note, și numărul canalului (camera hotelului) în care să redați acele note. Modul de a face acest lucru depinde de tipul de instrumente utilizate.
În plus față de note și diversele informații necesare pentru interpretarea lor, este posibilă și transmiterea textului sincronizat cu muzica în MIDI. Acest aspect a fost exploatat pe scară largă pentru karaoke . Fișierele de acest tip au schimbat adesea extensia din .mid în .kar .

Tipuri de date

Byte Status: octeții de stare sunt opt ​​numere de cifre binare în care bitul cel mai semnificativ bit (Most Significant Bit, MSB) este setat la 1. Acești octeți sunt utilizați pentru a identifica tipul de mesaj, și anume scopul octeților de date care urmează lor; cu excepția mesajelor în timp real, un nou octet Status obligă receptorul să adopte un nou statut, chiar dacă ultimul mesaj nu a fost încă finalizat.

Octet de date: după octeții de stare, cu excepția mesajelor în timp real, pot exista unul sau doi octeți de date care conțin conținutul mesajului. Octetii de date sunt numere binare din opt cifre în care bitul cel mai semnificativ (MSB) este setat la 0. Numărul corespunzător de octet de date trebuie întotdeauna trimis pentru fiecare octet de stare; receptorul mesajului trebuie să aștepte până când a primit toți octeții de date solicitați de octetul de stare.

Stare de rulare: numai pentru mesajele vocale și de mod. Când este primit și procesat un octet de stare, receptorul rămâne în starea respectivă până când primește un octet de stare diferit; prin urmare, în caz de repetare, octetul de stare poate fi omis și este suficient să trimiteți numai octeții de date. În starea de rulare un mesaj complet constă numai din octeți de date; Starea de rulare este deosebit de utilă atunci când trimiteți șiruri lungi de notă On / Off, unde „Note On cu viteza 0” este folosit ca Note Off.

Mesaj de canal

Un mesaj Channel utilizează patru biți în Status Byte pentru a direcționa mesajul către unul dintre cele șaisprezece canale MIDI și patru biți pentru a defini mesajul. Mesajele de canal sunt apoi utilizate de receptoare într-un sistem al cărui număr de canale corespunde numărului de canale codificate în octetul de stare.

Un instrument poate primi mesaje MIDI de la mai multe canale. Canalul pe care primește instrucțiunile principale se numește „Canal de bază”. Un instrument poate fi configurat pentru a primi date de performanță pe mai multe canale (inclusiv canalul de bază). Acestea sunt denumite „canalul vocal”.

Există două tipuri de mesaje de canal:

  • MOD pentru a defini răspunsul instrumentelor la mesajele vocale. Mesajele de mod sunt trimise pe canalul de bază al unui instrument.
  • VOICE pentru a controla vocile unui instrument. Mesajele vocale sunt trimise pe canalele vocale;

Mod canal

Un singur instrument fizic poate acționa ca mai multe instrumente virtuale. În această discuție, „instrument” se referă la un instrument virtual.
Sintetizatoarele și alte instrumente conțin elemente generatoare de sunet numite „voci”. Alocarea vocii este procesul algoritmic prin care datele de notare On / Off din mesajele MIDI primite sunt direcționate către vocile în sine, astfel încât notele să fie redate corect.

Sunt disponibile patru mesaje Mode pentru a defini relațiile dintre cele șaisprezece canale MIDI și atribuțiile vocale ale instrumentului. Cele patru moduri sunt determinate de proprietățile Omni (On / Off), Poly și Mono. Poly și Mono se exclud reciproc. Omni, când este activat, permite receptorului să primească mesaje vocale pe toate canalele vocale. Când este oprit, receptorul acceptă numai mesaje vocale provenite de la canale vocale selectate.

Mono, când este activat, reduce atribuirea vocii la o singură voce pe canal vocal (monofonic). Când este dezactivat (Poly activat), un anumit număr de voci poate fi alocat de algoritmul normal de atribuire a receptorului.

Receptoarele și emițătoarele MIDI funcționează într-un singur mod de canal la un moment dat. Deoarece un singur instrument poate funcționa ca un set de instrumente virtuale, acesta poate avea mai multe canale de bază. Acest instrument se comportă ca și cum ar fi mai mult de un receptor și fiecare receptor poate fi configurat cu un canal de bază diferit. Mai mult, fiecare receptor poate fi setat cu moduri diferite, atât prin intermediul panoului de control al instrumentului, cât și prin mesajele de mod primite pe canalul de bază. Deși nu este un mod MIDI adevărat, acest mod de funcționare se numește „Multi Mode”.

Vocea canalului

Mesajele vocale de canal constau din încărcarea informațiilor transmise între instrumentele MIDI. Acestea includ: Note On, Note Off, schimbarea programului, schimbarea controlului, pitchbend, retușarea canalului și presiunea cheii polifonice.

Un singur mesaj Note On constă din 3 octeți, care necesită 960 μs pentru transmisie. Când multe note sunt redate în același timp, diferitele Note Ons pot dura câteva milisecunde pentru a fi transmise. Acest lucru poate face dificil pentru MIDI să răspundă la un număr mare de evenimente simultane fără a provoca o întârziere ușoară, dar audibilă. Această problemă este redusă utilizând modul Stare de rulare.

Control Rpn & Nrpn

Sunt controale care vă permit să gestionați extensii specifice pentru dispozitivul sau aplicația care urmează să fie controlată. Comenzile RPN sunt specificate de standardul MIDI, comenzile NRPN sunt specifice fiecărui dispozitiv și, prin urmare, trebuie documentate în manualul furnizat. Acestea sunt implementate ca o succesiune de schimbări de control.

NRPN, Număr parametru neînregistrat

Parametrul care trebuie modificat este desemnat de controlerele 98 și 99, valoarea care trebuie introdusă este specificată de:

  • Controler 6 (introducere date MSB)
  • Controler 38 (introducere date LSB)

Alternativ, puteți utiliza:

  • Controler 96 (Incrementarea datelor)
  • Controler 97 (scăderea datelor)

RPN, Număr parametru înregistrat

Parametrul care trebuie modificat este desemnat de controlerele 100 și 101, valoarea care trebuie introdusă este specificată de aceleași controlere ca și NRPN-urile.

Mesaj de sistem

Mesajele de sistem nu sunt codate cu numere de canal. Există de obicei trei tipuri de mesaje de sistem.

  • Mesaj comun al sistemului : mesajele obișnuite afectează toți receptorii dintr-un sistem, indiferent de canal.
  • Mesaj sistem real : sunt utilizate pentru sincronizare și sunt destinate tuturor unităților bazate pe ceas dintr-un sistem; conțin doar octetul de stare, nu există octeți de date.
  • Mesaj exclusiv de sistem : poate conține orice număr de octeți de date și se poate termina fie cu un „Sfârșit exclusiv” (EOX), fie cu orice octet de stare, cu excepția mesajelor în timp real.

Structura fișierului MIDI

Fișierul MIDI și structurile sale de bază

Fișierul MIDI, sau mai mult formal fișierul standard Midi (SMF), este o arhivă care conține date, informații exprimate într-unul sau mai mulți octeți. Aceste informații organizează un sistem complet de reguli, protocolul (sau codul) MIDI, și sunt ușor de înțeles de cititoarele de programe MIDI (secvențiale), care le recunosc și le interpretează ca instrucțiuni de executat.

Specificațiile SMF au fost dezvoltate de Asociația Producătorilor MIDI (MMA).

Fișierul MIDI este alcătuit din structuri complexe, numite Track Chunk („bloc-pistă”), alcătuit dintr-un anumit număr de octeți (informații-instrucțiuni). Aceste blocuri sunt părți fundamentale și, prin urmare, necesare ale fișierului MIDI.

Prima structură: blocul antet

Prima structură, plasată doar la începutul fișierului MIDI și întotdeauna compusă din 14 octeți, se numește: Midi Track header chunk ( MThd ), adică blocul Heading . Unii octeți ai acestui bloc de antet al fișierului MIDI sunt invariabile. Există un singur bloc antet Midi Track ( MThd ) într-un fișier. Blocul de antet (Header Chunk) specifică câteva informații de bază și generice despre datele din fișier. Bucata de antet Midi Track constă din următorii octeți în notație hexazecimală:

4D 54 68 64 00 00 00 06 00 0n 00 nn 0n nn

unde n reprezintă octeții valorii variabile.

4D 54 68 64 = (în cod ASCII: MThd) definește bucata ca antetul Midi Track și este blocul de antet , întotdeauna format din 4 octeți invariabili, care definește această pistă ca un bloc de antet .

00 00 00 06 = definește lungimea în octeți a restului blocului de antet . Indică faptul că imediat după au rămas 6 octeți.

00 0n = acești doi octeți indică tipul de fișier MIDI - smf : Fișier Midi standard . Pentru formatul 0 n = 0; pentru formatul 1 n = 1; pentru formatul 2 n = 2:

  • Format 0: piesele unei melodii sunt îmbinate într-una singură care conține toate informațiile despre evenimente ale tuturor pieselor originale ale melodiei.
  • Format 1: Melodiile sunt stocate individual, împărtășind aceleași valori de tempo și semnătură. Viteza melodiei este inserată în prima piesă care se referă la toate celelalte. Format 1 permite gestionarea multitrack a unei melodii în secvențiale și playere de fișiere MIDI și este formatul cel mai utilizat.
  • Format 2: piesele sunt gestionate independent unul de celălalt, de asemenea pentru tempo și pentru metru.

00 nn = acești doi octeți indică câte piese (de tip MTkr) sunt prezente în fișierul MIDI.

0n nn = acești ultimii doi octeți indică „numărul de impulsuri (sau rezoluție) pe ¼ notă”: PPQN (Puls pe trimestru de notă). Fiecare impuls este numit „Tick” (instant).

De exemplu 01 80 = 384 PPQN (o notă will va consta din 384 PPQN, adică 384 căpușe). PPQN condiționează Delta Tempo pentru întregul fișier MIDI, deoarece PPQN este o unitate de măsură, un contor de referință care definește Delta Tempo ca „număr de impulsuri per ¼ notă”. Prin urmare, durata a două sau mai multe Delta Times având valori de octeți identice, dar în cadrul PPQN-urilor diferite, va fi diferită.

Celelalte structuri care urmează blocului antet

După întreaga descriere a piesei antetului Midi Track (blocul principal de antet) urmați piesele (cel puțin una) care conțin evenimentele MIDI. Fiecare pistă este compusă dintr-un antet întotdeauna format din 4 octeți invariabili:

4D 54 72 6B = (în cod ASCII: MTrk) definește bucata ca Midi Track , adică o identifică ca un bloc de pistă .

Dacă există mai multe piste MTrk în fișier, prima piesa MTrk, numită și " Tempo Track ", conține de obicei Meta Data, separate una de alta și de orice alte evenimente MIDI de Delta TΔ Tempo, referitoare la indicație a subdiviziunii măsurii, a tempo-ului metronomic și a cheii scalei. Următoarele piese, de exemplu una pentru fiecare instrument muzical diferit, conțin toate celelalte evenimente midi și pot conține, de asemenea, evenimente Meta Data în cazul schimbării valorilor Meta Data inițiale conținute în prima piesă MTrk, adică în piesa Tempo .

După cei 4 octeți care identifică pista, există întotdeauna alți 4 octeți:

00 00 00 nn = indică câte octeți succesivi există până la sfârșitul pistei. După cei 4 octeți descriși este întotdeauna timpul Delta (Delta Time), exprimat cu unul sau mai mulți octeți. Urmează Evenimentele conținute în melodie, Evenimente Midi, Evenimente SysEx, Evenimente Meta Data, care sunt codificarea computerizată a unei piese, partitura muzicală.

Toate evenimentele sunt întotdeauna separate unele de altele de o valoare variabilă Tempo Delta în funcție de necesități și de parcursul piesei.

Ora Delta - TΔ

În cadrul urmelor MTrk , între fiecare eveniment, se introduc mereu datele temporale Delta Time ( Delta-time ), care exprimă durata intervalului de timp dintre două evenimente individuale în octeți, adică este durata în PPQN dintre cele două evenimente ( ... EVENT1 ... ... EVENT2 ...). Dacă, de exemplu, TΔ = 00, atunci evenimentele au loc simultan.

Prin urmare, pentru a face două note să sune simultan, avem de exemplu: 90 48 64 00 90 4C 64 = C și E care se joacă simultan.

Tempo Delta este fundamental pentru durata notelor și, prin urmare, pentru crearea figurilor muzicale. Mai precis, valorile TΔ sunt stabile; figurile muzicale își variază corespondența cu TΔ în funcție de rezoluția PPQN. De exemplu, pentru PPQN = 01 80 nota de sfert are TΔ = 83 00; în schimb, pentru un PPQN = 60, nota de sfert are TΔ = 60.

Durata în microsecunde a unei impulsuri

Durata în microsecunde a unei bifări de impuls pentru ¼ a unei note se obține din următoarea operație:

(60.000.000 / bpm) / PPQN

unde bpm reprezintă „ bătăile pe minut ” (tempo-ul metronomului) și PPQN este „ rezoluția în impulsuri per ¼ notă ” așa cum este setată în fragmentul MThd .

Meta date

Meta Data (Meta Data) este o informație non-fundamentală a fișierului MIDI și, dacă este prezentă, este conținută în piesele MTrk. Ele sunt identificate prin primul octet a cărui valoare este întotdeauna egală cu FF și sunt alcătuite din mai mulți octeți.

Meta Date principale:

FF 58 04 xx yy 60 08 - Măsurător ( măsurare subdiviziune timp):

  • FF: definește tipul de eveniment (adică faptul că este un Meta Data);
  • 58: identifică tipul de meta date (meta date care definește subdiviziunea măsurii );
  • 04: numărul de octeți conținut în partea următoare ( întotdeauna 4);
  • 0x: (octet variabil) numărător al raportului de subdiviziune a măsurii (introduceți numărul corespunzător în hexazecimal: de exemplu pentru ¾ = 03),
  • 0y: numitor (numărul care trebuie introdus este cel exprimat în hexazecimal al puterii necesare pentru a crește numărul 2 la numărul numitorului ales):
Pentru a indica sferturile: y = 2 (deoarece 2 2 = 4);
· Pentru a indica octave: y = 3 (din moment ce 2 3 = 8);
· Pentru a indica a șaisprezecea notă: y = 4 (din moment ce 2 4 = 16);
Pentru a indica mijloacele (de exemplu 32 ): y = 1 (din moment ce 2 1 = 2);
Pentru a indica unitatea (de exemplu 21 ): y = 0;
  • 60: definește că există 96 de ceasuri midi într-o notă ¼;
  • 08: definește că există 8 note 1/32 o notă ¼.

FF 51 03 xx xx xx - Tempo metronomic (viteza melodiei: indică câte microsecunde durează un sfert de notă):

  • FF: definește tipul de eveniment (adică faptul că este un Meta Data);
  • 51: identifică tipul de Meta Date (Meta Date care definește Tempo metronomic);
  • 03: cantitatea de octeți conținută în următoarea parte a Meta Data (întotdeauna 3);
  • xx xx xx: tempo-ul metronomic ales obținut în raport cu posibilele subdiviziuni de măsură întotdeauna în conformitate cu următoarele calcule:
Defalcarea măsurii Calcul
n1 (60.000.000 / 4) / nb
n2 (60.000.000 / 2) / nb
n4 60.000.000 / nb
n8 (60 000 000 × 2) / nb
n16 (60.000.000 × 4) / nb
60 000 000 reprezintă cantitatea de microsecunde pentru fiecare bancnotă;
nb este numărul ales de bătăi pe minut al metronomului (tempo metronomic ales).

Evenimentul Meta referitor la „ tempo-ul Metronomic ” trebuie plasat întotdeauna după evenimentul Meta al „ Subdiviziunii măsurii ”.

În cazul unei modificări a subdiviziunii măsurii, tempo-ul metronomic al noii subdiviziuni trebuie întotdeauna recalculat pe baza tabelului anterior.

FF 59 02 xx yy - Cheia cheii (indică cheia scalei):

  • FF: definește tipul de eveniment (adică faptul că este un Meta Data);
  • 59: identifică tipul de meta date (meta date care definește cheia cheii);
  • 02: cantitatea de octeți conținută în următoarea parte (întotdeauna 2);
  • xx: numărul de accidente cheie :
Mai mare → relativ → Minor
Ascuțit: xx = 00: - Fă M Lor
xx = 01: 1♯ Sol M Sunt
xx = 02: 2♯ Regele M da m
xx = 03: 3♯ Lor Fa♯m
xx = 04: 4♯ Mi m Do♯m
xx = 05: 5♯ Da m Sol♯m
xx = 06: 6♯ Fa♯ M Re♯m
xx = 07: 7♯ Do♯ M La♯m
Apartament: xx = FF: 1 ♭ Fa M Regele m
xx = FE: 2 ♭ Da ♭ M Sol m
xx = FD: 3 ♭ Mi ♭ M Do m
xx = FC: 4 ♭ The M Fa m
xx = FB: 5 ♭ Re ♭ M Da ♭ m
xx = FA: 6 ♭ Sol ♭ M Sunt. M
xx = F9: 7 ♭ Fă ♭ M ♭ m
  • yy: definește cheia: Major yy = 00 sau Minor corespunzător yy = 01 .

Meta-Data FF 59, referitoare la cheia scalei, este recunoscută de unele programe numai dacă este prezentă în pista de timp și o salvează acolo. Alți secvențieri îl citesc numai dacă este prezent în piese după cel al timpului și îl salvează în acelea. Alte secvențiale recunosc acest Meta Data oriunde se află. Meta Data FF 59 poate fi considerat opțional, deoarece nota modificată este de fapt definită nu de acest Meta Data, ci de al doilea octet care alcătuiește evenimentul MIDI „ NOTE ON ”.

Alte meta date utile sunt:

FF 03 ll xxxx - Nume pistă :

  • FF: definește tipul de eveniment (adică faptul că este un Meta Data);
  • 03: identifică tipul de meta date (meta date care definește numele pistei);
  • ll: lungimea în octeți a evenimentului (exprimă cantitatea de caractere prezentă în șirul alfanumeric care dă numele pistei);
  • xxxx: textul propriu-zis care va fi afișat pe piesa secvențială evidențiată.

FF 05 ll xxxx - Textul melodiei (versuri):

  • FF: definește tipul de eveniment (adică faptul că este un Meta Data);
  • 05: identifică tipul Meta Data (Meta Data care exprimă textul melodiei prezente într-o piesă muzicală);
  • ll: lungimea în octeți a evenimentului (exprimă cantitatea de caractere prezentă în șirul alfanumeric);
  • xxxx: textul real care poate fi format dintr-un singur șir alfanumeric de orice lungime.

Exemplu de utilizare a acestui eveniment Meta (text care trebuie introdus în corespondența unei note): « Pro - » (adică: P + r + o + [spațiu] + - ) structura va fi ... | TΔ | Note ON | TΔ | FF 05 05 50 72 6F 20 2D | TΔ | Note OFF | TΔ | ... (în verde valorile hexazecimale ale codului necesare pentru a obține scrierea textului „ Pro - ”.

Principalele evenimente MIDI

9n hh vv - Notă ON

  • 9 definește tipul de octet de stare ( Notă PORNIT ) și n este numărul care definește canalul căruia să-i aplici octetul de stare, primul octet 9n ordonă ca nota definită în următorul octet al doilea hh să înceapă redarea pe canalul n;
  • hh definește numărul notei care trebuie redată (de la 0 la 127; prin urmare este un mesaj de date );
  • vv viteza de atingere ( viteza ) (forța aplicată instrumentului în actul de a juca), (de la 0 la 127; prin urmare este un mesaj de date ).

8n hh vv - Notă OPRIT

  • 8 definește tipul de octet de stare (Notă OPRIT) și n este numărul care definește Canalul căruia să-i aplici octetul de stare (primul octet 8 ordonă ca nota definită în al doilea octet ulterior hh să înceteze să mai fie redată pe canalul n) ;
  • hh definește numărul de notă de oprit (de la 0 la 127; prin urmare este un mesaj de date );
  • vv viteza de eliberare ( viteza ), adică forța aplicată instrumentului în actul de încetare a redării (de la 0 la 127; prin urmare este un mesaj de date ).

Exemplu: 80 45 64 (la canalul 1 nota nr. 45 este oprită în acel moment [adică n. ​​69 în zecimal = A la 440 hrz] cu viteza 64).

Canalul 10 este rezervat în modulul GM pentru sunete de percuție.

Pauze

imediat după „NOT OFF” se introduce un Delta Time cu o valoare egală cu cifra de pauză corespunzătoare. Dacă există o pauză la începutul piesei, TΔ este introdus în fața primului eveniment „NOTE ON” al piesei MTrk în cauză.

An aa vv - Aftertouch Polifonic :

  • A definește tipul de octet de stare și n este numărul care definește canalul căruia să-i aplici octetul de stare; acest prim octet ordonă aplicarea unei presiuni suplimentare asupra unei note care se joacă și asupra căreia s-a exercitat deja o presiune inițială (viteza);
  • aa se referă la nota pe care trebuie aplicată presiunea suplimentară (0 la 127);
  • vv specifică cantitatea de presiune suplimentară care trebuie aplicată celei cunoscute (de la 0 la 127).

Bn bb vv - Modificare control :

  • B definește tipul de octet de stare (Control change: folosit pentru a obține efecte speciale) en este numărul care definește canalul căruia să-i aplici octetul de stare; acest prim octet comandă ca evenimentul Control Change definit în următorul al doilea octet bb să fie aplicat pe canalul n;
  • bb definește datele specifice, mesaje ale controlorului (octet de date), ale octetului de stare (de la 0 la 127; prin urmare este un mesaj de date): determină ce tip de controler să trimită (de exemplu: 07 = Volum; 0A = Pan; 5B = Reverb; etc.).
  • vv definisce il valore da 00 a 7F (da 0 a 127 in decimale, pertanto è un Messaggio di Dati ) da applicare al Messaggio di controller per variarne le caratteristiche.

Esempio: B0 07 64 Imposta il volume generale della traccia da quel momento a 64 hex, ossia a 100 in decimale.

Cn ccProgram Change :

  • C definisce il tipo di byte di Stato (Status byte), ossia di quale Evento MIDI si tratta (in questo caso Program change: usato per far suonare uno strumento musicale), en è il numero che definisce il Canale a cui applicare lo status byte; questo primo byte ordina che si applichi sul canale n l'evento Program Change definito nel successivo secondo byte ss;
  • cc definisce i dati specifici dello status byte da 00 a 7F (da 0 a 127, pertanto è un Messaggio di Dati ): determina quale strumento musicale far suonare.

Esempio: C0 05: strumento della traccia impostato da quel momento a Piano elettrico 2.

Dn ddChannel Aftertouch

  • D definisce il tipo di Status byte ( Channel Aftertouch ) en è il numero che definisce il Canale a cui applicare lo status byte; questo primo byte ordina che sia aumentata la velocità di tocco delle note attive, quindi viene aumentata la forza iniziale applicata sulle note che sta già suonando appartenenti ad un medesimo canale;
  • dd definisce la quantità di ulteriore velocità di tocco aggiunta alla nota che già sta suonando (da 0 a 127, pertanto è un Messaggio di Dati).

Esempio: D0 64 al canale 1 viene applicato da quel momento l'Aftertouch di valore uguale a 100.

En ee zzPitch Bend Change

  • E definisce il tipo di Status byte (Pitch Bend Change [Pitch Wheel]) en è il numero che definisce il Canale a cui applicare lo status byte; questo primo byte ordina che sia modificata la frequenza della nota;
  • ee definisce il 1° valore (da 0 a 127, pertanto è un Messaggio di Dati);
  • zz definisce il 2° valore (da 0 a 127, pertanto è un Messaggio di Dati).

Esempio: E0 60 64: al canale 1 viene applicato da quel momento il Pich Wheel con primo valore uguale a 60, ossia 96 in decimale, e secondo valore uguale a 64, ossia 100 in decimale).

Chiusura della Traccia

Ogni traccia MTkr termina con un evento di chiusura formato da due byte: FF 2F 00, preceduti sempre da un valore di TΔ. L'ultimo byte uguale a zero rappresenta la lunghezza del meta-evento, la quale, non essendo presenti dati ulteriori, è appunto pari a zero. Ovviamente anche la “ Traccia del Tempo ” termina con il comando FF 2F 00 (chiusura della traccia).

Analisi pratica di un breve file Midi

Di seguito verrà mostrato e commentato il codice esadecimale di un semplice e breve file Midi (le varie istruzioni del protocollo Midi sono visualizzate in righe da 16 valori esadecimali, tranne l'ultima da 17, e distinte l'una dopo l'altra con caratteri in grassetto e non):

 4D 54 68 64 00 00 00 06 00 01 00 02 01 80 4D 54
72 6B 00 00 00 19 00 FF 58 04 03 02 60 08 00 FF
51 03 09 27 C0 00 FF 59 02 01 00 00 FF F2 00 4D
54 72 6B 00 00 00 2A 00 B0 07 64 00 B0 0A 30 00
B0 5B 40 00 B0 5D 10 00 C0 04 00 90 45 64 86 00
80 45 64 81 40 90 42 64 81 40 80 42 64 00 FF 2F 00

· · ·

COMMENTO :

Chunk Header ( MThd ) :
 4D 54 68 64 00 00 00 06 00 01 00 02 01 80
  • 4D 54 68 64 : intestazione di 4 byte del MIDI Track header chunk
  • 00 00 00 06 : questi 4 byte informano che seguiranno 6 byte di dati sino alla fine di questo chunk header
  • 00 01 : questi 2 byte informano che il file MIDI è del formato (tipo) 1
  • 00 02 : questi 2 byte informano che dopo il MThd seguiranno 2 blocchi di traccia MTrk
  • 01 80 : informazione che specifica la risoluzione in impulsi per quarto di nota PPQN (in questo caso per ogni nota da un quarto vi sono 384 impulsi).
1° Chunk MTrk (cosiddetta Traccia del Tempo ) :
 4D 54 
72 6B 00 00 00 19 00 FF 58 04 03 02 60 08 00 FF
51 03 09 27 C0 00 FF 59 02 01 00 00 FF 2F 00
  • 4D 54 72 6B : intestazione di 4 byte del MIDI Track chunk (informano che il blocco è una traccia successiva al MThd e che si tratta dunque di una MTrk )
  • 00 00 00 19 : questi 4 byte informano che seguiranno 25 byte di dati fino alla fine di questa traccia ( track chunk )
  • 00 : Tempo Delta. Questi 2 byte informano che il successivo evento rispetto al precedente si verificherà dopo zero PPQN, quindi immediatamente (senza alcun ritardo)
  • FF 58 04 03 02 60 08 : evento Meta Dato. Questo Meta evento informa che le misure delle tracce musicali saranno suddivise in ¾
  • 00 : Tempo Delta pari a zero PPQN. Il prossimo evento (FF 51 03 09 27 C0) avverrà dopo una quantità di tempo zero PPQN rispetto all'evento precedente (FF 58 04 03 02 60 08)
  • FF 51 03 09 27 C0 : evento Meta Dato. Questo Meta evento informa che la velocità metronomica del brano midi è impostata a 100 battiti al minuto
  • 00 : Tempo Delta pari a zero PPQN
  • FF 59 02 01 00 : evento Meta Dato. Questo Meta evento informa che la tonalità della scala musicale possiede un diesis in chiave (SOL maggiore)
  • 00 : Tempo Delta pari a zero PPQN
  • FF 2F 00 : questi tre byte informano che ha termine il blocco traccia
2° Chunk MTrk (seconda traccia) :
 4D
54 72 6B 00 00 00 2A 00 B0 07 64 00 B0 0A 30 00
B0 5B 40 00 B0 5D 10 00 C0 04 00 90 45 64 86 00
80 45 64 81 40 90 42 64 81 40 80 42 64 00 FF 2F 00
  • 4D 54 72 6B : intestazione di 4 byte del MIDI Track chunk (informano che il blocco è una traccia successiva al MThd e che si tratta dunque di una MTrk )
  • 00 00 00 2A : questi 4 byte informano che seguiranno 51 byte di dati fino alla fine di questa traccia ( track chunk )
  • 00 : Tempo Delta pari a zero PPQN
  • B0 07 64 : Evento Midi: Control Change n. 7 (Volume). Questo dato di Control Change di tre byte informa che il volume generale delle note presenti nella traccia è impostato da questo momento a 64 (100 in decimale)
  • 00 : Tempo Delta pari a zero PPQN
  • B0 0A 30 : Evento Midi: Control Change n. 10 (Panpot). Questo dato di Control Change di tre byte informa che il Pan (ossia il bilanciamento dei volumi tra i due canali stereo è impostato da questo momento e per questa traccia a 30 [48 decimale])
  • 00 : Tempo Delta pari a zero PPQN
  • B0 5B 40 : Evento Midi: Control Change n. 91 (Riverbero). Questo dato di Control Change di tre byte informa che il Riverbero è impostato da questo momento e per questa traccia a 40 (64 decimale)
  • B0 5D 10 : Evento Midi: Control Change n. 93 (Chorus). Questo dato di Control Change di tre byte informa che il Chorus è impostato da questo momento e per questa traccia a 10 (16 decimale)
  • 00 : Tempo Delta pari a zero PPQN
  • C0 04 : Evento MIDI: Program Change n. 4. Questo dato di Program Change di due byte informa che da quel momento sarà usato come strumento musicale presente al num. 4 (Piano Elettrico 1) della lista degli strumenti del Program Change
  • 00 : Tempo Delta pari a zero PPQN
  • 90 45 64 : Evento MIDI: NOTE ON . Questo dato di tre byte informa che deve essere accesa (cominciare a suonare) la nota num. 45 esad. (LA) con una velocity ( velocità di pressione ) avente valore pari a 64 (100 decimale)
  • 86 00 : Tempo Delta pari a 86 00 PPQN (con risoluzione 01 80 quello è il TΔ della minima)
  • 80 45 64 : Evento MIDI: NOTE OFF . Questo dato di tre byte informa che deve essere spenta (cessare di suonare) la nota num. 45 esad. (LA) con una velocity (velocità di pressione) avente valore pari a 64 (100 decimale)
  • 81 40 : Tempo Delta pari a 81 40 PPQN (è il TΔ della croma)
  • 90 42 64 : Evento MIDI: NOTE ON . Questo dato di tre byte informa che deve essere accesa (cominciare a suonare) la nota numero 42 esadecimale (FA♯) con una velocity ( velocità di pressione ) avente valore pari a 64 (100 decimale)
  • 81 40 : Tempo Delta pari a 81 40 PPQN (è il TΔ della croma)
  • 80 42 64 : Evento MIDI: NOTE OFF. Questo dato di tre byte informa che deve essere spenta (cessare di suonare) la nota numero 42 esadecimale (FA♯) con una velocity (velocità di pressione) avente valore pari a 64 (100 decimale)
  • 00 : Tempo Delta pari a zero PPQN
  • FF 2F 00 : questi tre byte informano che ha termine il blocco traccia.

La visualizzazione in valori esadecimali del codice di un file Midi può essere effettuata mediante un programma editor esadecimale di file.

Editor MIDI

Bibliografia

Voci correlate

Altri progetti

Collegamenti esterni

Controllo di autorità LCCN ( EN ) sh86007370
Musica Portale Musica : accedi alle voci di Wikipedia che trattano di musica