Kuidas .SMF-faili avada? Kuidas smf-i avada? Avage smf-fail

Kas teil on probleeme .SMF-failide avamisega? Kogume teavet failivormingute kohta ja saame selgitada, mis on SMF-failid. Lisaks soovitame selliste failide avamiseks või teisendamiseks kõige sobivamaid programme.

Milleks .SMF-failivormingut kasutatakse?

Failinime laiend .smf kasutatakse peamiselt failitüübi "StarOffice Math 5.0 Formula" tähistusena ( .smf). Sel juhul fail .smf on binaarandmefail, mida kasutati StarOffice Math 5.0 redaktori loodud matemaatiliste valemite salvestamiseks Sun Microsystemsi varasema StarOffice'i kontorirakenduste komplekti osana. Seejärel sai StarOffice'ist Apache OpenOffice'i, LibreOffice'i ja muude avatud lähtekoodiga kontorikomplektide loomise aluseks. Hetkel valemifailid .smf saab avada või importida ainult OpenOffice'i/LibreOffice'i eelmiste versioonide (3.4.0 ja vanemad) valemiredaktoriga. OpenOffice'i/LibreOffice'i praegused versioonid toetavad StarOffice Math 5.0 valemeid ( .smf) on eemaldatud moodsa OpenDocument Formula (.odf) vormingu kasuks.

Lisaks laiendus .smf kasutatakse standardse MIDI-faili (SMF) vormingu tähistamiseks, mis on välja töötatud standardse viisina MIDI (Musical Instrument Digital Interface) andmete failidena vahetamiseks. Kuigi SMF-failide standardlaiend on .mid (ka .mid i), kasutatakse laiendit ka selliste failide identifikaatorina .smf. Fail .smf on igas mõttes sama mis .mid-fail. See sisaldab eelprogrammeeritud ajatempliga MIDI-sündmusi: noodi esitamine, eriefektide sisselülitamine, kanali vahetamine jne. Standardsed MIDI-failid (.mid, .smf) saab tavaliselt avada ja mängida kõigi MIDI-ühilduvate muusikariistade ja rakendustega.

Teine laiendiga seotud failitüüp .smf, on tüüp "Mälufail SIGMA DATA CENTER" ( .smf). Sarnased failid ( .smf) on loodud ettevõtte SIGMA SPORT Vertriebs GmbH patenteeritud tarkvara SIGMA DATA CENTER abil, eraldades andmeid kaasaskantavatest treeningsalvestitest, nagu SIGMA ROX 9.0. SIGMA mälufail ( .smf) vastab ühele treeningule, mis salvestatakse SIGMA seadmega ja suletakse käsitsi, kuni seade sünkroonitakse dokkimisjaama kasutades programmiga SIGMA DATA CENTER. See fail salvestab marsruudid, rajad, laadimisandmed ja muud treeningu omadused patenteeritud binaarvormingus. Arvutisse installimise ajal loob SIGMA DATA CENTER failitüübi jaoks oma seose .smf.

Laiendus .smf viitab ka patenteeritud Serif Metafile Format (SMF), mille Serif on välja töötanud graafikaandmete vahetamiseks oma kaubanduslike tarkvaratoodete WebPlus, PagePlus ja DrawPlus vahel. Sarnaselt Windowsi metafailiga (.wmf) on fail .smf sisaldab kadudeta kodeeritud raster- ja/või vektorkujutist, mis on salvestatud sisemises Serifi vormingus. SMF-metafaile saab avada või importida ainult Serifi tarkvara abil.

Lisaks laiendus .smf kuulub failitüüpi Spicer Document ( .smf) ja tähistab Spicer Corp. välja töötatud patenteeritud failivormingut. kommertsettevõtte sisuhalduslahenduse Imagenation jaoks. Fail .smf on mitmeleheküljeline dokument, mis võib sisaldada mitmesuguseid sõltumatuid, kuid omavahel seotud graafilisi, teksti- ja komposiitkihte (nt CAD) erinevates Imagenationi toetatud vormingutes. Sarnased dokumendid ( .smf) saab avada ainult Imagenationi abil.

Autodeski võimsa kaubandusliku 3D modelleerimis- ja disainitööriista kontekstis on Autodesk 3ds Max laiendus .smf tähistab Autodesk Shared Motion Flow failitüüpi/vormingut. .smf). SMF-vormingut kasutatakse identsetele kahejalgsetele mudelitele määratud liikumiskirjelduste koos salvestamiseks rakenduses Autodesk 3ds Max animatsiooni ajal.

Altera Corporationi Quartus II välja programmeeritava süsteemi kujundamise (SOPC) tööriist kasutab laiendust .smf tähisena failitüübile „State Machine File” (State Machine File, .smf). Sarnane fail .smf on ASCII tekstidokument, mis kirjeldab olekumasinaid, mis on loodud Quartus II keskkonnas State Machine Editori abil. Lõpliku olekuga masinate kirjeldused ( .smf) saab teisendada Verilog (.v) ja VHDL (.vhd) projektideks.

