Kuidas .SMF-faili avada? Kuidas teisendada SMF-faili PDF-failiks Smf kuidas avada

Loodame, et aitasime teil SMF-faili probleemi lahendada. Kui te ei tea, kust saate meie loendist rakenduse alla laadida, klõpsake lingil (see on programmi nimi) - leiate täpsemat teavet selle kohta, kust vajaliku rakenduse ohutu installiversioon alla laadida. .

Selle lehe külastamine peaks aitama teil vastata konkreetselt järgmistele või sarnastele küsimustele:

  • Kuidas avada faili SMF-laiendiga?
  • Kuidas SMF-faili teise vormingusse teisendada?
  • Mis on SMF-failivormingu laiend?
  • Millised programmid toetavad SMF-faili?

Kui te pole pärast sellel saidil olevate asjade vaatamist ikka veel ühelegi ülaltoodud küsimusele rahuldavat vastust saanud, tähendab see, et siin esitatud teave SMF-faili kohta pole täielik. Võtke meiega ühendust kasutades kontaktivormi ja andke teada, millist teavet te ei leidnud.

Mis võib veel probleeme tekitada?

Põhjuseid, miks te SMF-faili ei saa avada, võib olla rohkem (mitte ainult sobiva rakenduse puudumine).
Esiteks- SMF-fail võib olla valesti lingitud (ühildumatu) selle toetamiseks installitud rakendusega. Sel juhul peate seda ühendust ise muutma. Selleks klõpsake hiire parema nupuga SMF-faili, mida soovite redigeerida, ja klõpsake valikul "Avamiseks" ja seejärel valige loendist installitud programm. Pärast sellist toimingut peaksid SMF-faili avamisega seotud probleemid täielikult kaduma.
Teiseks- fail, mida soovite avada, võib olla lihtsalt rikutud. Seejärel on parim lahendus leida uus versioon või laadida see uuesti samast allikast nagu varem (võib-olla ei olnud eelmisel seansil SMF-faili allalaadimine mingil põhjusel lõppenud ja seda ei saa korralikult avada).

Kas sa tahad aidata?

Kui teil on SMF-faililaiendi kohta lisateavet, oleme tänulikud, kui jagate seda meie saidi kasutajatega. Kasutage pakutavat vormi ja saatke meile oma teave SMF-faili kohta.

Kui teie arvutis on viirusetõrjeprogramm saab skannida kõiki arvutis olevaid faile ja ka iga faili eraldi. Saate skannida mis tahes faili, paremklõpsates failil ja valides faili viiruste kontrollimiseks sobiva valiku.

Näiteks sellel joonisel fail minu-fail.smf, siis peate sellel failil paremklõpsama ja valige failimenüüst suvand "skanni AVG-ga". Selle valiku valimine avab AVG Antivirus ja kontrollib faili viiruste suhtes.


Mõnikord võib viga tuleneda sellest tarkvara vale installimine, mis võib olla tingitud installiprotsessi käigus ilmnenud probleemist. See võib teie operatsioonisüsteemi häirida siduda oma SMF-fail õige tarkvararakendusega, mõjutades nn "faililaiendi seosed".

Mõnikord lihtne apache openoffice uuesti installimine võib teie probleemi lahendada, lingides SMF-i õigesti Apache OpenOffice'iga. Muudel juhtudel võivad failiühenduse probleemid tuleneda sellest halb tarkvara programmeerimine arendaja ja peate võib-olla edasise abi saamiseks arendajaga ühendust võtma.


Nõuanne: Proovige Apache OpenOffice'i värskendada uusimale versioonile, et veenduda, et teil on uusimad parandused ja värskendused.


See võib tunduda liiga ilmne, kuid sageli SMF-fail ise võib probleemi põhjustada. Kui saite faili meilimanuse kaudu või laadisite selle veebisaidilt alla ja allalaadimisprotsess katkes (näiteks elektrikatkestuse või muu põhjuse tõttu), fail võib olla rikutud. Võimalusel proovige hankida SMF-failist uus koopia ja proovige see uuesti avada.


Hoolikalt: Rikutud fail võib põhjustada täiendavat kahju teie arvuti varasemale või olemasolevale pahavarale, mistõttu on oluline hoida oma arvuti ajakohase viirusetõrjega kursis.


Kui teie SMF-fail mis on seotud teie arvuti riistvaraga vajaliku faili avamiseks värskendage seadme draivereid seotud selle seadmega.

See probleem tavaliselt seotud meediumifailitüüpidega, mis sõltuvad näiteks arvuti sees oleva riistvara edukast avamisest, helikaart või videokaart. Näiteks kui proovite avada helifaili, kuid ei saa seda avada, peate võib-olla seda tegema värskendage helikaardi draivereid.


Nõuanne: Kui proovite SMF-faili avada, saate .SYS-failiga seotud veateade, võib probleem tõenäoliselt olla mis on seotud rikutud või aegunud seadmedraiveritega mida tuleb uuendada. Seda protsessi saab hõlbustada draiveri värskendustarkvara (nt DriverDoc) abil.


