Extensia fișierului SMF. Formate SMF Deschideți fișierul smf

Dacă aveți un computer instalat program antivirus poate sa scanează toate fișierele de pe computer, precum și fiecare fișier separat... Puteți scana orice fișier făcând clic dreapta pe fișier și selectând opțiunea corespunzătoare pentru a scana fișierul pentru viruși.

De exemplu, în această figură, fișier my-file.smf, apoi trebuie să faceți clic dreapta pe acest fișier și să selectați opțiunea din meniul fișierului „Scanați cu AVG”... Selectarea acestei opțiuni va deschide AVG Antivirus, care va scana acest fișier pentru viruși.


Uneori poate rezulta o eroare instalare incorectă a software-ului, care se poate datora unei probleme întâlnite în timpul procesului de instalare. Poate interfera cu sistemul dvs. de operare conectați fișierul SMF la aplicația software corectă influenţând aşa-numitul „Asocieri de extensii de fișiere”.

Uneori simplu reinstalarea Apache OpenOffice ar putea rezolva problema conectând corect SMF cu Apache OpenOffice. În alte cazuri, pot apărea probleme cu asocierile de fișiere programare software slabă dezvoltator și poate fi necesar să îl contactați pentru asistență suplimentară.


Sfat:Încercați să actualizați Apache OpenOffice la cea mai recentă versiune pentru a vă asigura că sunt instalate cele mai recente patch-uri și actualizări.


Poate părea prea evident, dar adesea fișierul SMF însuși poate cauza problema... Dacă ați primit un fișier printr-un atașament de e-mail sau l-ați descărcat de pe un site web și procesul de descărcare a fost întrerupt (de exemplu, o întrerupere de curent sau un alt motiv), fișierul poate fi deteriorat... Dacă este posibil, încercați să obțineți o copie nouă a fișierului SMF și încercați să o deschideți din nou.


Cu grija: Un fișier deteriorat poate provoca daune colaterale programelor malware anterioare sau preexistente pe computerul dvs., așa că este foarte important să aveți un antivirus actualizat care rulează pe computer în orice moment.


Dacă fișierul dvs. SMF legate de hardware-ul computerului dvs pentru a deschide fișierul de care este posibil să aveți nevoie actualizați driverele dispozitivului legate de acest echipament.

Această problemă asociate de obicei cu tipuri de fișiere media care depind de deschiderea cu succes a hardware-ului din interiorul computerului, de exemplu, placa de sunet sau placa video... De exemplu, dacă încercați să deschideți un fișier audio, dar nu îl puteți deschide, poate fi necesar actualizați driverele plăcii de sunet.


Sfat: Dacă, când încercați să deschideți un fișier SMF, obțineți Mesaj de eroare legat de fișierul SYS, problema ar putea fi probabil legate de drivere de dispozitiv deteriorate sau învechite care trebuie actualizate. Acest proces poate fi facilitat prin utilizarea unui software de actualizare a driverelor, cum ar fi DriverDoc.


Dacă pașii nu au rezolvat problemași încă mai aveți probleme la deschiderea fișierelor SMF, ar putea fi din cauza lipsa resurselor disponibile de sistem... Unele versiuni de fișiere SMF pot necesita o cantitate semnificativă de resurse (de exemplu, memorie / RAM, putere de procesare) pentru a se deschide corect pe computer. Această problemă apare destul de des dacă utilizați hardware de computer destul de vechi și, în același timp, un sistem de operare mult mai nou.

Această problemă poate apărea atunci când computerul are dificultăți în îndeplinirea unei sarcini, deoarece sistemul de operare (și alte servicii care rulează în fundal) pot consumă prea multe resurse pentru a deschide fișierul SMF... Încercați să închideți toate aplicațiile de pe computer înainte de a deschide StarMath Formula File. Eliberând toate resursele disponibile pe computer, oferiți un mediu mai bun pentru încercarea de a deschide fișierul SMF.


daca tu a finalizat toți pașii de mai susși fișierul dvs. SMF încă nu se va deschide, este posibil să fie necesar să rulați modernizarea echipamentelor... În cele mai multe cazuri, chiar și cu versiuni hardware mai vechi, puterea de procesare poate fi totuși mai mult decât adecvată pentru majoritatea aplicațiilor personalizate (cu excepția cazului în care faceți o mulțime de lucrări care necesită mult CPU, cum ar fi randarea 3D, modelarea financiară/științifică sau munca multimedia grea) ... În acest fel, este probabil ca computerul dvs. să nu aibă suficientă memorie(numit mai frecvent „RAM”, sau memorie cu acces aleatoriu) pentru a efectua sarcina de a deschide un fișier.

Partea 5 a unei serii de articole care detaliază protocolul MIDI.

Una dintre cele trei părți ale protocolului MIDI este specificația formatului de stocare a datelor (rețineți, celelalte două sunt formatul mesajului și specificația interfeței hardware). Formatul mesajului a fost discutat în primele trei articole ale seriei, acum este momentul pentru formatul de stocare. A fost propus de organizația MMA la sfârșitul anului 1987 și a fost numit Standard MIDI Files (SMF).

Scopul fișierelor MIDI este de a permite schimbul de evenimente (adică mesaje MIDI marcate de timp) între diferite dispozitive și programe. Înainte de apariția fișierelor MIDI standard, un aranjament pregătit într-un secvențător nu putea fi încărcat în altul din cauza incompatibilităților de format. Acest lucru nu înseamnă că odată cu apariția SMF, toți producătorii de secvențiere au trecut la acest format. Există mai multe motive pentru aceasta și despre ele vom vorbi și astăzi.

Deoarece stocarea informațiilor este direct legată de dispozitivul de secvențiere, ne vom opri asupra acestei chestiuni mai detaliat, dar numai în măsura în care este necesar pentru a înțelege SMF. Și, fără îndoială, vom dedica unul dintre următoarele articole din ciclu secvențierelor.