Osana Appspeed Software'i tasulisest C/C SkinMagic teemateegist kasutati laiendust failitüübi/vormingu "SkinMagic File" jaoks ( .smf). Failis .smf SkinMagic graafilise liidese disainiteema andmed (bitmap-pildid, liideseelementide määramise tabel jne) salvestati binaarsel kujul. Neid teemasid saab avada otse SkinMagic tarkvara SkinMagicBuilder tööriista abil.

Programmid SMF-failide avamiseks või teisendamiseks

SMF-faile saate avada järgmiste programmidega: 

Pealkiri (inglise keeles): Standardne MIDI-fail

Nimi (vene): MIDI SMF-fail

Arendaja: Tundmatu

Kirjeldus: SMF, tuntud ka kui StarMath Formula File, on StarMathi valemivorming. SMF-vormingu töötas välja kuulus tarkvarafirma Oracle. Kasutatakse matemaatiliste valemite salvestamiseks, säilitades samal ajal avaldiste vormingu ja süntaksi. SMF-vormingus failid on loodud OpenOffice'i kontorirakenduse vanemate versioonidega, redaktori uutes versioonides asendatakse SMF-vormingus ODF-vorming. Samas toetatakse ka vana SMF-vormingut. Lisaks OpenOffice'ile saate StarMath Formula dokumentide vaatamiseks kasutada teist tasuta kontorikomplekti LibreOffice.

Vorming 2

Pealkiri (inglise keeles): StarMathi valemifail

Nimi (vene): StarMathi valem

Arendaja: Oraakel

Kirjeldus: SMF või standardne MIDI-fail on SMF-i midi-failivorming. See vorming loodi spetsiaalselt sekvenseriga salvestatud heli salvestamiseks - spetsiaalse riistvaraseadmega, mis on loodud muusikaliste kompositsioonide salvestamiseks ja taasesitamiseks. Selline salvestis ei sisalda tegelikke heliandmeid, see on nootide ja nende esituse omaduste kogum. Sekvenser võib olla ka programm, millel on riistvaramooduliga sarnane eesmärk. SMF-fail sisaldab vihjeid, markereid, tempoandmeid, muusikaklahve, MIDI-sõnumeid ja muud teavet. SMF-vormingus esitamiseks peate kasutama Apple QuickTime Playerit.

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

Formaat 3

Pealkiri (inglise keeles): Serifi metafail

Nimi (vene): Serifi vektorpilt

Arendaja: Serif

Kirjeldus: SMF ehk Serif Metafile on Serifi natiivne vektorkujutise failivorming. Vormingu töötas välja Inglise firma Serif, kes toodab selliseid tuntud tarkvaratooteid nagu PagePlus, DrawPlus, MoviePlus, PhotoPlus ja WebPlus. Serifi tooteid kasutatakse raster- ja vektorgraafika, videoga töötamiseks, aga ka veebidisainis ja küljendus. SMF-fail on vektorkujutis, mis sisaldab täiteid, ridu ja tekstiteavet, mida kasutatakse andmete vahetamiseks teiste Serifi programmide vahel.


Tavaliselt kasutavad sekveneerijad seadete salvestamiseks oma vormingut. Seda seetõttu, et konkreetse programmi võimaluste jaoks loodud andmestruktuur on palju tõhusam ja sellega on lihtsalt lihtsam töötada. Saate salvestada oma vormingus täiendavaid andmeid, näiteks kasutajaliidese kohandamise kohta (akna asukoht ja suurus, font jne). Lisaks muutub ebamugavaks standardsete MIDI-failide kompaktsus (eriti muutuva pikkusega väärtused sündmuste toimumise aja salvestamiseks): paigutusega töötamiseks tuleb kõik failis olevad deltaajad "lahti pakkida". , ja faili salvestamisel uuesti “pakitud”.

Teisest küljest on SMF kaasaskantav platvormideülene vorming, milles saab määratleda mis tahes täiendavaid plokke konkreetsete andmete salvestamiseks. Näiteks võib üks sekveneerija salvestada metronoomi sisse- või väljalülitusoleku plokki nimega "Mtr". See plokk ei ole takistuseks teisele sekvenaatorile, see võib määratleda mitu oma spetsiifilist plokki samas failis. Nii et mõned sekvenaatorid kasutavad SMF-vormingut otse; Teised võimaldavad teil MIDI-faile importida ja eksportida vastavalt vajadusele.

Erinevat tüüpi sekvensserite ja muude seadmete toetamiseks on standardsed MIDI-failid jagatud kolme tüüpi või vormingusse: 0, 1 ja 2.