Kui sammud probleemi ei lahendanud ja teil on endiselt probleeme SMF-failide avamisega, selle põhjuseks võib olla saadaolevate süsteemiressursside puudumine. Mõned SMF-failide versioonid võivad teie arvutis korralikult avamiseks nõuda märkimisväärsel hulgal ressursse (nt mälu/RAM, töötlemisvõimsus). See probleem on üsna tavaline, kui kasutate korraga üsna vana arvuti riistvara ja palju uuemat operatsioonisüsteemi.

See probleem võib ilmneda siis, kui arvutil on ülesande täitmisega raskusi, kuna operatsioonisüsteem (ja muud taustal töötavad teenused) võivad kulutab SMF-faili avamiseks liiga palju ressursse. Enne StarMath Formula File avamist proovige sulgeda kõik arvutis olevad rakendused. Vabastades arvutis kõik saadaolevad ressursid, tagate parimad tingimused SMF-faili avamiseks.


Kui sa lõpetanud kõik ülaltoodud sammud ja teie SMF-fail ikka ei avane, peate võib-olla käivitama riistvara uuendamine. Enamikul juhtudel võib isegi vanemate riistvaraversioonide puhul töötlusvõimsusest enamiku kasutajarakenduste jaoks siiski enam kui piisav olla (kui te just ei tee palju protsessorimahukat tööd, nagu 3D-renderdamine, finants-/teadusmodelleerimine või meediamahukas töö ) . Sellel viisil, tõenäoliselt pole teie arvutil piisavalt mälu(sagedamini nimetatakse seda "RAM" või RAM), et täita faili avamise ülesannet.

Pealkiri (inglise keeles): Standardne MIDI-fail

Pealkiri (vene keeles): SMF MIDI-fail

Arendaja: teadmata

Kirjeldus: SMF, tuntud ka kui StarMathi valemifail, on StarMathi valemivorming. SMF-vormingu töötas välja tuntud tarkvarafirma Oracle. Kasutatakse matemaatiliste valemite salvestamiseks, säilitades samas avaldiste vormingu ja süntaksi. SMF-vormingus failid on loodud OpenOffice'i kontorirakenduse vanade versioonidega, redaktori uutes versioonides on SMF asendatud ODF-vorminguga. Samas toetatakse ka vana SMF-vormingut. Lisaks OpenOffice'ile saab StarMath Formula dokumentide vaatamiseks kasutada ka teist tasuta kontoripaketti LibreOffice.

Vorming 2

Pealkiri (inglise keeles): StarMathi valemifail

Pealkiri (vene keeles): StarMathi valem

Arendaja: Oraakel

Kirjeldus: SMF või standardne MIDI-fail on SMF-i midi-failivorming. See vorming loodi spetsiaalselt heli salvestamiseks, mis on salvestatud sekvenseriga, mis on spetsiaalne riistvaraseade, mis on loodud muusikaliste kompositsioonide salvestamiseks ja taasesitamiseks. Selline salvestis ei sisalda tegelikke heliandmeid, see on nootide ja nende esitamisomaduste kogum. Samuti võib sekvenser olla programm, millel on sama eesmärk kui riistvaramoodulil. SMF-fail sisaldab vihjeid, markereid, tempoandmeid, muusikalisi vihjeid, MIDI-sõnumeid ja muud teavet. SMF-vormingus esitamiseks kasutage Apple QuickTime Playerit.

Selles vormingus faili avamiseks (redigeerimiseks) saate kasutada järgmisi programme:

Formaat 3

Pealkiri (inglise keeles): Serifi metafail

Pealkiri (vene keeles): Serifi vektorpilt

Arendaja: Serif

Kirjeldus: SMF ehk Serif Metafile on Serifi enda vektorkujutise failivorming. Formaadi töötas välja Inglise firma Serif, mis toodab selliseid tuntud tarkvaratooteid nagu PagePlus, DrawPlus, MoviePlus, PhotoPlus ja WebPlus. Serifi tooteid kasutatakse raster- ja vektorgraafika, video, aga ka veebidisaini ja küljenduse tööks. SMF-fail on vektorkujutis, mis sisaldab täiteid, ridu ja tekstiteavet, mida kasutatakse andmevahetuseks teiste Serifi programmide vahel.

- Laiend (vorming) on ​​märgid faili lõpus pärast viimast punkti.
- Arvuti määrab failitüübi täpselt laienduse järgi.
- Vaikimisi ei näita Windows failinimelaiendeid.
- Mõnda tähemärki ei saa failinimes ja laiendis kasutada.
- Kõik vormingud ei ole seotud sama programmiga.
- Allpool on kõik programmid, millega saate SMF-faili avada.