Evenimente
Este apelat un mesaj MIDI marcat cu ora eveniment... Diferite unități pot fi folosite pentru a indica timpul - ticuri, impulsuri interne, timp în format SMPTE etc. Este important să înțelegem diferența fundamentală dintre un eveniment și un mesaj. Mesajul „trăiește” pentru o fracțiune de milisecundă din timp real – din momentul în care este generat de sursă până în momentul în care este trimis către receptor pentru execuție. Poate fi prins în procesul de transmisie printr-un cablu MIDI sub forma unui set de impulsuri. Un eveniment reprezintă câțiva octeți de informații înregistrați în memoria dispozitivului, pe baza cărora va fi generat un mesaj în viitor, la ora stabilită.

De exemplu, secvențiatorul poate stoca un eveniment „alegeți o notă” cu un marcaj temporal de 100 ms de la începutul redării. Puteți edita acest eveniment în două dimensiuni: în primul rând, modificați parametrii mesajului MIDI în sine (în acest caz, înălțimea sau dinamica notei) și, în al doilea rând, mutați nota de-a lungul pistei, adică modificați timpul de execuție a mesajului.

Evenimentele apar în memoria sequencerului în timpul înregistrării mesajelor MIDI. Când apăsați butonul Înregistrare, secvențatorul pornește generatorul de impulsuri hardware (bifări) și începe să „asculte” intrarea MIDI specificată. De exemplu, când apăsați o tastă, intrarea primește mesajul „alegeți o notă”. Secvențatorul arată - aha, mesajul a ajuns la a 20-a bifă și îl scrie în memorie cu eticheta 20. După câteva secunde, au eliberat cheia - a venit mesajul „eliminați nota”, generatorul intern a fluturat fericit 64 bifă la secvențiatorul în acel moment. Sequencerul salvează un mesaj cu eticheta 64. Acum avem de-a face cu două evenimente - Note On și Note Off. Generatorul de impulsuri este pornit din nou în timpul redării. Când apare cea de-a 20-a bifare, un mesaj Note On este trimis la ieșirea MIDI a secvențatorului, al 64-lea tick este o Note Off. Am înregistrat și apoi am redat acțiunile interpretului!

Evident, același lucru se poate face și offline, adică fără a fi nevoie de spectacol live. Făcând clic cu mouse-ul în locul potrivit de pe pistă (și după selectarea în prealabil a duratei notei), vom construi în memoria secvențatorului exact imaginea anterioară.

Tipuri de memorie
Acum este momentul să aplici doi termeni descurajanți de computer: memorie primară și secundară. Memoria primară (sau internă) este memoria secvenței în care mesajele sunt înregistrate și evenimentele sunt stocate pe parcursul întregii sesiuni. Conținutul acestei memorie este șters atunci când alimentarea este oprită. Această interpretare este mai potrivită pentru secvențierele hardware. În secvențiatoarele software, memoria primară este pur și simplu RAM-ul computerului. Pentru a stoca conținutul memoriei primare pentru o perioadă lungă de timp, se folosește memoria secundară sau, cu alte cuvinte, suporturi de date. Acesta poate fi o dischetă, un hard disk, un smart card și altele asemenea.

Cantitatea de memorie primară din secvențiatoarele hardware și stațiile de lucru (rețineți, o stație de lucru este un generator de tonuri și un secvențior într-o singură casetă) este de obicei exprimată în numărul de note stocate (de exemplu, 200 de mii). Uneori, volumul este exprimat în evenimente, în acest caz trebuie să fiți în garda - o notă necesită două evenimente pentru a fi stocate (apăsarea și eliberarea unei taste), iar rotirea roții de înălțime sau aftertouch poate genera până la 100 sau mai multe evenimente. Se întâmplă ca dimensiunea memoriei unui secvenționar să fie exprimată în unități de computer native - kiloocteți. Dar nici acest lucru nu este foarte convenabil - un eveniment poate ocupa un număr diferit de octeți (de la cinci la câteva zeci).

În secvențiatoarele software moderne, puținilor oameni le pasă de cantitatea de memorie primară - chiar și pe o mașină cu 128 MB de RAM, puteți uita de orice restricții atunci când lucrați cu date MIDI. În plus, există secvențiere care pot reda un aranjament direct de pe disc, fără să îl încarce în memoria primară (și, apropo, să îl înregistreze și el), ceea ce șterge în general distincția dintre cele două tipuri de memorie.

În memoria secundară, datele sunt de obicei scrise într-un fișier. Cele mai multe secvențiere au propriul format proprietar al acestui fișier, ceea ce face dificilă schimbul de aranjamente create în diferite dispozitive sau programe. S-a afirmat mai devreme că acesta a fost principalul motiv pentru crearea SMF.

Măsurarea timpului
De fapt, nu există „căpușe” în interiorul secvențatorului. Există un temporizator hardware care generează impulsuri cu o frecvență strict constantă (de exemplu, la fiecare microsecundă). Forțarea muzicienilor să măsoare timpul în microsecunde ar fi o batjocură monstruoasă, ca, într-adevăr, în alte unități de timp real (secunde, minute). Muzicienii sunt obișnuiți să gândească în batai și ritmuri și să exprime timpul în unități relative (duratele notelor), în funcție de tempo-ul curent.

„Nici o problemă”, au răspuns producătorii, „lasă-i să măsoare, deoarece le este mai convenabil”. Doar unitatea minimă de măsură nu va fi vreo a 32-a durată, ci un tick luat în mod convențional (unitatea este și mai mică, astfel încât, de exemplu, o treizeci de secunde poate conține 48 de căpușe). Deoarece încă din epoca clasică, ritmul a fost măsurat prin numărul de sferturi pe minut (BPM, bătăi pe minut), atunci s-au decis să ia un sfert ca durată principală și să indice numărul de căpușe pe sfert - PPQN (Pulse Per Note de sfert). Cu cât PPQN este mai mare, cu atât rezoluția sechencerului este mai bună și cu atât mai precisă în timp poate capta mesajele în timpul înregistrării și le poate transmite la ieșirea MIDI în timpul redării. Cele mai multe secvențiere vă permit să setați PPQN în mod arbitrar - de exemplu, de la 32 la 1536 de ticks pe trimestru (secvențiere moderne - până la 15360 PPQN).