0-vormingus fail sisaldab ühte lugu, mis sisaldab sündmusi kõigist kuueteistkümnest MIDI-kanalist. See on andmevahetuse lihtsaim vorming, kuna see ei võta arvesse sekvenseris oleva algse raja struktuuri (milline rada millisele MIDI-kanalile on määratud). Failivorming 0 sobib rohkem andmete edastamiseks sellistesse seadmetesse nagu mikserid ja efektiprotsessorid kui korralduste salvestamiseks. Kui salvestate faili formaadis 0, liidab sekvenser lihtsalt kõik sõnumid kõikidelt MIDI-kanalitelt üheks looks. Vastavalt sellele saame faili laadimisel ühe raja, mille sündmuste redigeerimine on problemaatiline, kuna erinevate kanalite sündmused ristuvad üksteisega. Enamikul sekvenaatoritel on funktsioon jagada see "mix" eraldi lugudeks, millest igaüks sisaldab ühe MIDI-kanali sündmusi.

Failivorming 1 sisaldab iga MIDI-kanali jaoks eraldi lugu, mis peegeldab sekvenseri tuttavat paigutusstruktuuri. 2. vormingus fail sisaldab mitut sõltumatut teost (või täielikku mustrit), millest igaüks koosneb ühest rajast, mis sisaldab sõnumeid kõigil 16 kanalil. See formaat oli mõeldud kasutamiseks nendes sekventerites, mis suudavad töötada sõltumatute mustritega, mida esitavad samaaegselt mitmed instrumendid. Siiski ignoreeriti vormingut 2 laialdaselt ja nüüd peetakse seda spetsifikatsioonis "ei ole mõeldud sekvenaatoritele".

Üks peamisi erinevusi vormingute 0 ja 1 vahel on metasündmuste paigutamise viis. Vormingus 0 segatakse tempo ja taktisignaali metasündmused (nimetatakse tempokaardiks) teiste MIDI-sõnumitega. Lisaks sellele ei salvestata selles vormingus lugude nimesid. Vormingus 1 on faili esimene lugu pühendatud eranditult tempokaardile ja muudele metasündmustele, nagu jada/raja nimi, järjestuse number, marker, SMPTE nihe (vt allpool).

Kui failis pole tempokaarti, siis eeldatakse, et tempo on 120 BPM ja suurus on 4/4.

MMA võib tulevikus välja töötada muid SMF-vorminguid, et toetada sekvenaatorites uusi andmestruktuure.

Päiseplokk ("MThd")

Päiseplokk sisaldab põhiteavet faili kohta. Ploki struktuur on näidatud joonisel fig. 11. Pikkuse väli sisaldab alati numbrit 6 – vastavalt sellele väljale järgnevate päiseandmete baitide arvule. Päise andmed on kolm 16-bitist sõna. Esimene sõna (vorming) on ​​SMF-vorming, võib võtta ühe kolmest väärtusest - 0, 1 ja 2. Teine sõna (ntrks) on failis olevate rajaplokkide (st lugude endi) arv. 0-vormingus faili puhul on see alati võrdne ühega.

Päiseploki (jaotuse) viimane sõna määrab aja mõõtmise meetodi (ajabaasi). Nagu varem mainitud, on kaks võimalust: muusikaline (taktid/löögid) ja absoluutne (ajakoodipõhine), mis põhineb absoluutsel ajal SMPTE-vormingus. Igal juhul mõõdetakse deltaaega SMF-failis puukides: muusikalise meetodiga määratakse puukide arv kvartalis (st PPQN), absoluutmeetodiga määratakse puukide arv ühes SMPTE kaadris. . Kui jagamisvälja kõige olulisem (15.) bitt lähtestatakse nullile, kasutatakse muusikalist meetodit ja ülejäänud 15 bitti sisaldavad PPQN-i (kuni 32767), joon. 12. Kui kõige olulisemaks bitiks on seatud üks, siis kasutatakse absoluutmeetodit. Madal bait (bitid 0 kuni 7) salvestab linnukeste arvu kaadri kohta, kõrge bait (bitid 8 kuni 15) salvestab SMPTE kaadrivormingu, väljendatuna negatiivsetes väärtustes (-24, -25, -29, -30). ). Sel juhul vastab arv -29 30 kaadrit sekundis Drop Frame formaadile (vt sarja eelmist artiklit).

Negatiivsed arvud valiti seetõttu, et need on kirjutatud kahendarvulise komplemendi kujul (vt eelmist artiklit), see tähendab, et need sisaldavad ühte kõige olulisemas bitis. Ja see ühik on täpselt aja arvestamise absoluutse meetodi märk. Puukide arv kaadri kohta salvestatakse positiivse arvuna ja tavaliselt on see üks järgmistest väärtustest: 4 (eraldusvõime nagu MIDI ajakoodis, kus iga kaadri kohta on neli kvartalikaadri sõnumit), 8, 10, 80 (ühe eraldusvõime). bitti SMPTE kaadri kohta) või 100 .

See süsteem võimaldab teil määrata sündmuse absoluutse aja 1/128 kaadri täpsusega. Lisaks, kui seate kaadri vorminguks 25 kaadrit sekundis ja eraldusvõimeks 40 linnukest kaadri kohta, vastab iga linnuke ühele millisekundile. Jagamisvälja väärtus on sel juhul 0xE728, bait 0xE7 on kahe täiendis olev arv -25 ja 0x28 kuueteistkümnendsüsteemis arv 40.

Raja blokeerimine ("MTrk")