WavePad Audio Editor on kasulik heliredaktor, millel on palju kasulikke funktsioone. Utiliit võimaldab salvestada, redigeerida heliradasid, häält ja muid helisalvestisi. Helifailide töötlemisel saate muusikapala või helisalvestise osi lõigata, kopeerida või kleepida. Võimaldab lisada efekte (kaja, mürasummutus, müravõimendus). WavePad Audio Editor sobib professionaalsetele heliinseneridele. Utiliidi abil saate hõlpsalt oma rada salvestada. Toetab diskreetimissagedusi 6 kuni 96 kHz, ka stereo ja mono. Lisaks põhifunktsioonidele saab rakendus salvestada kirjeid, teisaldada need valitud ...

MIDI-protokolli üksikasjalikult kirjeldavate artiklite seeria viies osa.

Üks kolmest MIDI-protokolli komponendist on andmesalvestusvormingu spetsifikatsioon (tuletage meelde, et ülejäänud kaks komponenti on sõnumivorming ja riistvaraliidese spetsifikatsioon). Sõnumivormingust oli juttu tsükli kolmes esimeses artiklis, nüüd on käes salvestusvormingu aeg. Selle pakkus välja MMA organisatsioon 1987. aasta lõpus ja see kandis nime "Standard MIDI Files" (Standard MIDI Files, SMF).

MIDI-failide eesmärk on võimaldada sündmuste (st ajatempliga MIDI-sõnumite) vahetamist erinevate seadmete ja programmide vahel. Enne standardsete MIDI-failide tulekut ei saanud ühes sekventeris koostatud seadet vormingu mitteühilduvuse tõttu teise laadida. Ei saa öelda, et SMF-i tulekuga läksid kõik sekvenseritootjad sellele vormingule üle. Sellel on mitu põhjust ja neist räägime ka täna.

Kuna info salvestamine on otseselt seotud sekveneerijate ülesehitusega, siis peatume sellel teemal pikemalt, kuid ainult niivõrd, kuivõrd see on vajalik SMF-i mõistmiseks. Ja sekveneerijad, loomulikult, pühendame ühe järgmistest tsükli artiklitest.

Arengud
Kutsutakse välja ajatempliga MIDI-sõnum sündmus. Aja näitamiseks võib kasutada erinevaid ühikuid – linnukesed, sisemised impulsid, aeg SMPTE formaadis jne. Oluline on mõista sündmuse ja sõnumi põhimõttelist erinevust. Sõnum "elab" murdosa millisekundist reaalajas – hetkest, mil see allika poolt genereeritakse, kuni hetkeni, mil see jõuab vastuvõtjasse täitmiseks. Seda saab püüda MIDI-kaabli kaudu edastamise ajal impulsside komplektina. Sündmus on seadme mällu salvestatud paaribaidine info, mille alusel edaspidi, määratud ajal, genereeritakse teade.

Näiteks võib sekvenseri mällu salvestada "play not" sündmuse ajatempliga 100 ms alates taasesituse algusest. Seda sündmust saate redigeerida kahes dimensioonis: esiteks muuta MIDI-sõnumi enda parameetreid (antud juhul noodi kõrgust või dünaamikat) ja teiseks liigutada nooti mööda rada, st muuta sõnumi ajastust. sõnum.

MIDI-sõnumite salvestamise ajal ilmuvad sekvenseri mällu sündmused. Kui vajutate nuppu Record, lülitab sekvenser sisse riistvaralise impulsi generaatori (tiksud) ja hakkab "kuulama" määratud MIDI sisendit. Näiteks klahvi vajutamisel saab sisend teade "võta teadmiseks". Sekvenser vaatab - jah, teade tuli 20. linnukesega ja kirjutab mällu märgiga 20. Paari sekundi pärast vabastati võti - tuli teade "eemalda märge", sisemine generaator sel hetkel rõõmsalt lehvitas sekvenserile 64 puuki. Sekvenser salvestab sõnumi sildiga 64. Nüüd on meil tegemist kahe sündmusega - Note On ja Note Off. Taasesituse ajal lülitatakse impulsigeneraator uuesti sisse. Kui läheneb 20. linnuke, saadetakse sekvenseri MIDI väljundisse teade Note On, 64. linnuke – Note Off. Salvestasime ja seejärel reprodutseerisime esineja tegevused!

Ilmselgelt saab sama asja teha "offline" ehk siis ilma, et oleks vaja live-esinemist. Klõpsates hiirega rajal õiges kohas (ja valides eelnevalt noodi kestuse), ehitame sekvenseri mällu täpselt eelmise pildi.

Mälu tüübid
Nüüd on aeg rakendada kahte hirmutavat arvutiterminit: esmane ja sekundaarne mälu. Primaarne (ehk sisemine) mälu on sekventseri mälu, kuhu kirjutatakse teateid ja kuhu salvestatakse sündmusi kogu seansi jooksul. Selle mälu sisu lähtestatakse toite väljalülitamisel. See tõlgendus sobib rohkem riistvaralise järjestuse jaoks. Tarkvarasekvenaatorites on esmane mälu lihtsalt arvuti põhimälu. Primaarmälu sisu pikaajaliseks säilitamiseks kasutatakse sekundaarmälu ehk teisisõnu andmekandjaid. See võib olla diskett, kõvaketas, kiipkaart jms.