Un tick este o unitate dependentă de rata: cu cât rata este mai rapidă, cu atât intervalul dintre bifări este mai scurt în unități de timp real. Acest interval poate fi găsit prin formula din Fig. unu.

De exemplu, la 120 BPM și 96 PPQN, tick-urile vor urma la fiecare 5,208 milisecunde. La aceeași rezoluție și 180 BPM, intervalul dintre bifături va fi redus la 3,472 ms. Cum numără un secvențior dacă cronometrul său intern impulsează la fiecare microsecundă? Este foarte simplu: bazat pe tempo-ul curent și rezoluția într-un sfert, exact după formula specificată. Deoarece o milisecundă conține 1000 de microsecunde, în ultimul exemplu, secvențiatorul va genera un alt tick atunci când primește 3472 de impulsuri de la cronometru.

Când rezoluția înaltă nu are sens
Dacă secvențiatorul și generatorul de tonuri sunt „sub același acoperiș” (o stație de lucru sau un computer cu un secvențietor software și un sintetizator pe o placă de sunet sau un sintetizator virtual), atunci rezoluția internă a unui astfel de sistem poate fi arbitrar de mare (15360 PPQN este impresionant). Acest lucru vă permite să sincronizați datele MIDI și audio cu acuratețea eșantionului. Dar de îndată ce conectăm secvențatorul și generatorul de tonuri cu un cablu MIDI printr-o interfață MIDI, rezoluția înaltă devine irelevantă.

De ce? Permiteți-mi să vă reamintesc că un octet este transmis prin interfața MIDI în 320 de microsecunde. Aceasta înseamnă că, de exemplu, un mesaj de luare de note (constând din trei octeți) va fi transmis timp de 960 μs, sau aproape o milisecundă întreagă. Acum imaginați-vă că în secvențiatorul la 120 BPM și 2048 PPQN, două note sunt programate cu două căpușe depărtare. În unități de timp real, aceasta este de 488 de microsecunde. Deci: generatorul de tonuri nu va putea primi a doua notă la 488 de microsecunde după prima, ci în realitate - doar după 960 de microsecunde. Așa că o va executa după nu două căpușe, ci aproape patru.

De aici concluzia: atunci când se lucrează printr-o interfață MIDI (când secvențatorul și generatorul de tonuri sunt separate), rezoluția secvenței mai mult de o bifă la 960 de microsecunde nu are sens. Pentru a afla cât va fi în PPQN, puteți folosi formula din Fig. 2.

Tabelul din fig. 3 arată valorile PPQN pentru ritmuri diferite, care este inutil să depășească.

Poziția unui eveniment pe linia temporală este setată în secvențiator, de obicei în formatul „bare: bătăi: ticks”, de exemplu, 22: 3: 152. Adică: a douăzeci și doua măsură, a treia bătaie, a 152-a bifă de la începutul celei de-a treia bătăi. Acest principiu de sincronizare (termenul englezesc - Timebase) se numește muzical, deoarece este familiar și convenabil pentru muzicieni. Vă rugăm să rețineți că trebuie să cunoașteți semnătura de timp actuală pentru a lucra în acest format. Adică câte bătăi conține măsura și cu ce este egală fiecare bătaie.

Deci, cu o semnătură de timp 4/4, o bătaie este egală cu un sfert, iar o măsură conține patru bătăi. La o rezoluție de 384 PPQN, vor exista 384 de căpușe într-o singură ritm și vor exista 1536 de căpușe în fiecare bifă (384 x 4). La 6/8 și aceeași rezoluție, o bătaie va fi de 192 de ticuri (o optime este jumătate din lungimea unui sfert), iar o măsură va avea șase bătăi sau 1152 de ticuri (192 x 6). Astfel, 22: 3: 152 în primul caz înseamnă 35096 căpușe de la începutul cântecului (22 x 1536 + 3 x 384 + 152), iar în al doilea - 26072 căpușe (22 x 1152 + 3 x 192 + 152) .

Deci, pentru a determina poziția unui eveniment în unități de timp real pe baza formatului „bare: bătăi: ticks”, trebuie să cunoașteți trei parametri: tempo-ul curent, semnătura de timp și rezoluția în ticks pe trimestru (PPQN).

Există o altă posibilitate de cronometrare, atunci când poziția unui eveniment pe o pistă este exprimată în unități absolute care nu depind de tempo, cel mai adesea în formatul de timp SMPTE - „ore: minute: secunde: cadre”. Acest principiu de sincronizare se numește „time-code-based” (bazat pe timecode, absolut). Necesitatea acesteia apare atunci când secvențatorul lucrează împreună cu un magnetofon sau cu un echipament de film/video. Operațiunile de editare cu material film, video și audio, precizarea pozițiilor începutului și sfârșitului înregistrării este mai comod de efectuat, fiind legată de o scară absolută, și nu de măsuri și bătăi.

În acest caz, coordonatele evenimentului pe rigla de timp depinde de tempo-ul curent. Deci, cu un tempo de 120 BPM, prima bătaie a celei de-a doua măsură poate avea un timp SMPTE de 00: 00: 02: 00 și cu un tempo de 60 BPM - 00: 00: 04: 00. Când un eveniment este poziționat într-un cadru (între secunde), coordonatele sale vor diferi și cu un format de cadru diferit (număr de cadre pe secundă). Puteți citi mai multe despre SMPTE și MIDI Time Code în articolul anterior din serie.