Palaplokk salvestab sündmused ise ehk ajatempliga MIDI-teated. Plokis peab olema vähemalt üks sündmus. Rajaploki struktuur on sama mis tahes vormingus (0, 1 ja 2) MIDI-failide puhul, joon. 13.

Sündmus koosneb deltaajast ja MIDI-teatest endast, joon. 14. Lubage mul teile meelde tuletada, et deltaaeg salvestatakse muutuva pikkusega väärtusena.

MIDI-protokolli üksikasjalikult kirjeldavate artiklite seeria viies osa.

Üks kolmest MIDI-protokolli komponendist on andmesalvestusvormingu spetsifikatsioon (tuletan meelde, et ülejäänud kaks komponenti on sõnumivorming ja riistvaraliidese spetsifikatsioon). Sõnumi vormingut käsitleti sarja esimeses kolmes artiklis, nüüd on aeg salvestusvormingu jaoks. Selle pakkus välja MMA organisatsioon 1987. aasta lõpus ja seda nimetati standardseteks MIDI-failideks (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 laadida teise ühildamatute vormingute tõttu. 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 teabe salvestamine on otseselt seotud sekvenserite disainiga, peatume sellel teemal üksikasjalikumalt, kuid ainult niivõrd, kui see on vajalik SMF-i mõistmiseks. Ja kahtlemata pühendame sarja ühe järgmistest artiklitest sekvenaatoritele.

Sündmused
Kutsutakse välja ajatempliga MIDI-sõnum sündmus. Aja märkimiseks 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 allikas selle genereerib, kuni hetkeni, mil see jõuab vastuvõtjasse täitmiseks. Seda saab püüda ülekande ajal MIDI-kaabli kaudu impulsside komplektina. Sündmus on seadme mällu salvestatud mõnebaidine info, mille alusel edaspidi genereeritakse määratud ajal teade.

Näiteks võib sekvenseri mällu salvestada märkmesündmuse ajatempliga 100 ms alates taasesituse algusest. Seda sündmust saate redigeerida kahes dimensioonis: esiteks muutke MIDI-sõnumi enda parameetreid (antud juhul noodi kõrgust või dünaamikat) ja teiseks liigutage nooti rada mööda, st muutke täitmisaega. sõnumist.

Sündmused ilmuvad sekvenseri mällu, kui MIDI-sõnumid salvestatakse. Kui vajutate nuppu Record, lülitab sekvenser sisse riistvaralise impulsi generaatori (tikstub) ja hakkab "kuulama" määratud MIDI-sisendit. Näiteks kui vajutate klahvi, on sisestussõnum "mängi nooti". Sekvenser vaatab - jah, teade saabus 20. linnukesega ja kirjutab selle mällu märgiga 20. Paari sekundi pärast vabastasid nad võtme - saabus teade “eemalda märge”, sisemine generaator sel hetkel lehvitas rõõmsalt sekvenserile 64 linnukesega. Sekvenser salvestab sõnumi sildiga 64. Nüüd on meil tegemist kahe sündmusega - Note On ja Note Off. Taasesituse ajal lülitub impulsigeneraator uuesti sisse. Kui läheneb 20. linnuke, saadetakse sekvenseri MIDI väljundisse teade Note On ja 64. linnukesele teade Note Off. Salvestasime ja seejärel esitasime esitaja tegevust!

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

Mälu tüübid
Nüüd on aeg kasutada kahte hirmutavat arvutiterminit: esmane ja sekundaarne mälu. Esmane (või sisemine) mälu on järjestusmälu, kuhu salvestatakse sõnumeid ja salvestatakse sündmusi kogu jooksu 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 RAM. Primaarmälu sisu pikaajaliseks salvestamiseks kasutatakse sekundaarset mälu või muul juhul andmekandjat. See võib olla diskett, kõvaketas, kiipkaart jne.

Riistvaraliste sekvenaatorite ja tööjaamade (tuletan meelde, tööjaam on toonigeneraator ja sekvenser ühes kastis) esmase mälu mahtu väljendatakse tavaliselt salvestatud nootide arvus (näiteks 200 tuhat). Mõnikord väljendub helitugevus sündmustes, sel juhul tuleb olla ettevaatlik – ühe noodi salvestamiseks on vaja kahte sündmust (klahvi vajutamine ja vabastamine) ning helikõrguse ratta või järelpuudutuse keeramine 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 eriti mugav - üks sündmus võib hõivata erineva arvu baite (viiest kuni mitmekümneni).

Kaasaegsetes tarkvarajärjestajates ei valmista primaarmälu maht kellelegi suurt muret – isegi 128 MB muutmäluga masinal võib MIDI andmetega töötades unustada igasugused piirangud. Lisaks on sekvensereid, mis suudavad esitada seadet otse kettalt, ilma seda esmasesse mällu laadimata (ja muide ka salvestada), mis üldiselt kustutab erinevuse kahe mälutüübi vahel.

Sekundaarses mälus kirjutatakse andmed tavaliselt faili. Enamikul sekvenaatoritel on selle faili jaoks 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.

Mõõtmisaeg
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 ka teistes 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 nad mõõdavad oma äranägemise järgi." Ainult minimaalseks mõõtühikuks ei saa olema mingi 32. kestus, vaid tinglikult võetud linnuke (ühik on veelgi väiksem, nii et näiteks üks kolmekümnesekundiline kestus võib sisaldada 48 linnukest). Kuna alates klassikalisest ajastust on tempot mõõdetud veerandite arvuga minutis (BPM, lööki minutis), otsustasime võtta peamiseks kestuseks veerandi ja märkida linnukeste arv kvartalis - PPQN (Pulse Per Quarter Note) . Mida suurem on PPQN, seda parem on sekventseri eraldusvõime ja seda täpsemalt suudab see salvestamise ajal sõnumeid ajastada ja taasesituse ajal MIDI-väljundisse väljastada. Enamik sekvensereid võimaldab PPQN-i suvaliselt seadistada – näiteks 32–1536 märki kvartalis (kaasaegsed sekveneerijad – kuni 15360 PPQN-i).

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

Näiteks tempo 120 BPM ja eraldusvõimega 96 PPQN korral toimub tiksumine iga 5,208 millisekundi järel. Sama eraldusvõime ja tempo 180 BPM korral väheneb tikkide vaheline intervall 3,472 ms-ni. Kuidas sekvenser loeb puuke, kui selle sisemine taimer pulseerib iga mikrosekundi tagant? Jah, see on väga lihtne: praeguse tempo ja veerandi eraldusvõime põhjal täpselt määratud valemi järgi. Kuna üks millisekund sisaldab 1000 mikrosekundit, genereerib järjestus viimases näites järgmise 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 virtuaalne süntesaator), siis võib sellise süsteemi sisemine eraldusvõime olla meelevaldselt suur (arv 15360 PPQN on muljetavaldav). See võimaldab MIDI- ja heliandmeid näidise täpsusega sünkroonida. Kuid niipea, kui ühendame sekvenseri ja toonigeneraatori MIDI-kaabliga MIDI-liidese kaudu, muutub kõrge eraldusvõime tähtsusetuks.