Riistvaraliste sekvenaatorite ja tööjaamade (meenutagem, tööjaam on ühes kastis toonigeneraator ja sekvenser) esmase mälu mahtu väljendatakse tavaliselt salvestatud nootide arvuna (näiteks 200 tuhat). Mõnikord väljendatakse helitugevust sündmustes, sel juhul peate olema valvel – ühe noodi salvestamiseks on vaja kahte sündmust (klahvi vajutamine ja vabastamine) ning pöörderatta või järelpuudutuse pööramine võib genereerida kuni 100 või enam sündmust. Juhtub, et sekvenseri mälumahtu väljendatakse natiivsetes arvutiühikutes - kilobaitides. Kuid see pole ka väga mugav - üks sündmus võib võtta erineva arvu baite (viiest kuni mitmekümneni).

Kaasaegsetes tarkvarajärjestajates hoolivad vähesed inimesed esmase mälu mahust - isegi 128 MB muutmäluga masinas võite MIDI-andmetega töötamisel unustada kõik piirangud. Lisaks on sekvensereid, mis suudavad esitada seadet otse kettalt, ilma seda esmasesse mällu laadimata (ja muide ka salvestamata), mis üldiselt hägustab kahe mälutüübi erinevust.

Sekundaarses mälus kirjutatakse andmed tavaliselt faili. Enamikul sekvenaatoritel on selle faili oma suletud vorming, mis muudab erinevates seadmetes või programmides loodud korralduste vahetamise keeruliseks. Varem räägiti, et see oli SMF-i loomise peamine põhjus.

Aja mõõtmine
Tegelikult ei ole sekvenseri sees ühtegi "puuki". Seal on riistvarataimer, mis genereerib impulsse rangelt konstantse sagedusega (näiteks iga mikrosekundi järel). Muusikute sundimine aega mikrosekundites mõõtma oleks koletu pilkamine, nagu tõepoolest ka muudes reaalaja ühikutes (sekundites, minutites). Muusikud on harjunud mõtlema taktides ja taktides ning väljendama aega suhtelistes ühikutes (noodide kestustes) olenevalt hetketempost.

"Pole probleemi," vastasid tootjad, "las mõõdavad nii, nagu neile kõige paremini sobib." Ainult minimaalne mõõtühik ei saa olema mingi 32. kestus, vaid tinglikult võetud linnuke (ühik on veelgi väiksem, nii et näiteks üks kolmkümmend sekundit võib sisaldada 48 linnukest). Kuna klassikalisest ajast peale on tempot mõõdetud veerandite arvuga minutis (BPM, lööki minutis), siis otsustati põhikestvuseks võtta veerand ja näidata puukide arv kvartalis – PPQN (Pulse Per). Kvartali märkus). Mida suurem on PPQN, seda parem on sekventseri eraldusvõime ja seda täpsemini ajas suudab see salvestamise ajal sõnumeid püüda ja taasesituse ajal MIDI väljundisse väljastada. Enamik sekvensereid võimaldab PPQN-i suvaliselt seadistada – näiteks 32–1536 märki kvartalis (kaasaegsed sekvenserid – kuni 15360 PPQN-i).

Tikk on temposõltuv ühik: mida kiirem on tempo, seda lühem on tikkide vaheline intervall reaalajas ühikutes. Selle intervalli leiate joonisel fig. üks.

Näiteks tempo 120 BPM ja eraldusvõimega 96 PPQN on tiksumised iga 5,208 millisekundi järel. Sama eraldusvõime ja tempo 180 BPM korral väheneb tiksumiste vaheline intervall 3,472 ms-ni. Kuidas sekvenser loeb puuke, kui selle sisemine taimer pulseerib iga mikrosekundi tagant? Jah, väga lihtsalt: hetketempo ja resolutsiooni alusel veerandis täpselt etteantud valemi järgi. Kuna ühes millisekundis on 1000 mikrosekundit, siis viimases näites genereerib sekventseerija teise linnukese, kui saab taimerilt 3472 impulssi.

Kui kõrgel eraldusvõimel pole mõtet
Kui sekvenser ja toonigeneraator on "ühe katuse all" (tööjaam või arvuti, mille helikaardil on tarkvaraline sekvenser ja süntesaator või siis virtuaalne süntesaator), siis võib sellise süsteemi sisemine eraldusvõime olla meelevaldselt suur ( number 15360 PPQN on muljetavaldav). See võimaldab MIDI- ja heliandmete sünkroonimist näidistäpsusega. Aga niipea, kui ühendame sekvenseri ja toonigeneraatori MIDI-kaabliga MIDI-liidese kaudu, pole kõrge eraldusvõime enam oluline.