Cantități de lungime variabilă
Destul de digresiuni lirice, acum sarcina noastră este să înțelegem formatul de stocare a datelor. Și prima provocare cu care s-au confruntat dezvoltatorii SMF a fost cum să păstreze calendarul evenimentului.

Există două opțiuni aici: pentru a stoca pentru fiecare eveniment timpul de la începutul melodiei sau de la ultimul eveniment înainte de acesta (pe același canal). Totuși, prima opțiune nu este rațională, deoarece cel mai adesea intervalul dintre evenimente este mic, evenimentele învecinate au timpi de execuție apropiati unul de celălalt. Deci, într-un pasaj de trei note, prima poate avea un timp, să zicem, 22: 3: 152, a doua - 22: 3: 244, a treia - 22: 3: 288. Pentru a stoca aceste numere (traduse în căpușe de la începutul melodiei), trebuie să rezervați cel puțin patru octeți pentru fiecare. Dacă mergeți pe a doua cale, atunci în loc de trei numere mari, puteți salva un început mare (22: 3: 152), iar după acesta - două mici, diferența de căpușe între primul și al doilea și al doilea și a treia notă (în acest caz, 92 și 44), un octet este suficient pentru ei. Dar totuși, problema rămâne: în funcție de eveniment, trebuie să alocați un număr diferit de octeți pentru a economisi timp.

Dacă SMF ar fi fost dezvoltat în prezent (și chiar de Microsoft, căruia în general îi pasă puțin de dimensiunea fișierelor sale și de memoria necesară), această problemă ar fi închisă ochii. Am alocat un câmp fix pentru a economisi timp, să zicem, 8 octeți per eveniment și nu am avut de suferit. Cu toate acestea, în 1988, memoria primară (RAM) era foarte scumpă, fiecare octet era numărat, iar cel secundar (disc media) avea o dimensiune foarte modestă. Prin urmare, dezvoltatorii SMF au dorit să obțină cel mai compact format posibil.

S-a decis să se păstreze timp delta, adică diferența de căpușe între acest eveniment și cel precedent (sau începutul cântecului). De exemplu, dacă primul eveniment - lovirea notei la prima octavă - a avut loc la 40 de bifături de la începutul cântecului, atunci timpul său delta va fi 40. Dacă după patru ticuri este redată nota F, atunci timpul său delta va fi 4. Dacă două evenimente au loc simultan, atunci unuia dintre ele i se atribuie un timp delta egal cu zero. Dacă evenimentul are loc exact la începutul cântecului, acesta are și un timp delta zero. Cu toate acestea, următorul eveniment se poate întâmpla într-o oră și jumătate (adică în câteva milioane de căpușe). Cum să fii în acest caz? La urma urmei, memoria trebuie să fie salvată și nu este de dorit să se aloce un câmp fix de mai mulți octeți pentru timpul delta.

Asa numitul lungimi variabile... Ele oferă o modalitate convenabilă de a scrie numere întregi, de la cel mai mic la cel mai mare, fără a fi nevoie să aloce un număr fix de octeți pentru număr. Biții numărului original sunt împachetati în unul sau mai mulți octeți: fiecare octet are șapte biți (în dreapta, biții de la 0 la 6). Cel mai semnificativ bit dintr-un octet este serviciul; toți octeții din serie, cu excepția ultimului, trebuie să conțină unul, ultimul - zero. Mai multe exemple de ambalare sunt prezentate în Fig. 4.

De exemplu, trebuie să împachetați numărul 64 (hex 0x40) în format de lungime variabilă. În formă binară, acest număr este scris ca 0100 0000. Există doar șapte biți semnificativi, astfel încât acest număr este împachetat într-un octet neschimbat - 0100 0000 (este și ultimul octet al seriei), bitul cel mai semnificativ este 0.

Acum numărul este 128 (0x80). În formă binară, este scris ca 1000 0000. Există opt biți semnificativi, așa că totul nu se va potrivi într-un octet, trebuie să-l împărțiți în doi. Primul octet trebuie să aibă unul în bitul cel mai semnificativ, al doilea (ca octet final al seriei) - zero. Punem cei șapte biți cel mai puțin semnificativi ai numărului original în al doilea octet, rezultă 0 000 0000. Punem un bit rămas (unul) în partea dreaptă a primului octet - obținem 1000 0001. Ca rezultat, numărul 0x80 este scris ca doi octeți: 0x81 0x00. Despachetarea este foarte simplă. Nu știm dinainte câți octeți sunt în serie. Citim primul octet - 1000 0001. Cel mai semnificativ bit de serviciu (1) indică faptul că acesta nu este ultimul octet al seriei, există mai mulți octeți. Aruncăm unitatea de serviciu, lăsând șapte biți - 000 0001. Citiți al doilea octet - 0000 0000. Cel mai semnificativ bit de serviciu (0) indică faptul că acesta este octetul final al seriei (adică există doar doi octeți în serie). Aruncăm bitul de serviciu. Au mai rămas și șapte biți - 000 0000. Adăugăm la ei în stânga șapte biți alocați din primul octet, obținem 000 0001 000 0000. Aruncând primele șase zerouri, obținem numărul necesar 1000 0000 (0x80).

Deci, metoda lungimii variabile permite alocarea de numere diferite de octeți pentru numere diferite: pentru numere în intervalul de la 0 la 127 - un octet, de la 128 la 16383 - doi octeți și așa mai departe. Numărul maxim reprezentat în acest fel nu este, în principiu, limitat. Cu toate acestea, în SMF, lungimea exploziei este limitată la patru octeți (trei cu bitul cel mai semnificativ setat și unul care se termină cu zero). Ca urmare, timpul maxim de delta poate fi 0x0FFFFFFF (sau 268 435 455 de căpușe), care la o rată de 500 BPM și o rezoluție de 96 PPQN este de aproximativ patru zile. Mai mult decât suficient!

Sub formă de valori de lungime variabilă, SMF indică nu numai timpul delta, ci și durata unor evenimente.