Miks? Tuletan meelde, et üks bait edastatakse MIDI-liidese kaudu 320 mikrosekundi jooksul. See tähendab, et näiteks teade noodi tabamise kohta (koosneb kolmest baidist) edastatakse 960 μs ehk peaaegu terve millisekundi. Kujutage nüüd ette, et sekventseris on programmeeritud kaks nooti tempoga 120 BPM ja eraldusvõimega 2048 PPQN kahe linnukese intervalliga. Reaalajas on see 488 mikrosekundit. Seega: toonigeneraator ei saa teist nooti vastu võtta 488 mikrosekundi pärast esimest, tegelikkuses aga 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 eraldatud), 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 näitab erinevate tempode PPQN väärtusi, mille ületamisel pole mõtet.

Sündmuse asukoht ajajoonlaual määratakse sekventseris, tavaliselt formaadis "takid: lööki: tiksud", näiteks 22:3:152. See tähendab: kahekümne teine ​​takt, kolmas löök, 152. linnuke kolmanda löögi algusest. Seda ajalugemise põhimõtet (ingliskeelne termin Timebase) nimetatakse muusikaliseks, kuna see on muusikutele tuttav ja mugav. Pange tähele, et selles vormingus töötamiseks peate teadma praegust kellamõõturit. See tähendab, mitu lööki takt sisaldab ja millega on iga löök 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 löögis 384 puuki ja igas mõõdus 1536 puuki (384 x 4). 6/8 taktimõõturi ja sama resolutsiooniga on ühes taktis 192 puuki (kaheksandik on poole lühem kui veerandnoot) ja taktis on kuus lööki ehk 1152 puuki (192 x 6 ). Seega 22:3:152 salvestamine tähendab esimesel juhul 35096 puuki loo algusest (22 x 1536 + 3 x 384 + 152) ja teisel juhul 26072 tikki (22 x 1152 + 3 x 192 + 152). ).

Seega, et määrata sündmuse asukoht reaalajas ühikutes löökide: löögid: puukide vormingu põhjal, peate teadma kolme parameetrit: hetketempot, taktimõõtmist ja eraldusvõimet kvartali kohta (PPQN).

Aja loendamiseks 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 (ajakoodipõhine, absoluutne). Vajadus selle järele tekib siis, kui sekvenser töötab koos magnetofoniga või filmi/videotehnikaga. Montaažitoiminguid on mugavam teha filmi-, video- ja helimaterjaliga, näidates ära salvestuse alguse ja lõpu positsioonid, viidates absoluutsele skaalale, mitte mõõtudele ja löökidele.

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

Muutuva pikkusega kogused
Aitab lüürilistest kõrvalepõikest, nüüd on meie ülesanne mõista andmesalvestusvormingut. Ja esimene raskus, millega SMF-i arendajad silmitsi seisid, oli sündmuse aja salvestamine.