Miks? Tuletan meelde, et üks bait edastatakse MIDI-liidese kaudu 320 mikrosekundi jooksul. Ja see tähendab, et näiteks teade märkme tegemise kohta (mis koosneb kolmest baidist) edastatakse 960 μs ehk peaaegu terve millisekundi. Kujutagem nüüd ette, et sekvenserisse on programmeeritud kaks nooti kiirusel 120 BPM ja 2048 PPQN, kusjuures intervall on kaks linnukest. Reaalajas on see 488 mikrosekundit. Niisiis: toonigeneraator ei saa teist nooti vastu võtta 488 mikrosekundit pärast esimest, kuid tegelikkuses - alles 960 mikrosekundi pärast. Nii et ta teostab selle mitte kahe, vaid peaaegu nelja linnukese pärast.

Siit järeldus: MIDI-liidese kaudu töötades (kui sekvenser ja toonigeneraator on üksteisest eemal), ei ole enam kui ühe linnukese eraldusvõimel 960 mikrosekundi kohta mõtet. Et teada saada, kui palju see PPQN-is on, võite kasutada joonisel fig. 2.

Tabelis joonisel fig. 3 erinevate määrade jaoks näitab PPQN väärtusi, mida on mõttetu ületada.

Sündmuse asukoht ajajoonlaual määratakse sekventseris, tavaliselt formaadis "takid: taktid: tiksud", näiteks 22:3:152. See tähendab: kahekümne teine ​​takt, kolmas löök, 152. linnuke kolmanda löögi algusest. Sarnast ajastuse põhimõtet (ingliskeelne termin - Timebase) nimetatakse muusikaliseks (muusikaliseks), kuna see on muusikutele tuttav ja mugav. Pange tähele, et selles vormingus töötamiseks peate teadma praegust kellaaega. See tähendab, mitu lööki latt sisaldab ja millega iga löök on võrdne.

Seega on 4/4 aja löök võrdne veerandiga ja mõõt sisaldab nelja lööki. Eraldusvõimega 384 PPQN on ühes taktis 384 puuki ja igas ribas vastavalt 1536 puuki (384 x 4). Kui taktimõõt on 6/8 ja sama eraldusvõime, siis on 192 tikki löögi kohta (kaheksandik on pool veerandnoodi pikkusest) ja kuus lööki takti kohta ehk 1152 tikki (192 x 6). Seega kirje 22:3:152 tähendab esimesel juhul 35096 puuki loo algusest (22 x 1536 + 3 x 384 + 152) ja teisel juhul - 26072 linnukest (22 x 1152 + 3 x 192 + 152).

Seega, et määrata sündmuse asukoht reaalajas ühikutes vormingu "tulbad: löögid: puugid" alusel, peate teadma kolme parameetrit: praegune tempo, taktimõõtur ja eraldusvõime kvartali kohta (PPQN).

Aja lugemiseks on veel üks võimalus, kui sündmuse asukohta rajal väljendatakse absoluutühikutes, mis ei sõltu tempost, kõige sagedamini SMPTE ajavormingus - "tunnid: minutid: sekundid: kaadrid". Seda ajastamise põhimõtet nimetatakse "ajakoodipõhiseks" (ajakoodil põhinev, absoluutne). Vajadus selle järele tekib siis, kui sekvenser töötab koos magnetofoniga või filmi-/videotehnikaga. Filmi-, video- ja helimaterjaliga montaažioperatsioone, salvestuse alguse ja lõpu positsioonide märkimist on mugavam teha, olles seotud absoluutskaalaga, mitte mõõtude ja löökidega.

Sel juhul sõltub sündmuse koordinaat ajajoonlaual hetketempost. Nii et 120 BPM juures võib teise takti esimese löögi SMPTE aeg olla 00:00:02:00 ja 60 BPM korral 00:00:04:00. Kui sündmus asub kaadri sees (sekundite vahel), erineb ka selle koordinaat erinevate kaadrivormingute puhul (kaadrite arv sekundis). Lisateavet SMPTE ja MIDI ajakoodi kohta saate lugeda sarja eelmisest artiklist.

Muudetavad pikkused
Piisavalt lüürilistest kõrvalepõikest, nüüd on meie ülesandeks välja mõelda andmete salvestamise formaat. Ja esimene raskus, millega SMF-i arendajad silmitsi seisid, oli sündmuse aja säästmine.

Siin on kaks võimalust: salvestada iga sündmuse jaoks aeg loo algusest või viimasest sündmusest enne seda (samal kanalil). Esimene variant ei ole aga ratsionaalne, sest enamasti on sündmuste vahe väike, naabersündmuste täitmise ajad on üksteisele lähedased. Niisiis, kolmest noodist koosnevas lõigus võib esimese aeg olla näiteks 22:3:152, teise 22:3:244 ja kolmanda 22:3:288. Nende numbrite (loo algusest peale linnuketeks teisendatuna) salvestamiseks peate reserveerima igaüks vähemalt neli baiti. Kui minna teist teed, siis saab kolme suure numbri asemel salvestada ühe suure stardinumbri (22:3:152), millele järgneb kaks väikest, linnukese vahe esimese ja teise ning teise ja kolmanda vahel. märkmed (antud juhul 92 ja 44), piisab neile ühest baidist. Kuid ikkagi jääb probleem alles: olenevalt sündmusest peate aja säästmiseks eraldama erineva arvu baite.