Format de fișier de schimb (IFF)
Structura fișierului MIDI standard este derivată aproape în întregime din IFF (Interchange File Format), dezvoltat în 1985 de Electronic Arts. Este un format de stocare și schimb de date care a făcut viața mai ușoară atât utilizatorilor, cât și dezvoltatorilor de software timp de aproape douăzeci de ani. Electronic Arts nu numai că a furnizat documentație open source, ci și codul sursă C pentru citirea și scrierea fișierelor IFF.

Formatul IFF este compatibil și extensibil. Prima înseamnă că noua versiune a programului poate citi fără probleme fișierele create de versiunea anterioară. În al doilea rând, nu trebuie să inventați un nou format pentru a stoca informații suplimentare; este suficient să introduceți propria extensie în IFF. Structura formatului permite programelor de la diferiți producători să facă schimb de date care nu au acorduri de afaceri adecvate între ele. Toate acestea mulțumesc utilizatorii - după ce au salvat datele în format IFF, aceștia nu mai sunt înlănțuiți la formatul închis al sistemului lor și pot folosi datele în orice mediu software și hardware compatibil IFF.

Un fișier IFF este o colecție de date organizate în așa fel încât programe diferite, fără legătură, să o poată citi. Pe de altă parte, programul poate stoca informații specifice în IFF care sunt semnificative doar pentru el însuși. Structura IFF face acest lucru ușor. Alte programe care nu știu să gestioneze astfel de informații le pot ignora fără a compromite citirea conținutului principal.

Există mai multe tipuri de fișiere IFF. De exemplu, fișierele ILBM și GIFF conțin informații grafice, fișierele SMUS conțin notație muzicală, iar fișierele AIFF și WAVE conțin audio digital.

Un fișier IFF este format din elemente similare numite bucăți. Un bloc este o structură de date constând dintr-un identificator alfabetic (patru caractere ASCII), o dimensiune a blocului (patru octeți) și datele în sine (Figura 5). Este convenabil să ne gândim la un bloc ca la un shell în care datele sunt „înfășurate”. Datele în sine pot conține orice: grafică, text, animație, sunet, un set de obiecte 3D și așa mai departe.

Blocurile din fișierul IFF pot fi imbricate, fig. 6. De fapt, un fișier IFF nu este altceva decât un bloc de nivel superior care conține unul sau mai multe alte blocuri în interiorul său. Acest principiu de stocare a datelor vă permite să „împachetați” mai multe date eterogene într-un fișier, inclusiv mai multe fișiere IFF, care seamănă deja cu un sistem de fișiere în interiorul unui fișier. Adevărat, cu organizarea datelor imbricate, există un dezavantaj - fișierul devine dificil de interpretat, de a izola blocurile de el.

Majoritatea fișierelor IFF conțin un bloc de nivel superior cu identificatorul „FORM”. Include alte blocuri (Fig. 7). Singurele date din blocul FORM sunt patru octeți care descriu tipul fișierului (de ex. „ILBM”, Hartă de biți InterLeaved). Imediat în spatele acestora sunt blocuri imbricate, cum ar fi „BMHD” (antetul imaginii), „CMAP” (paletă) și „BODY” (pixelii înșiși). Numele blocurilor și formatul de date sunt inventate de dezvoltatorul tipului de fișier specific. Alte programe, dacă dau peste un bloc cu un nume necunoscut, îl pot sări în siguranță, ghidându-se de câmpul care conține lungimea blocului.

Toate datele numerice din fișierele IFF sunt stocate în ordinea big-endian, adică mai întâi este stocat octetul cel mai semnificativ al numărului (MSB), apoi octetul cel mai puțin semnificativ. Consultați bara laterală pentru mai multe despre asta. Blocurile dintr-un fișier trebuie să înceapă întotdeauna cu un octet par. Dacă blocul anterior conține un număr impar de octeți, acesta este completat cu un octet nul pentru a fi par.

De la ce capăt să salvezi?
Memoria computerului este formată din celule, fiecare conținând exact un octet. Pentru a accesa o celulă (a scrie sau a citi un octet), procesorul folosește așa-numitul adresa in minte. Este pur și simplu un număr întreg atribuit unei celule de către sistemul de operare (fie ca experții în computer să mă ierte pentru această simplificare excesivă). În viața reală, un octet nu este de obicei suficient. Chiar și pentru a stoca numere întregi se folosesc cuvinte, adică grupuri de doi octeți, cuvinte duble sau patru (respectiv, patru sau opt octeți, vezi prima parte a ciclului pentru mai multe detalii). Adică, numărul este stocat în mai mulți octeți adiacenți.

În fig. 8 prezintă două moduri posibile de a le plasa în memorie, folosind exemplul unui cuvânt dublu. Prima modalitate - octeții sunt stocați în memorie secvenţial, octetul cel mai semnificativ la cea mai mică adresă. Adică, MSB-ul cuvântului înalt este stocat la adresa N, apoi LSB-ul cuvântului înalt (N + 1), MSB-ul cuvântului scăzut (N + 2), LSB-ul cuvântului scăzut (N + 3) . Această metodă este de obicei numită big-endian(sau „alocare directă de octeți”). În a doua metodă, totul este exact invers, octetul înalt este stocat la cea mai mare adresă: LSB al cuvântului scăzut (N), MSB al cuvântului scăzut (N + 1), LSB al cuvântului înalt (N + 2). ), MSB al cuvântului înalt (N + 3) ... Această metodă este de obicei numită little-endian- „alocare inversă de octeți”.

Adică, diferența este „de la ce capăt” este stocată valoarea multiocteți. Termenii „big-endian” și „little-endian” au fost inventați într-un articol pe acest subiect, cu referire la cartea lui Jonathan Swift, Aventurile lui Gulliver. După cum știți, în Lilliput a apărut o mișcare de Big-Endians, care nu voiau să îndeplinească decretul împăratului prin care poruncea să spargă ouăle fierte doar de la capătul ascuțit. În lumea computerelor, confruntarea mare / mic-endian arată foarte asemănătoare.