Siin on kaks võimalust: salvestada iga sündmuse 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. Nii et kolmest noodist koosnevas lõigul võib esimese aeg olla näiteks 22:3:152, teise – 22:3:244, kolmanda – 22:3:288. Nende numbrite salvestamiseks (loo algusest peale linnuketeks tõlgituna) tuleb igaühe jaoks varuda vähemalt neli baiti. Kui järgite teist teed, saate kolme suure numbri asemel salvestada ühe suure stardinumbri (22:3:152), millele järgneb kaks väikest, esimese ja teise ning teise ja kolmanda noodi linnuke erinevus (antud juhul 92 ja 44), piisab neile ühest baidist. Kuid probleem jääb siiski alles: olenevalt sündmusest tuleb aja säästmiseks eraldada erinev arv baite.

Kui SMF-i arendataks praegu (ja isegi Microsofti poolt, kes üldiselt oma failide suurusest ja vajalikust mälust vähe hoolib), ei võtaks nad selle probleemi ees silmad 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 sekundaarne (kettakandja) oli väga tagasihoidliku mahuga. Seetõttu soovisid SMF-i arendajad saavutada võimalikult kompaktse vormingu.

Otsustati jätta delta aeg, ehk selle sündmuse ja eelmise (või laulu alguse) puukide erinevus. Näiteks kui esimene sündmus - esimese oktavi noodi C esitamine - toimus hetkel 40 tikku pärast loo algusest, siis võrdub selle deltaaeg 40-ga. Kui neli linnukest hiljem kõlab noot F, siis on selle deltaaeg võrdne 4-ga. Kui kaks sündmust toimuvad samaaegselt, siis ühele neist määratakse 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 suurust fikseeritud välja.

Niinimetatud muutuva pikkusega kogused. Need pakuvad mugavat viisi täisarvude kirjutamiseks väikseimast suurimani, ilma et peaksite arvule fikseeritud arvu baite eraldama. Algnumbri bitid on pakitud ühte või mitmesse baiti: iga bait sisaldab seitset bitti (paremal, bitid 0 kuni 6). Kõige olulisem bitt baidis on teenindusbitt; kõik seeria baidid, välja arvatud viimane, peavad sisaldama ühte, viimane peab sisaldama nulli. Mitmed pakendinäited on näidatud joonisel fig. 4.

Näiteks peate pakkima numbri 64 (kuueteistkümnendsüsteem 0x40) muutuva pikkusega vormingusse. Binaarses vormis on see arv kirjutatud kui 0100 0000. Olulisi bitte on vaid seitse, nii et see arv pakitakse muudatusteta ühte baiti - 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, tuleb see kaheks jagada. Esimese baidi kõige olulisemas bitis peab olema üks, teises (kui seeria viimases baidis) peab olema null. Teise baiti asetame algarvu seitse kõige vähemtähtsat bitti, saame 0 000 0000. Ülejäänud ühe biti (üks) asetame esimese baidi paremale poole - saame 1000 0001. Tulemuseks on arv 0x80 kirjutatakse kahe baidina: 0x81 0x00. Lahtipakkimine on väga lihtne. Me ei tea ette, mitu baiti seeria sisaldab. Loeme esimest baiti - 1000 0001. Kõige olulisem teenindusbitt (1) näitab, et see pole seeria viimane bait, baite on rohkem. Loobume teenindusüksusest, jättes alles seitse bitti - 000 0001. Lugege teist baiti - 0000 0000. Kõige olulisem teenindusbitt (0) näitab, et see on seeria viimane bait (see tähendab, et seerias on ainult kaks baiti). seeria). Hooldusbitt visatakse ära. Jäänud on ka seitse bitti - 000 0000. Lisame neile vasakule esimesest baidist eraldatud seitse bitti, saame 000 0001 000 0000. Esimesed kuus nulli kõrvale jättes saame soovitud arvu 1000 0000 (0x80).

Seega võimaldab muutuva pikkusega meetod eraldada erinevatele numbritele erineva arvu baite: numbrite jaoks vahemikus 0 kuni 127 - üks bait, 128 kuni 16383 - kaks baiti jne. Sel viisil esitatud maksimaalne arv on põhimõtteliselt piiramatu. Kuid SMF-is on jooksu pikkus piiratud nelja baidiga (kolm kõige olulisema bitiga ja üks, mis lõpetab ühe nulliga). Selle tulemusena võib maksimaalne deltaaeg olla 0x0FFFFFF (või 268 435 455 tikki), mis tempo 500 BPM ja eraldusvõimega 96 PPQN on umbes neli päeva. Rohkem kui küll!

SMF-i muutuva pikkusega vormis pole määratud mitte ainult deltaaeg, vaid ka mõne sündmuse pikkus.

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 andmesalvestus- ja andmevahetusvorming, mis on ligemale paarkümmend aastat nii kasutajate kui ka tarkvaraarendajate elu lihtsamaks teinud. Electronic Arts ei pakkunud mitte ainult avatud 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 ei pea te lisateabe salvestamiseks välja mõtlema uut vormingut, peate lihtsalt sisestama oma laiendi IFF-i. Formaadi ülesehitus võimaldab andmeid vahetada erinevate tootjate programmidel, kellel puuduvad vastavad ärilepingud. Kõik see teeb kasutajad õnnelikuks – 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 tähenduslik ainult tema enda jaoks. IFF-i struktuur muudab selle tegemise 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 noodikirja, AIFF- ja WAVE-failid digitaalheli.

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