Kui SMF-i arendataks praegu (ja isegi Microsofti poolt, kes üldiselt oma failide suurusest ja vajalikust mälust vähe hoolib), jäetaks see probleem silma kinni. Aja säästmiseks eraldasime fikseeritud välja, näiteks 8 baiti sündmuse kohta, ega kannatanud. 1988. aastal oli aga esmane (RAM) mälu väga kallis, iga bait luges ja sekundaarmälu (kettakandja) oli väga tagasihoidlikult. Seetõttu soovisid SMF-i arendajad saada võimalikult kompaktse vormingu.

Otsustati alles jätta delta aeg, ehk selle sündmuse ja eelmise (või laulu alguse) puukide erinevus. Näiteks kui esimene sündmus - noodi C löömine esimesele oktaavile - toimus hetkel 40 tikku loo algusest, siis on selle deltaaeg 40. Kui nooti F mängitakse pärast nelja tikkimist, siis selle deltaaeg on 4. Kui kaks sündmust toimuvad samaaegselt, määratakse ühele neist deltaaeg, mis võrdub nulliga. Kui sündmus leiab aset täpselt loo alguses, on sellel ka deltaaeg null. Järgmine sündmus võib aga juhtuda pooleteise tunni pärast (st pärast mitut miljonit puuki). Kuidas sel juhul olla? Lõppude lõpuks tuleb mälu säästa ja deltaaja jaoks pole soovitav eraldada mitme baidi fikseeritud välja.

Niinimetatud muutuva pikkusega kogused. Need pakuvad mugavat viisi täisarvude kirjutamiseks, alates väikseimast kuni suurimani, ilma et peaksite numbri jaoks fikseeritud arvu baite kõrvale panema. Algnumbri bitid on pakitud ühte või mitmesse baiti: igal baidil on seitse bitti (paremal bitid 0 kuni 6). Kõige olulisem bitt baidis on teenus; kõik seeria baidid, välja arvatud viimane, peavad sisaldama ühte, viimane - null. Mitmed pakendinäited on näidatud joonisel fig. 4.

Näiteks soovite pakkida numbri 64 (kuueteistkümnendsüsteem 0x40) muutuva pikkusega vormingusse. Binaarses vormis kirjutatakse see arv 0100 0000. Olulisi bitte on vaid seitse, nii et see arv pakitakse ühte baiti muutmata kujul - 0100 0000 (see on ka seeria viimane bait), kõige olulisem bitt on 0.

Nüüd on number 128 (0x80). Binaarses vormis kirjutatakse see 1000 0000. Olulisi bitte on kaheksa, nii et kõik ei mahu ühte baiti, peate selle kaheks jagama. Esimesel baidil peab kõrges bitis olema üks, teises (kui seeria viimases baidis) peab olema null. Teise baiti paneme algarvu seitse vähima tähtsusega bitti, selgub 0 000 0000. Ülejäänud üks bitt (üks) asetatakse esimesest baidist paremale poole - selgub 1000 0001. , kirjutatakse arv 0x80 kahe baidina: 0x81 0x00. Lahtipakkimine on väga lihtne. Me ei tea ette, mitu baiti ühes jadas on. Loeme esimest baiti - 1000 0001. Kõrge teenindusbitt (1) näitab, et see pole seeria viimane bait, baite on rohkem. Loobume teenindusüksusest, seitse bitti jääb alles - 000 0001. Loeme teist baiti - 0000 0000. Kõrge teenindusbitt (0) näitab, et see on seeria viimane bait (st baiti on ainult kaks baiti). seeria). Me loobume teenindusbitist. Jäänud on ka seitse bitti - 000 0000. Lisame neile vasakule esimesest baidist eraldatud seitse bitti, saame 000 0001 000 0000. Kui esimesed kuus nulli ära visata, saame soovitud arvu 1000 0000 (0x80) .

Seega võimaldab muutuva pikkusega väärtuste meetod eraldada erinevatele numbritele erineva arvu baite: numbrite jaoks vahemikus 0 kuni 127 - üks bait, 128 kuni 16383 - kaks baiti jne. Maksimaalne arv, mida sel viisil esitada saab, ei ole põhimõtteliselt piiratud. Kuid SMF-is on jooksu pikkus piiratud nelja baidiga (kolm on seatud kõige olulisema bitiga ja üks lõpeb nulliga). Selle tulemusena võib maksimaalne deltaaeg olla 0x0FFFFFFFF (või 268 435 455 puuki), mis 500 BPM ja 96 PPQN juures on umbes neli päeva. Rohkem kui küll!

Muutuva pikkusega väärtuste kujul määrab SMF mitte ainult deltaaja, vaid ka mõne sündmuse pikkuse.