Susținătorii Little-endian susțin că ordinea rearanjată a octetilor în memorie facilitează efectuarea de operații aritmetice pe valori multibyte, deoarece octeții mai puțin semnificativi adăugați primii sunt stocați în octeții mai puțin semnificativi.

Circuitul little-endian este utilizat în procesoarele compatibile Intel, de la Intel 8080 la Intel Pentium IV. Plasare directă (big-endian) - în procesoare Sun Spark, Motorola 68000 (linia timpurie de computere Apple) și multe procesoare RISC. Dar procesoarele PowerPC și Intel Itanium înțeleg ambele formate de date simultan (uneori sunt numite „bi-endian”).

Totuși, important nu este atât modul în care computerul stochează datele „înăuntrul său”, cât și cum le stochează „în exterior”, în fișiere. Acest lucru este mult mai important din punct de vedere practic. De exemplu, dacă cuvântul „UNIX” este salvat într-un fișier big-endian de către sistem (ca doi cuvinte pe doi octeți), atunci sistemul little-endian îl va citi ca „NUXI”. Acesta este ceea ce jargonul computerelor numește „problema NUXI”. Dificultăți similare pot apărea la salvarea graficelor, deoarece culorile sunt codificate cu numere pe mai mulți octeți. De exemplu, fișierele Adobe Photoshop și JPEG folosesc schema big-endian, în timp ce fișierele GIF și BPM folosesc little-endian.

Formatul „non-platform” Standard MIDI File (SMF) folosește metoda big-endian, adică cel mai semnificativ octet al unui cuvânt (MSB) este stocat primul.

Structura SMF
Fișierele MIDI standard, precum fișierele IFF, sunt alcătuite din fragmente. Există două tipuri de bucăți în total: Header Chunk și Track Chunk. Într-un fișier SMF poate exista doar un singur bloc antet și unul sau mai multe blocuri de urmărire. Blocul are o structură tipică IFF: primii patru octeți sunt identificatorul, următorii patru octeți sunt lungimea blocului în octeți, excluzând tipul / lungimea de opt octeți. Identificatorul blocului de antet este format din patru caractere „MThd”, iar identificatorul blocului de piese este format din patru caractere „MTrk”. Această structură va permite definirea unor noi tipuri de blocuri în viitor, iar un bloc necunoscut poate fi ignorat cu ușurință pe baza lungimii sale. Specificația SMF avertizează: „Programele ar trebui să fie pregătite să ignore blocuri de tipuri necunoscute atunci când le întâlnesc”.

Blocul antet conține informații generale despre fișier, blocul track conține fluxul de mesaje MIDI cu marcaje temporale. În plus, fișierul MIDI stochează informații suplimentare necesare pentru secvențiere: tempo, semnătură de timp, cheie, setări metronom și altele asemenea. Aceste informații nu sunt transmise prin interfața MIDI, iar evenimentele care o formează sunt numite meta-evenimente.

Un fișier MIDI începe întotdeauna cu un bloc antet urmat de unul sau mai multe blocuri de piese (Figura 9). Adică, orice fișier MIDI standard începe cu cele patru litere „M”, „T”, „h”, „d”. Aceasta înseamnă că fișierul MIDI nu respectă specificația IFF (care necesită ca fiecare fișier compatibil IFF să înceapă cu un bloc de nivel superior de unul dintre cele trei tipuri - „FORM”, „CAT” sau „LIST”). Există și alte diferențe: SMF-urile nu pot conține blocuri imbricate, iar lungimea blocului nu trebuie să fie egală. Cu toate acestea, conversia unui SMF într-un fișier compatibil IFF este simplă. Este suficient să completați blocurile de lungime impară cu un octet zero (dacă există) și să puneți tot conținutul în blocul FORM. O operațiune similară este utilizată în formatul RMID propus de Microsoft (vezi bara laterală).


Sunteți aici pentru că aveți un fișier care are o extensie de fișier care se termină în .smf. Fișierele cu extensia de fișier .smf pot fi lansate numai de anumite aplicații. Este posibil ca fișierele .smf să fie fișiere de date și nu documente sau media , ceea ce înseamnă că „nu sunt menite să fie deloc vizionate.

ce este un & nbsp.smf & nbspfile?

Fișierele în format SMF conțin date audio cu efecte, iar acest format de fișier este integrat cu tehnologii și funcționalități similare cu fișierele cu extensia MID. Piesele audio cu extensia .smf pot fi redate folosind aplicația Apple QuickTime, iar acest program multimedia are o versiune compatibilă cu sistemele bazate pe Microsoft Windows, în afară de o altă versiune dezvoltată pentru utilizatorii de Mac. Asociația producătorilor MIDI a integrat specificațiile MIDI în formatul de fișier SMF în timpul dezvoltării sale. Aceasta înseamnă că fișierele SMF pot conține, de asemenea, diferite piese combinate din diferite piese audio stocate în mai multe fișiere SMF, ceea ce înseamnă, de asemenea, că fișierele în format .smf pot fi combinate și convertite într-o singură piesă audio în formate mai populare care pot fi vizualizate și utilizate cu mai multe software de dezvoltare video digitală și prezentări de documente, aplicații multimedia și playere audio digitale. Acest lucru oferă utilizatorilor un mijloc de a adăuga separat efecte la fiecare piesă și de a face modificări altora înainte de a le combina pentru a le reda ca o singură pistă audio. Unele dintre aceste efecte și modificări pot include ajustări de volum și înălțime, distorsiuni și reverb, panning și editări de sincronizare, printre altele. Există aplicații terță parte care pot converti fișierele SMF în format MIDI pentru o compatibilitate mai largă pentru mai multe aplicații de editare audio.

cum se deschide un fișier .smf?