IFF-faili plokke saab pesastada, joonis fig. 6. Tegelikult pole IFF-fail midagi muud kui tipptaseme plokk, mis sisaldab ühte või mitut muud plokki. See andmete salvestamise põhimõte võimaldab faili "mähida" mitu heterogeenset teavet, sealhulgas mitu IFF-faili, mis meenutab faili sees olevat failisüsteemi. Tõsi, pesastatud andmekorraldusel on üks puudus - faili on raske tõlgendada ja sellest plokid eraldada.

Enamik IFF-faile sisaldab tipptaseme plokki identifikaatoriga "FORM". See sisaldab muid plokke (joonis 7). Ainsad andmed plokis FORM on neli baiti, mis kirjeldavad failitüüpi (näiteks "ILBM", InterLeaved Bit Map). Kohe nende taga on pesastatud plokid, näiteks "BMHD" (pildi päis), "CMAP" (palett) ja "BODY" (pikslid ise). Plokkide nimed ja andmevormingu loob konkreetse failitüübi arendaja. 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 bait. Seda käsitletakse üksikasjalikumalt külgribal. Failisisesed plokid peavad alati algama paarisbaidiga. Kui eelmine plokk sisaldab paaritu arvu baite, täidetakse see nullbaidiga, et see oleks paaris.

Millisest otsast peaksin säästma?
Arvutimälu koosneb rakkudest, millest igaühes on täpselt üks bait. Lahtrisse pääsemiseks (baidi kirjutamiseks või lugemiseks) kasutab protsessor nn aadress meeles. See on lihtsalt operatsioonisüsteemi poolt lahtrile määratud täisarv (arvutispetsialistid annavad mulle selle lihtsustamise andeks). Reaalses elus ühest baidist tavaliselt ei piisa. Isegi täisarvude salvestamiseks kasutatakse sõnu, see tähendab kahebaidiseid rühmi, topelt- või neliksõnu (vastavalt neli või kaheksa baiti, vt täpsemalt tsükli esimesest osast). See tähendab, et number salvestatakse mitmesse kõrvutisse baiti.

Joonisel fig. Joonisel 8 on toodud kaks võimalikku viisi nende mällu paigutamiseks, kasutades näitena topeltsõna. Esimene meetod on salvestada mällu baitid järjestikku, kõige olulisem bait madalaimal aadressil. See tähendab, et aadressil N salvestatakse kõrge sõna MSB, seejärel kõrge sõna LSB (N + 1), madala sõna MSB (N + 2), madala sõna LSB (N + 3). Seda meetodit nimetatakse tavaliselt suur-endian(või "otsene baitide paigutus"). 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 tavaliselt väike-endian- "tagurpidi baitide paigutus".

See tähendab, et erinevus seisneb selles, et "millisest otsast" (otsast) mitmebaidine väärtus salvestatakse. Terminid "big-endian" ja "little-endian" pakuti välja ühes seda teemat käsitlevas artiklis, viidates Jonathan Swifti raamatule "Gulliveri seiklused". Teatavasti tekkis Lilliputis suur-endilaste liikumine, kes ei tahtnud järgida keisri määrust, mis käskis keedumune murda ainult teravast otsast. Arvutimaailmas näeb big/little-endian lahing väga sarnane välja.