Failivahetusvorming (IFF)
Standardse MIDI-faili struktuur on peaaegu täielikult laenatud vormingust IFF (Interchange File Format), mille töötas välja 1985. aastal Electronic Arts. See on andmete salvestamise ja vahetamise formaat, mis on ligemale paarkümmend aastat nii kasutajate kui ka tarkvaraarendajate elu lihtsamaks teinud. Electronic Arts ei pakkunud mitte ainult avatud lähtekoodiga dokumentatsiooni, vaid ka C-lähtekoodi IFF-failide lugemiseks ja kirjutamiseks.

IFF-vorming on tagasiühilduv ja laiendatav. Esimene tähendab, et programmi uus versioon suudab hõlpsasti lugeda eelmise versiooniga loodud faile. Teiseks, lisateabe salvestamiseks pole vaja uut vormingut leiutada, piisab oma laienduse tutvustamisest IFF-is. Formaadi ülesehitus võimaldab erinevate tootjate programmidel omavahel vahetada andmeid, millel puuduvad vastavad ärilepingud. Kõik see rõõmustab ka kasutajaid – olles salvestanud andmed IFF-vormingus, ei ole nad enam aheldatud oma süsteemi suletud vormingusse ning saavad andmeid kasutada igas IFF-iga ühilduvas riist- ja tarkvarakeskkonnas.

IFF-fail on andmete kogum, mis on korraldatud nii, et erinevad sõltumatud programmid saavad seda lugeda. Teisest küljest võib programm salvestada IFF-is spetsiifilist teavet, mis on mõttekas ainult tema enda jaoks. IFF-i struktuur teeb selle lihtsaks. Teised programmid, mis ei tea, kuidas sellist teavet käsitleda, võivad seda ignoreerida, ilma et see mõjutaks põhisisu lugemist.

IFF-faile on mitut tüüpi. Näiteks ILBM- ja GIFF-failid sisaldavad graafilist teavet, SMUS-failid noodimärke, AIFF- ja WAVE-failid digitaalheli.

IFF-fail koosneb sama tüüpi elementidest, mida nimetatakse plokkideks (tükkideks). Plokk on andmestruktuur, mis koosneb tähe identifikaatorist (neli ASCII märki), ploki suurusest (neli baiti) ja andmetest endast (joonis 5). Mugav on mõelda plokist kui kestast, millesse andmed on "mähitud". Andmed ise võivad sisaldada kõike: graafikat, teksti, animatsiooni, heli, 3D-objektide komplekti jne.

IFF-failis olevaid plokke saab pesastada, joon. 6. Tegelikult pole IFF-fail midagi muud kui tipptaseme plokk, mis sisaldab endas üht või mitut muud plokki. Selline andmete salvestamise põhimõte võimaldab faili "pakkida" mitu heterogeenset teavet, sealhulgas mitu IFF-faili, mis juba sarnaneb faili sees oleva failisüsteemiga. Tõsi, pesastatud andmekorraldusel on üks puudus - faili on raske tõlgendada, sellest plokke eraldada.

Enamik IFF-faile sisaldab tipptaseme plokki identifikaatoriga "FORM". See sisaldab muid plokke (joonis 7). Ainsad andmed FORM-i plokis on neli baiti, mis kirjeldavad failitüüpi (nt "ILBM", InterLeaved Bit Map). Pesastatud plokid asetatakse otse nende taha, näiteks "BMHD" (pildi päis), "CMAP" (palett) ja "BODY" (pikslid ise). Plokkide nimed ja andmevorming tulevad välja konkreetse failitüübi arendajaga. Teised programmid, kui nad satuvad võõra nimega plokki, võivad selle ohutult vahele jätta, juhindudes ploki pikkust sisaldavast väljast.

Kõik IFF-failide arvandmed salvestatakse suures järjekorras, see tähendab, et kõigepealt salvestatakse numbri kõige olulisem bait (MSB), seejärel kõige vähem oluline. Rohkem selle kohta külgribal. Failisisesed plokid peavad alati algama paarisbaidiga. Kui eelmine plokk sisaldab paaritu arvu baite, täidetakse see nullbaidiga, et see oleks paaris.

Millise otsa päästa?
Arvuti mälu koosneb rakkudest, millest igaüks mahub täpselt ühe baidi. Lahtrisse pääsemiseks (baidi kirjutamiseks või lugemiseks) kasutab protsessor nn aadress meeles. See on lihtsalt täisarv, mille operatsioonisüsteem on lahtrile määranud (kas arvutiteadlased andestavad mulle selle lihtsustamise). Reaalses elus ühest baidist tavaliselt ei piisa. Isegi täisarvude salvestamiseks kasutatakse sõnu ehk kahebaidiseid rühmi, kahe- või neljakordseid sõnu (vastavalt neli või kaheksa baiti, vt täpsemalt tsükli esimesest osast). See tähendab, et arv on salvestatud mitmesse kõrvutisse baiti.