Lansați un fișier .smf sau orice alt fișier de pe computer, făcând dublu clic pe el. Dacă asociațiile dvs. de fișiere sunt configurate corect, aplicația care „are menită să vă deschidă fișierul .smf o va deschide. Este posibil să aveți nevoie să descărcați sau să cumpărați aplicația corectă. „De asemenea, este posibil să aveți aplicația corectă pe computer, dar fișierele .smf nu sunt încă asociate cu aceasta. În acest caz, când încercați să deschideți un fișier .smf, puteți spune Windows care aplicație este cea corectă pentru acel fișier. De atunci, deschiderea unui fișier .smf va deschide aplicația corectă.

aplicații care deschid un fișier .smf

Apple QuickTime Player

Apple QuickTime Player

Apple QuickTime Player este un software de redare multimedia care gestionează o varietate de fișiere de diferite formate, de la fotografii digitale la imagini panoramice, audio la videoclipuri, precum și interactivitate. Acest program de player multimedia este disponibil pentru computerele Mac OS X, precum și pentru versiunile ulterioare ale computerelor Windows. Acest produs software de la Apple are kituri de dezvoltare software sau SDK-uri care sunt disponibile publicului atâta timp cât sunt abonați cu Apple Developer Connection sau ADC. Are framework QuickTime, care este compatibil cu alte aplicații de player gratuite, care oferă mai multe funcții. Acestea includ codificarea audio-urilor și videoclipurilor, transcodarea acelorași fișiere, decodarea cu opțiunea de a trimite un flux decodat către subsistemul grafic sau subsistemul audio și o arhitectură de plugin pentru componente pentru a suporta alte codecuri (terți precum DivX). Cea mai recentă versiune a acestui software este QuickTime Player 7, care poate fi descărcată gratuit pentru computerele Mac și Windows.

un cuvânt de avertizare

Aveți grijă să nu redenumiți extensia de pe fișierele & nbsp.smf & nbspfile sau orice alte fișiere. Acest lucru nu va schimba tipul de fișier. Doar software-ul special de conversie poate schimba un fișier de la un tip de fișier la altul.

ce este o extensie de fișier?

O extensie de fișier este un set de trei sau patru caractere la sfârșitul unui nume de fișier; în acest caz, extensiile & nbsp.smf. & nbspFile vă spun ce tip de fișier este și spun Windows ce programe îl pot deschide. Windows asociază adesea un program implicit fiecărei extensii de fișier, astfel încât atunci când faceți dublu clic pe fișier, programul se lansează automat. Când acel program nu mai este pe computer, uneori puteți primi o eroare când încercați să deschideți fișierul asociat.


De obicei, secvențierele folosesc propriul format de stocare a aranjamentelor. Acest lucru se datorează faptului că o structură de date concepută pentru capacitățile unui anumit program este mult mai eficientă, este pur și simplu mai ușor să lucrezi cu ea. Puteți scrie date suplimentare în formatul dvs., de exemplu, la personalizarea interfeței cu utilizatorul (poziția și dimensiunea ferestrei, font și așa mai departe). În plus, compactitatea fișierelor MIDI standard (în special, lungimi variabile pentru stocarea timpului de apariție a evenimentelor) se transformă într-un inconvenient: pentru a lucra cu aranjamentul, toate timpii delta din fișier trebuie să fie „despacheți”, iar când fișierul este salvat, „arhivat” din nou.

Pe de altă parte, SMF este un format portabil, multiplatformă, în care puteți defini orice blocuri suplimentare pentru a stoca date specifice. De exemplu, un secvențietor poate stoca metronomul pornit sau oprit într-un bloc numit „Mtr”. Acest bloc nu este o piedică pentru un alt secvențior; poate defini mai multe dintre blocurile sale specifice în același fișier. Deci unele secvențiere folosesc direct formatul SMF, este „nativ” pentru ei. Altele vă permit să importați și să exportați fișiere MIDI după cum este necesar.

Pentru a suporta diferite tipuri de secvențiere și alte echipamente, fișierele MIDI standard sunt clasificate în trei variante sau formate: 0, 1 și 2.

Formatul de fișier 0 conține o piesă, care conține evenimente de la toate cele șaisprezece canale MIDI. Acesta este cel mai simplu format pentru schimbul de date, deoarece nu ține cont de structura originală a pieselor din secvențator (care piesă este alocată căruia canal MIDI). Fișierul format 0 este mai potrivit pentru transferul de date pe dispozitive precum mixere și procesoare de efecte decât pentru stocarea aranjamentelor. Când înregistrați un fișier în format 0, secvențatorul pur și simplu îmbină toate mesajele de pe toate canalele MIDI într-o singură pistă. În consecință, la încărcarea unui fișier, obținem o pistă, pe care este problematică editarea evenimentelor, deoarece evenimentele pentru diferite canale sunt intercalate între ele. Cele mai multe secvențiere au funcția de a împărți un astfel de „mix” în piese separate, fiecare dintre acestea conținând evenimente pentru un canal MIDI.

Fișierul de format 1 conține o pistă separată pentru fiecare canal MIDI, care reflectă structura familiară a unui aranjament dintr-un secvențior. Fișierul format 2 conține mai multe piese independente (sau modele complete), fiecare model constă dintr-o pistă care conține mesaje pe toate cele 16 canale. Acest format trebuia să fie folosit în acele secvențiere care pot funcționa cu modele independente cântate de mai multe instrumente în același timp. Cu toate acestea, Formatul 2 a fost ignorat pe scară largă și este considerat în prezent în specificație ca „nedestinat pentru secvențiere”.

Una dintre principalele diferențe dintre formatele 0 și 1 este modul în care sunt plasate metaevenimentele. În formatul 0, evenimentele meta tempo și semnătura de timp (numite harta tempo) sunt amestecate cu alte mesaje MIDI. În plus, titlurile pieselor nu sunt salvate în acest format. În formatul 1, prima piesă din fișier este rezervată exclusiv pentru harta tempo-ului și alte meta-evenimente precum Sequence / Track Name, Sequence Number, Marker, SMPTE Offset (vezi mai jos).