Väikesed pooldajad väidavad, et mälubaitide järjestamine muudab mitmebaidiliste väärtuste aritmeetika tegemise lihtsamaks, kuna kõige vähem olulised baidid, mis esimesena lisatakse, 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 (Apple'i arvutite algsari) 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 niivõrd see, kuidas arvuti andmeid “sisemiselt” salvestab, vaid see, kuidas ta neid “väljas”, failidesse salvestab. Praktilisest seisukohast on see 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 numbritega. Näiteks Adobe Photoshopi failid ja JPEG-vormingud kasutavad big-endiani, GIF- ja BPM-failid aga little-endiani.

Platvormideülene standardne MIDI-faili (SMF) vorming kasutab big-endiani meetodit, mis tähendab, et kõigepealt 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-failil 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 neljast tähemärgist "MThd", rajaploki identifikaatoris on neli märki "MTrk". 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 tuleks ette valmistada, kui nad puutuvad kokku tundmatute tüüpidega, et neid ignoreerida."

Päiseplokk sisaldab üldist teavet faili kohta, rajaplokk sisaldab ajatemplitega MIDI-teadete voogu. Lisaks salvestab MIDI-fail sekventeritele vajalikku lisateavet: tempo, taktimõõtur, klahv, metronoomi seaded jms. Seda teavet MIDI-liidese kaudu ei edastata 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"). On ka teisi erinevusi: SMF ei tohi sisaldada pesastatud plokke ja ploki pikkus ei pea olema ühtlane. SMF-i teisendamine IFF-iga ühilduvaks failiks on aga lihtne. Piisab paaritu pikkusega plokkide (kui neid on) polsterdamisest nullbaidiga ja kogu sisu paigutamisest FORM-plokki. Sarnast toimingut kasutatakse Microsofti pakutud RMID-vormingus (vt külgriba).


Olete siin, kuna teil on fail, mille faililaiend lõpeb .smf. Faile laiendiga .smf saab käivitada ainult teatud rakendused. Võimalik, et smf-failid on pigem andmefailid kui dokumendid või meedia , mis tähendab, et need ei ole mõeldud üldse vaatamiseks.

mis on .smf fail?

SMF-vormingus failid sisaldavad efektidega heliandmeid ning see failivorming on integreeritud sarnaste tehnoloogiate ja funktsioonidega nagu MID-laiendiga failid. Smf-laiendiga heliribasid saab esitada Apple QuickTime'i rakendusega ja sellel multimeediumiprogrammil on Microsoft Windowsi põhiste süsteemidega ühilduv versioon peale teise Maci kasutajatele välja töötatud versiooni. MIDI Manufacturers Association integreeris selle arendamise käigus MIDI spetsifikatsioonid SMF-failivormingusse. See tähendab, et SMF-failid võivad sisaldada ka erinevaid lugusid, mis on kombineeritud erinevatest heliribadest, mis on salvestatud mitmesse SMF-faili, mis tähendab ka seda, et smf-vormingus faile saab kombineerida ja teisendada üheks heliribaks populaarsemates vormingutes, mida saab vaadata ja kasutada teistega. digitaalse video ja dokumendi esitluse arendustarkvara, multimeediarakendused ja digitaalsed helipleierid. See annab kasutajatele võimaluse lisada igale rajale eraldi efekte ja teha teistes muudatusi enne nende ühendamist ühe helirajana. Mõned neist efektidest ja modifikatsioonidest võivad muu hulgas hõlmata helitugevuse ja helikõrguse reguleerimist, moonutusi ja reverbi, panoraamimise ja ajastuse muudatusi. On olemas kolmanda osapoole rakendused, mis võivad SMF-faile teisendada MIDI-vormingusse laiemaks, et toetada rohkemate helitöötlusrakenduste ristühilduvust.

kuidas avada .smf-faili?

Käivitage oma arvutis smf-fail või mõni muu fail, topeltklõpsates sellel. Kui teie failiseosed on õigesti seadistatud, avab selle teie .smf-faili avama mõeldud rakendus. Võimalik, et peate õige rakenduse alla laadima või ostma. Samuti on võimalik, et teie arvutis on õige rakendus, kuid smf-failid pole sellega veel seotud. Sel juhul, kui proovite .smf-faili avada, saate Windowsile öelda, milline rakendus on selle faili jaoks õige. Edaspidi avab .smf-faili õige rakenduse.

smf-faili avavad rakendused

Apple QuickTime Player

Apple QuickTime Player

Apple QuickTime Player on multimeediumipleieri tarkvara, mis käsitleb mitmesuguseid erinevas vormingus faile alates digifotodest kuni panoraampiltideni, helidest videoteni ja interaktiivsuseni. See multimeediumipleieri programm on saadaval nii Mac OS X arvutite kui ka Windowsi arvutite hilisemate versioonide jaoks. Sellel Apple'i tarkvaratootel on tarkvaraarenduskomplektid või SDK-d, mis on avalikkusele saadaval seni, kuni olete tellinud Apple'i arendajaühenduse või ADC-ga. Sellel on QuickTime raamistik, mis ühildub teiste tasuta pleierirakendustega, mis pakuvad mitmeid funktsioone. Nende hulka kuuluvad helide ja videote kodeerimine, samade failide ümberkodeerimine, dekodeerimine võimalusega saata dekodeeritud voog graafika alamsüsteemi või heli alamsüsteemi ja komponentide pistikprogrammi arhitektuur, mis toetab muid koodekeid (kolmanda osapoole, näiteks DivX). Selle tarkvara uusim versioon on QuickTime Player 7, mis on Maci ja Windowsi arvutite jaoks tasuta allalaaditav.

hoiatussõna

Olge ettevaatlik, et te ei nimetaks laiendit .smf files ega muudel failidel ümber. See ei muuda failitüüpi. Ainult spetsiaalne teisendustarkvara saab muuta faili ühest failitüübist teise.

mis on faililaiend?

Faililaiend on kolmest või neljast märgist koosnev komplekt failinime lõpus; sel juhul näitavad .smf. Faililaiendid teile, mis tüüpi fail see on, ja ütlevad Windowsile, millised programmid saavad seda avada. Windows seostab sageli iga faililaiendiga vaikeprogrammi, nii et failil topeltklõpsamisel käivitub programm automaatselt. Kui seda programmi teie arvutis enam ei ole, võite mõnikord saada seotud faili avamisel tõrketeate.