Joonisel fig. 8 on toodud kaks võimalikku viisi nende mällu paigutamiseks topeltsõna näitel. Esimene viis - baidid salvestatakse mällu järjestikku, kõrgeim bait madalaimal aadressil. See tähendab, et kõrge sõna MSB salvestatakse aadressil N, seejärel kõrge sõna LSB (N + 1), madala sõna MSB (N + 2), madala sõna LSB (N + 3). Sellist meetodit nimetatakse suur-endian(või "otsene baitide eraldamine"). Teise meetodi puhul on kõik täpselt vastupidine, kõrge bait salvestatakse kõrgeimale aadressile: madala sõna LSB (N), madala sõna MSB (N + 1), kõrge sõna LSB (N + 2). ), kõrge sõna MSB (N + 3) . Seda meetodit nimetatakse väike-endian- "vastupidine baitide eraldamine".

See tähendab, et erinevus seisneb selles, et "millest otsast" (otsast) mitmebaidine väärtus salvestatakse. Terminid "suur-endian" ja "väike-endian" pakuti välja ühes selleteemalises artiklis, viidates Jonathan Swifti raamatule "Gulliveri seiklused". Teatavasti tekkis Lilliputis Big-Endiaanide liikumine, kes ei tahtnud täita keisri määrust, mis käskis keedumune murda ainult teravast otsast. Arvutimaailmas näeb big/little-endian vastasseis välja väga sarnane.

Little endian pooldajad väidavad, et mälu lõpp muudab mitmebaidiliste väärtuste aritmeetika tegemise lihtsamaks, kuna esimesena lisatud kõige vähem olulised baidid salvestatakse madalatele aadressidele.

Väikest skeemi kasutatakse Inteliga ühilduvates protsessorites alates Intel 8080-st kuni Intel Pentium IV-ni. Otsene paigutus (suurepärane) – Sun Sparki protsessorites, Motorola 68000 (varajane Apple'i arvutite sari) ja paljudes RISC-protsessorites. Kuid PowerPC ja Intel Itaniumi protsessorid mõistavad mõlemat andmevormingut korraga (neid nimetatakse mõnikord "bi-endianiks").

Tähtis pole aga mitte niivõrd see, kuidas arvuti andmeid "iseenese sisse" salvestab, vaid see, kuidas ta neid "väljapoole" failidesse salvestab. See on praktilisest seisukohast palju olulisem. Näiteks kui sõna "UNIX" salvestab faili suur-end-süsteem (kahe kahebaidise sõnana), loeb väike-end-süsteem seda kui "NUXI". Arvutižargoonis nimetatakse seda "NUXI probleemiks". Sarnased raskused võivad tekkida graafiliste piltide salvestamisel, kuna värvid on kodeeritud mitmebaidiliste numbritena. Näiteks Adobe Photoshop- ja JPEG-failid kasutavad big-endiani, GIF- ja BPM-failid aga little-endiani.

Platvormiväline standardne MIDI-failivorming (SMF) kasutab big-endiani meetodit, st esimesena salvestatakse sõna kõige olulisem bait (MSB).

SMF struktuur
Standardsed MIDI-failid, nagu IFF-failid, koosnevad plokkidest (tükkidest). On kahte tüüpi plokke: päise tükk ja rajatükk. SMF-failis võib olla ainult üks päiseplokk ja üks või mitu rajaplokki. Plokil on tüüpiline IFF struktuur: esimesed neli baiti on identifikaatoriks, järgmised neli baiti on ploki pikkus baitides, välja arvatud kaheksa tüüp/pikkusbaiti. Päiseploki identifikaator on neli "MThd" märki, rajaploki identifikaator on neli "MTrk" märki. See struktuur võimaldab tulevikus defineerida uusi plokitüüpe ja võõrast plokki saab selle pikkuse põhjal kergesti ignoreerida. SMF-i spetsifikatsioon hoiatab: "Programmid peaksid olema valmis ignoreerima selliste tüüpide plokke, mida nad ei tea."

Päiseplokk sisaldab üldist teavet faili kohta, rajaplokk sisaldab ajatemplitega MIDI-teadete voogu. Lisaks salvestatakse MIDI-faili sekvenaatorite jaoks vajalik lisainformatsioon: tempo, taktimõõtur, klahv, metronoomi seaded jms. Seda teavet ei edastata MIDI-liidese kaudu ja selle moodustavaid sündmusi nimetatakse metasündmusteks.

MIDI-fail algab alati päiseplokiga, millele järgneb üks või mitu rajaplokki (joonis 9). See tähendab, et iga standardne MIDI-fail algab nelja tähega "M", "T", "h", "d". See tähendab, et MIDI-fail ei vasta IFF-i spetsifikatsioonile (mis nõuab, et iga IFF-iga ühilduv fail algaks tipptasemel plokiga, mis on üks kolmest tüübist – "FORM", "CAT" või "LIST"). Erinevusi on teisigi: SMF ei tohi sisaldada pesastatud plokke ja ploki pikkus ei pea olema ühtlane. SMF-i teisendamine IFF-iga ühilduvaks failiks on aga lihtne. Piisab nullbaidise paaritu pikkusega plokkidega (kui neid on) polsterdamisest ja kogu sisu paigutamisest FORM-plokki. Sarnast toimingut kasutatakse Microsofti pakutud RMID-vormingus (vt külgriba).