Dacă nu există o hartă de tempo în fișier, se presupune că tempo-ul este de 120 BPM, iar semnătura de timp este 4/4.

Organizația MMA poate dezvolta alte formate SMF în viitor pentru a sprijini noi structuri de date în secvențiere.

Bloc de titlu ("MThd")

Blocul antet conține informații de bază despre fișier. Structura blocului este prezentată în fig. 11. Câmpul de lungime conține întotdeauna numărul 6, pe baza numărului de octeți de date antet care urmează acestui câmp. Datele antet sunt trei cuvinte de 16 biți. Primul cuvânt (format) - format SMF, poate lua una dintre cele trei valori - 0, 1 și 2. Al doilea cuvânt (ntrks) - numărul de blocuri de piese (adică piesele în sine) din fișier. Pentru un fișier de format 0, acesta va fi întotdeauna egal cu unu.

Ultimul cuvânt al blocului de antet diviziune specifică modul în care este măsurat timpul (baza de timp). Așa cum am menționat mai devreme, există două moduri: muzical (măsuri / bătăi) și absolut (bazat pe cod de timp), bazat pe timpul absolut în format SMPTE. În orice caz, timpul delta din fișierul SMF se măsoară prin tick-uri: prin metoda muzicală se stabilește numărul de ticks pe sfert (adică PPQN), cu cel absolut numărul de ticks într-un cadru SMPTE. Dacă cel mai semnificativ (al 15-lea) bit al câmpului de diviziune este setat la zero, atunci se utilizează metoda muzicală, iar restul de 15 biți conțin PPQN (până la 32767), Fig. 12. Dacă bitul cel mai semnificativ este setat la unu, atunci se utilizează modul absolut. Octetul mic (biții de la 0 la 7) stochează numărul de tick-uri pe cadru, octetul mare (biții de la 8 la 15) stochează formatul de cadru SMPTE, exprimat ca valori negative (-24, -25, -29, -30 ). În acest caz, numărul -29 corespunde formatului Drop Frame de 30 fps (vezi articolul anterior din ciclu).

Numerele negative sunt alese pentru că sunt scrise ca complement a doi (vezi articolul precedent), adică conțin unul în bitul cel mai semnificativ. Și această unitate este doar un semn al modului absolut de numărare a timpului. Numărul de bifări per cadru este stocat pozitiv și ia, de obicei, una dintre următoarele valori: 4 (rezoluție ca în MIDI Time Code, când există patru mesaje Quarter Frame per cadru), 8, 10, 80 (rezoluție de un bit într-un cadru SMPTE), sau 100...

Acest sistem vă permite să indicați ora absolută de apariție a evenimentului cu o precizie de 1/128 cadru. În plus, dacă setați formatul cadrului la 25 fps și rezoluția la 40 de bifări pe cadru, atunci fiecare bifă va corespunde cu o milisecundă. Câmpul de împărțire în acest caz va avea valoarea 0xE728, octetul 0xE7 este intrarea numărului de complement 2 și 0x28 este numărul hexazecimal 40.

Bloc de cale („MTrk”)

Blocul de piese stochează evenimentele în sine, adică mesajele MIDI cu un marcaj de timp. Blocul trebuie să conțină cel puțin un eveniment. Structura blocului de piese este aceeași pentru fișierele MIDI de orice format (0, 1 și 2), Fig. treisprezece.

Evenimentul constă dintr-un timp delta și mesajul MIDI însuși, Fig. 14. Permiteți-mi să vă reamintesc că timpul delta este stocat ca lungime variabilă.

Sperăm că te-am ajutat să rezolvi problema cu fișierul SMF. Dacă nu știți de unde puteți descărca o aplicație din lista noastră, faceți clic pe link (acesta este numele programului) - veți găsi informații mai detaliate despre locația de unde puteți descărca versiunea de instalare securizată a aplicației necesare aplicarea.

Vizitarea acestei pagini ar trebui să vă ajute să răspundeți în mod specific la aceste întrebări sau la întrebări similare:

  • Cum se deschid fișiere cu extensia SMF?
  • Cum pot converti un fișier SMF într-un alt format?
  • Care este extensia formatului de fișier SMF?
  • Ce programe acceptă fișierul SMF?

Dacă după ce ați vizualizat materialele de pe acest site, încă nu ați primit un răspuns satisfăcător la niciuna dintre întrebările de mai sus, înseamnă că informațiile despre fișierul SMF prezentate aici nu sunt complete. Contactează-ne folosind formularul de contact și scrie ce informații nu ai găsit.

Ce altceva ar putea cauza problema?

Pot exista mai multe motive pentru care nu puteți deschide un fișier SMF (nu doar absența unei aplicații corespunzătoare).
in primul rand- Fișierul SMF poate fi legat incorect (incompatibil) cu aplicația instalată pentru a-l servi. În acest caz, trebuie să schimbați singur acest link. În acest scop, faceți clic dreapta pe fișierul SMF pe care doriți să îl editați, faceți clic pe opțiune „Pentru a deschide cu”și apoi selectați programul pe care l-ați instalat din listă. După o astfel de acțiune, problemele cu deschiderea fișierului SMF ar trebui să dispară complet.
În al doilea rând- fișierul pe care doriți să-l deschideți poate fi pur și simplu deteriorat. Apoi, cea mai bună soluție este să găsiți o nouă versiune sau să o descărcați din nou din aceeași sursă ca înainte (poate că din anumite motive în sesiunea anterioară descărcarea fișierului SMF nu a fost finalizată și nu poate fi deschis corect).

Vrei să ajuți?

Dacă aveți informații suplimentare despre extensia de fișier SMF, vă vom fi recunoscători dacă le veți partaja utilizatorilor site-ului nostru. Utilizați formularul oferit și trimiteți-ne informațiile dvs. despre fișierul SMF.