SMF fájlkiterjesztés. SMF formátumok Smf fájl megnyitása

Ha számítógépe van telepítve víruskereső szoftver tud szkennelje be az összes fájlt a számítógépen, valamint minden fájlt külön-külön... Bármilyen fájlt ellenőrizhet, ha jobb gombbal rákattint a fájlra, és kiválasztja a megfelelő lehetőséget a fájl víruskeresésére.

Például ezen az ábrán fájl my-file.smf, akkor jobb gombbal kattintson erre a fájlra, és válassza ki a lehetőséget a fájl menüből "Szkennelés AVG-vel"... Ha ezt a lehetőséget választja, megnyílik az AVG Antivirus, amely megvizsgálja ezt a fájlt vírusok után kutatva.


Néha hiba adódhat hibás szoftvertelepítés, ami a telepítési folyamat során felmerült probléma miatt lehet. Ez zavarhatja az operációs rendszert kapcsolja össze az SMF fájlt a megfelelő szoftverrel befolyásolva az ún "Fájlkiterjesztés társítások".

Néha egyszerű az Apache OpenOffice újratelepítése megoldhatja a problémát az SMF és az Apache OpenOffice megfelelő összekapcsolásával. Más esetekben a fájltársításokkal kapcsolatos problémák adódhatnak rossz szoftver programozás fejlesztő, és előfordulhat, hogy fel kell vennie a kapcsolatot a fejlesztővel további segítségért.


Tanács: Próbálja meg frissíteni az Apache OpenOffice-ot a legújabb verzióra, hogy megbizonyosodjon arról, hogy a legújabb javítások és frissítések telepítve vannak.


Lehet, hogy túl nyilvánvalónak tűnik, de gyakran maga az SMF fájl okozhatja a problémát... Ha egy fájlt e-mail mellékletként kapott, vagy letöltötte egy webhelyről, és a letöltési folyamat megszakadt (például áramszünet vagy más ok), a fájl megsérülhet... Ha lehetséges, próbáljon beszerezni egy új másolatot a SMF fájlról, és próbálja meg újra megnyitni.


Gondosan: A sérült fájl járulékos károkat okozhat a számítógépén található korábbi vagy már meglévő rosszindulatú programokban, ezért nagyon fontos, hogy folyamatosan frissített víruskereső futhasson a számítógépén.


Ha az SMF fájl a számítógép hardverével kapcsolatos a szükséges fájl megnyitásához frissítse az eszközillesztőket ehhez a berendezéshez kapcsolódik.

Ez a probléma általában médiafájlok típusaihoz kapcsolódnak amelyek a számítógépben lévő hardver sikeres megnyitásától függenek, például, hangkártya vagy videokártya... Például, ha megpróbál megnyitni egy hangfájlt, de nem tudja megnyitni, akkor szükség lehet rá frissítse a hangkártya illesztőprogramjait.


Tanács: Ha egy SMF fájl megnyitásakor azt kapja SYS fájlhoz kapcsolódó hibaüzenet, valószínűleg az lehet a probléma sérült vagy elavult eszközillesztőkkel kapcsolatos amelyeket frissíteni kell. Ez a folyamat megkönnyíthető egy illesztőprogram-frissítő szoftver, például a DriverDoc használatával.


Ha a lépések nem oldották meg a problémátés továbbra is problémái vannak az SMF fájlok megnyitásával, ennek oka lehet a rendelkezésre álló rendszererőforrások hiánya... Az SMF fájlok egyes verziói jelentős mennyiségű erőforrást igényelhetnek (pl. memória / RAM, feldolgozási teljesítmény), hogy megfelelően megnyíljanak a számítógépen. Ez a probléma gyakran előfordul, ha meglehetősen régi számítógépes hardvert és ugyanakkor sokkal újabb operációs rendszert használ.

Ez a probléma akkor fordulhat elő, ha a számítógép nehezen tud végrehajtani egy feladatot, mivel az operációs rendszer (és a háttérben futó egyéb szolgáltatások) túl sok erőforrást fogyaszt az SMF fájl megnyitásához... Próbálja meg bezárni az összes alkalmazást a számítógépén, mielőtt megnyitja a StarMath Formula File fájlt. Azáltal, hogy felszabadítja az összes rendelkezésre álló erőforrást a számítógépén, jobb környezetet biztosít az SMF fájl megnyitásához.


Ha te végrehajtotta az összes fenti lépéstés az SMF fájl továbbra sem nyílik meg, lehet, hogy futnia kell berendezés korszerűsítése... A legtöbb esetben, még régebbi hardververziók esetén is, a feldolgozási teljesítmény továbbra is több mint megfelelő lehet a legtöbb egyedi alkalmazáshoz (kivéve, ha nagy CPU-igényes munkát végez, például 3D-s megjelenítést, pénzügyi/tudományos modellezést vagy nehéz multimédiás munkát). ... Ily módon valószínű, hogy a számítógépének nincs elég memóriája(gyakrabban "RAM-nak" vagy véletlen hozzáférésű memóriának hívják), hogy végrehajtsa a fájl megnyitását.

A MIDI protokollt részletező cikksorozat 5. része.

A MIDI protokoll három részéből az egyik az adattárolási formátum specifikációja (ne feledje, a másik kettő az üzenetformátum és a hardver interfész specifikációja). Az üzenetformátumról a sorozat első három cikkében volt szó, most jött el a tárolási formátum ideje. Az MMA szervezet javasolta 1987 végén, és a Standard MIDI Files (SMF) nevet kapta.

A MIDI-fájlok célja, hogy lehetővé tegyék az események (azaz időbélyegzett MIDI-üzenetek) cseréjét a különböző eszközök és programok között. A szabványos MIDI fájlok megjelenése előtt az egyik szekvenszerben elkészített elrendezést nem lehetett betölteni a másikba a formátum-összeférhetetlenség miatt. Ez nem azt jelenti, hogy az SMF megjelenésével minden szekvenszergyártó erre a formátumra váltott. Ennek több oka is van, ma ezekről is lesz szó.

Mivel az információ tárolása közvetlenül kapcsolódik a szekvenszerek eszközéhez, részletesebben foglalkozunk ezzel a kérdéssel, de csak az SMF megértéséhez szükséges mértékben. És kétségtelenül a ciklus következő cikkeinek egyikét a szekvenszereknek fogjuk szentelni.

Események
Időbélyegzett MIDI üzenet kerül meghívásra esemény... Különböző mértékegységek használhatók az idő jelzésére - ketyegés, belső impulzusok, idő SMPTE formátumban stb. Fontos megérteni az esemény és az üzenet közötti alapvető különbséget. Az üzenet a valós idő egy ezredmásodpercének töredékéig "él" - attól a pillanattól kezdve, hogy a forrás generálja, egészen addig a pillanatig, amikor elküldik a vevőnek végrehajtásra. A MIDI-kábelen keresztüli átvitel során impulzuskészlet formájában fogható meg. Az esemény a készülék memóriájában rögzített néhány bájtnyi információ, amely alapján a jövőben, a megadott időpontban üzenet generálódik.

Például a szekvenszer eltárolhat egy "pick a note" eseményt a lejátszás kezdetétől számított 100 ms időbélyeggel. Ezt az eseményt két dimenzióban szerkesztheti: egyrészt magának a MIDI-üzenetnek a paramétereit (jelen esetben a hang hangmagasságát vagy dinamikáját), másrészt a hangot a sáv mentén mozgathatja, azaz módosíthatja a végrehajtási időt. az üzenetről.

Az események a szekvenszer memóriájában jelennek meg MIDI üzenetek rögzítése közben. Amikor megnyomja a Record gombot, a szekvenszer bekapcsolja a hardveres impulzusgenerátort (kettyeg), és elkezdi "hallgatni" a megadott MIDI bemenetet. Például, amikor megnyom egy billentyűt, a bemenet megkapja a "válasszon jegyzetet" üzenetet. A szekvenszer nézi - aha, az üzenet a 20. pipára érkezett, és 20-as címkével írja be a memóriába. Pár másodperc múlva elengedték a kulcsot - jött a "remove the note" üzenet, a belső generátor boldogan intett 64-et. ketyeg a szekvenszerre abban a pillanatban. A szekvenszer elment egy üzenetet a 64-es címkével. Most két eseménnyel van dolgunk - Note On és Note Off. Lejátszás közben az impulzusgenerátor újra bekapcsol. Amikor a 20. tick megjelenik, egy Note On üzenetet küld a szekvenszer MIDI kimenetére, a 64. tick egy Note Off. Felvettük, majd visszajátszottuk az előadó akcióit!

Nyilvánvalóan ugyanez megtehető offline, vagyis élő előadás nélkül. A sávon a megfelelő helyre kattintva az egeret (és előre kiválasztva a hang időtartamát), pontosan az előző képet építjük be a szekvenszer memóriájába.

Memória típusok
Itt az ideje, hogy alkalmazzunk két ijesztő számítógépes fogalmat: az elsődleges és a másodlagos memóriát. Az elsődleges (vagy belső) memória a szekvenszer-memória, ahol az üzeneteket rögzítik és az eseményeket a teljes munkamenet során tárolják. A memória tartalma törlődik, ha a készüléket kikapcsolja. Ez az értelmezés inkább hardveres szekvenszerekhez való. A szoftveres szekvenszereknél az elsődleges memória egyszerűen a számítógép RAM-ja. Az elsődleges memória tartalmának hosszú távú tárolására másodlagos memóriát, vagy más szóval adathordozókat használnak. Ez lehet hajlékonylemez, merevlemez, intelligens kártya és hasonlók.

A hardveres szekvenszerekben és munkaállomásokban (ne feledjük, egy munkaállomás hanggenerátor és szekvenszer egy dobozban) az elsődleges memória mennyiségét általában a tárolt hangjegyek számában fejezik ki (például 200 ezer). Néha a hangerőt eseményekben fejezik ki, ebben az esetben résen kell lenni – egy hangjegy tárolása két eseményt igényel (egy billentyű lenyomása és felengedése), a hangmagasság elforgatása vagy az utóérintés pedig akár 100 vagy több eseményt is generálhat. Előfordul, hogy a szekvenszer memória méretét natív számítógépes egységekben - kilobájtokban - fejezik ki. De ez sem túl kényelmes - egy esemény különböző számú bájtot foglalhat el (öttől több tízig).

A modern szoftveres szekvenszerekben kevesen törődnek az elsődleges memória mennyiségével - még egy 128 MB RAM-mal rendelkező gépen is elfelejtheti a korlátozásokat a MIDI adatokkal való munka során. Ezen kívül vannak olyan szekvencerek, amelyek képesek lejátszani egy elrendezést közvetlenül a lemezről anélkül, hogy az elsődleges memóriába töltenék (és mellesleg rögzítenék is), ami általában törli a különbséget a két memóriatípus között.

A másodlagos memóriában az adatok általában fájlba íródnak. A legtöbb szekvenszernek saját formátuma van ennek a fájlnak, ami megnehezíti a különböző eszközökön vagy programokban létrehozott elrendezések cseréjét. Korábban elhangzott, hogy ez volt a fő oka az SMF létrehozásának.

Időmérés
Valójában nincsenek "kullancsok" a szekvenszer belsejében. Van egy hardveres időzítő, amely szigorúan állandó frekvenciájú impulzusokat generál (például minden mikroszekundumban). A zenészeket arra kényszeríteni, hogy mikroszekundumban mérjék az időt, szörnyű gúny lenne, akárcsak a valós idő más egységeiben (másodpercben, percben). A zenészek hozzászoktak, hogy ütemekben és ütemekben gondolkodjanak, és az időt relatív egységekben (hanghosszúságban) fejezzék ki, az aktuális tempótól függően.

"Semmi baj" - válaszolták a gyártók -, mérjék meg, ahogy nekik kényelmesebb. Csak a minimális mértékegység nem valami 32. időtartam lesz, hanem egy hagyományosan vett kullancs (az egység még kisebb, így például egy harminc másodpercben 48 kullancs is szerepelhet). Mivel a klasszikus korszak óta a tempót a percenkénti negyedek számával mérik (BPM, ütések percenként), ezért úgy döntöttek, hogy a negyedet veszik fő időtartamnak, és jelzik a negyedenkénti kullancsok számát - PPQN (Pulse Per). negyedjegyzet). Minél nagyobb a PPQN, annál jobb a szekvenszer felbontása, és annál pontosabb időben képes rögzíteni az üzeneteket a felvétel során, és lejátszás közben a MIDI kimenetre továbbítani. A legtöbb szekvenszer lehetővé teszi a PPQN tetszőleges beállítását - például negyedévente 32-1536 tick (modern szekvenszerek - 15360 PPQN-ig).

A kullancs egy árfolyamfüggő mértékegység: minél gyorsabb az árfolyam, annál rövidebb idő telik el a tickek között valós idejű egységekben. Ezt az intervallumot az ábra képletével találhatjuk meg. egy.

Például 120 BPM és 96 PPQN esetén a ketyegés 5,208 ezredmásodpercenként követi. Ugyanezen felbontás és 180 BPM mellett a ketyegések közötti intervallum 3,472 ms-ra csökken. Hogyan számol egy szekvenszer, ha a belső időzítője minden mikroszekundumban pulzál? Nagyon egyszerű: az aktuális tempó és felbontás alapján negyedben, pontosan a megadott képlet szerint. Mivel egy ezredmásodperc 1000 mikroszekundumot tartalmaz, az utolsó példában a szekvenszer újabb ticket generál, amikor 3472 impulzust kap az időzítőtől.

Amikor a nagy felbontásnak nincs értelme
Ha a szekvenszer és a hanggenerátor "egy tető alatt" van (munkaállomás vagy számítógép szoftveres szekvenszerrel és szintetizátorral hangkártyán, vagy virtuális szintetizátor), akkor egy ilyen rendszer belső felbontása tetszőlegesen magas lehet (15360 PPQN). lenyűgöző). Ez lehetővé teszi a MIDI és audio adatok minta pontosságú szinkronizálását. De amint a szekvenszert és a hanggenerátort MIDI kábellel MIDI interfészen keresztül összekötjük, a nagy felbontás lényegtelenné válik.

Miért? Hadd emlékeztesselek arra, hogy egy bájt átvitele a MIDI interfészen keresztül történik 320 mikroszekundumon belül. Ez azt jelenti, hogy például egy jegyzetkészítő üzenet (három bájtból) 960 μs-ig, vagyis majdnem egy teljes ezredmásodpercig kerül továbbításra. Most képzeljük el, hogy a szekvenszerben 120 BPM és 2048 PPQN mellett két hang van programozva, egymástól két pipával. Valós idejű egységekben ez 488 mikroszekundum. Tehát: a hanggenerátor nem fogja tudni fogadni a második hangot az első után 488 mikromásodperccel, hanem a valóságban - csak 960 mikroszekundum után. Tehát nem két, hanem majdnem négy pipa után fogja előadni.

Innen a következtetés: ha MIDI interfészen keresztül dolgozunk (amikor a szekvenszer és a hanggenerátor el van választva), nincs értelme annak, hogy a szekvenszer 960 mikromásodpercenként több mint egy tick legyen. Ahhoz, hogy megtudja, mennyi lesz a PPQN-ben, használhatja az ábra képletét. 2.

ábrán látható táblázat. A 3. ábra a PPQN értékeket mutatja különböző tempókhoz, amelyeket értelmetlen túllépni.

Egy esemény helyzete az idővonalon a szekvenszerben van beállítva, általában "sávok: ütemek: ketyeg" formátumban, például 22:3:152. Vagyis: a huszonkettedik ütem, a harmadik ütem, a 152. pipa a harmadik ütem elejétől. Ezt az időzítési elvet (az angol kifejezés - Timebase) zeneinek nevezik, mert ismerős és kényelmes a zenészek számára. Kérjük, vegye figyelembe, hogy ismernie kell az aktuális órajelet, ha ebben a formátumban szeretne dolgozni. Vagyis hány ütemet tartalmaz a mérték, és mennyivel egyenlők az egyes ütemek.

Tehát 4/4-es időjelnél az ütem egyenlő a negyeddel, és egy ütem négy ütemet tartalmaz. 384 PPQN felbontásnál 384 tick lesz egy ütemben, és 1536 tick lesz minden tickben (384 x 4). 6/8-nál és azonos felbontásnál egy ütem 192 tics lesz (egy nyolcad fele olyan hosszú, mint egy negyed), egy ütem pedig hat ütemből vagy 1152 ticsből áll (192 x 6). Így a 22:3:152 az első esetben 35096 pipát jelent a dal elejétől (22 x 1536 + 3 x 384 + 152), a másodikban pedig - 26072 pipát (22 x 1152 + 3 x 192 + 152) .

Tehát ahhoz, hogy egy esemény valós idejű egységekben való helyzetét a "sávok: ütemek: ketyeg" formátum alapján meghatározhassa, három paramétert kell ismernie: az aktuális tempót, az időjelet és a felbontást negyedenkénti osztásban (PPQN).

Van egy másik lehetőség az időzítésre, amikor egy esemény pozícióját a pályán a tempótól független abszolút egységekben fejezik ki, leggyakrabban SMPTE időformátumban - "óra: perc: másodperc: képkocka". Ezt az időzítési elvet "időkód-alapúnak" (timecode-based, abszolút) nevezik. Erre akkor van szükség, ha a szekvenszer magnóval vagy filmes/videó berendezéssel együtt dolgozik. A film-, videó- ​​és hanganyaggal végzett szerkesztési műveletek, a felvétel eleje és vége pozíciójának megadása kényelmesebb, mivel abszolút skálához kötődik, nem ütemekhez és ütemekhez.

Ebben az esetben az esemény koordinátája az idővonalzón az aktuális tempótól függ. Tehát 120 BPM-es tempónál a második ütem első ütemének SMPTE ideje 00: 00: 02: 00, 60 BPM - 00: 00: 04: 00 tempónál lehet. Ha egy esemény egy képkockán belül van elhelyezve (másodperc között), annak koordinátája is különbözik egy másik képkocka formátumtól (kockák száma másodpercenként). Az SMPTE-ről és a MIDI Time Code-ról bővebben a sorozat előző cikkében olvashat.

Változó hosszúságú mennyiségek
Elég a lírai kitérőből, most az adattárolási formátum megértése a feladatunk. Az első kihívás, amellyel az SMF fejlesztői szembesültek, az volt, hogyan tartsák be az esemény időpontját.

Itt két lehetőség van: minden eseményhez eltárolni az időt a dal elejétől, vagy az azt megelőző utolsó eseménytől (ugyanazon a csatornán). Az első lehetőség azonban nem racionális, mert legtöbbször kicsi az események közötti intervallum, a szomszédos események végrehajtási ideje közel van egymáshoz. Tehát egy három hangból álló szakaszban az elsőnek mondjuk 22:3:152, a másodiknak - 22:3:244, a harmadiknak - 22:3:288 lehet az idő. Ezen számok tárolásához (a dal elejétől pipára fordítva) mindegyikhez legalább négy bájtot kell lefoglalnia. Ha a második úton halad, akkor három nagy szám helyett elmenthet egy nagy kezdőpontot (22: 3: 152), és utána - két kicsi, az első és a második, valamint a második közötti különbséget. és harmadik hangok (jelen esetben 92 és 44), elég nekik egy bájt. A probléma azonban továbbra is fennáll: az eseménytől függően eltérő számú bájtot kell lefoglalnia, hogy időt takarítson meg.

Ha az SMF-et jelenleg fejlesztenék (és még a Microsoft is, amely általában keveset törődik a fájljai méretével és a szükséges memóriával), akkor ez a probléma szemet hunyna. Kiosztottunk egy fix mezőt az időmegtakarítás érdekében, mondjuk eseményenként 8 bájtot, és nem szenvedtünk kárt. 1988-ban azonban az elsődleges (RAM) memória nagyon drága volt, minden bájtot megszámoltak, a másodlagos (lemezes adathordozó) pedig nagyon szerény méretű volt. Ezért az SMF fejlesztői a lehető legkompaktabb formátumot akarták elérni.

Úgy döntöttek, hogy megtartják delta idő, vagyis az esemény és az előző (vagy a dal eleje) közötti ketyegés különbség. Például, ha az első esemény - a hang elütése az első oktávra - a dal elejétől számított 40 ketyegés idején történt, akkor a delta ideje 40 lesz. Ha négy pipálás után az F hang szólal meg, akkor a deltaideje 4 lesz. Ha két esemény történik egyszerre, akkor az egyikhez nullával egyenlő deltaidőt rendelünk. Ha az esemény pontosan a dal elején következik be, akkor annak deltaideje is nulla. A következő esemény azonban másfél óra múlva következhet be (vagyis több millió kullancsban). Hogyan lehet ebben az esetben? Végül is a memóriát meg kell menteni, és nem kívánatos több bájtos fix mezőt lefoglalni a deltaidőhöz.

Az úgynevezett változó hosszúságú... Kényelmes módot biztosítanak egész számok írására a legkisebbtől a legnagyobbig anélkül, hogy fix számú bájtot kellene lefoglalni a számhoz. Az eredeti szám bitjei egy vagy több bájtba vannak csomagolva: minden bájt hét bites (jobb oldalon 0-6 bit). A bájt legjelentősebb bitje a szolgáltatás; a sorozat összes bájtjának, az utolsó kivételével, egyet, az utolsónak nullát kell tartalmaznia. ábrán több csomagolási példa látható. 4.

Például a 64-es számot (hex 0x40) változó hosszúságú formátumba kell csomagolnia. Bináris formában ezt a számot 0100 0000-nek írjuk. Csak hét szignifikáns bit van, így ez a szám változatlanul egy bájtba van csomagolva - 0100 0000 (ez egyben a sorozat utolsó bájtja is), a legjelentősebb bit 0.

Most a szám 128 (0x80). Bináris formában 1000 0000-nek írják. Nyolc szignifikáns bit van, tehát nem fog minden beleférni egy bájtba, ketté kell osztani. Az első bájtnak egynek kell lennie a legjelentősebb bitben, a másodiknak (mint a sorozat záró bájtja) nullának kell lennie. Az eredeti szám hét legkisebb jelentőségű bitjét a második bájtba helyezzük, így kiderül, hogy 0 000 0000. A maradék egy bitet (egyet) az első bájt jobb oldalára tesszük - 1000 0001-et kapunk. a 0x80 szám két bájtban van írva: 0x81 0x00. A kicsomagolás nagyon egyszerű. Nem tudjuk előre, hogy hány bájt van a sorozatban. Az első bájtot olvassuk be - 1000 0001. A legjelentősebb szervizbit (1) azt jelzi, hogy nem ez a sorozat utolsó bájtja, több bájt van. Eldobjuk a szolgáltatási egységet, így hét bit marad - 000 0001. Olvassa be a második bájtot - 0000 0000. A legjelentősebb szervizbit (0) azt jelzi, hogy ez a sorozat utolsó bájtja (vagyis csak két bájt van a sorozatban). sorozat). A szervizbitet eldobjuk. Hét bit is maradt - 000 0000. Hozzájuk adunk a bal oldalon hét bitet az első bájtból, így 000 0001 000 0000-et kapunk. Az első hat nullát eldobva megkapjuk a szükséges 1000 0000 (0x80) számot.

Tehát a változó hosszúságú módszer lehetővé teszi különböző számú bájt kiosztását a különböző számokhoz: 0 és 127 közötti számokhoz - egy bájt, 128 és 16383 között - két bájt és így tovább. Az így képviselt maximális szám elvileg nem korlátozott. Az SMF-ben azonban a burst hossza négy bájtra korlátozódik (három bájt a legjelentősebb bitkészlettel, egy pedig nullával végződik). Ennek eredményeként a maximális deltaidő 0x0FFFFFFF (vagy 268 435 455 tick) lehet, ami 500 BPM sebességgel és 96 PPQN felbontással körülbelül négy nap. Több mint elég!

Változó hosszúságú értékek formájában az SMF nemcsak a deltaidőt jelzi, hanem egyes események hosszát is.

Interchange File Format (IFF)
A szabványos MIDI fájl szerkezete szinte teljes egészében az Electronic Arts által 1985-ben kifejlesztett IFF-ből (Interchange File Format) származik. Ez egy olyan adattárolási és -csereformátum, amely közel húsz éve megkönnyíti mind a felhasználók, mind a szoftverfejlesztők életét. Az Electronic Arts nemcsak nyílt forráskódú dokumentációt biztosított, hanem a C forráskódot is az IFF-fájlok olvasásához és írásához.

Az IFF formátum visszafelé kompatibilis és bővíthető. Az előbbi azt jelenti, hogy a program új verziója gond nélkül képes olvasni az előző verzió által létrehozott fájlokat. Másodszor, nem kell új formátumot kitalálni további információk tárolására, elég, ha beírja a saját kiterjesztését az IFF-be. A formátum felépítése lehetővé teszi, hogy a különböző gyártók programjai adatokat cseréljenek egymással, amelyek nem rendelkeznek megfelelő üzleti megállapodással. Mindez örömet okoz a felhasználóknak – az adatok IFF formátumban történő mentése után már nincsenek rendszerük zárt formátumához láncolva, és bármilyen IFF-kompatibilis szoftver- és hardverkörnyezetben használhatják az adatokat.

Az IFF-fájl olyan adatgyűjtemény, amely oly módon van elrendezve, hogy azt különböző, nem kapcsolódó programok elolvassák. Másrészt a program olyan konkrét információkat tud tárolni az IFF-ben, amelyek csak a maga számára jelentenek. Az IFF szerkezet ezt megkönnyíti. Más programok, amelyek nem tudják, hogyan kell kezelni az ilyen információkat, figyelmen kívül hagyhatják azokat anélkül, hogy veszélyeztetnék a fő tartalom olvasását.

Többféle IFF fájl létezik. Például az ILBM és GIFF fájlok grafikus információkat, az SMUS fájlok zenei jelöléseket, az AIFF és WAVE fájlok pedig digitális hangot tartalmaznak.

Az IFF-fájl hasonló elemekből, úgynevezett darabokból áll. A blokk egy adatstruktúra, amely egy alfabetikus azonosítóból (négy ASCII karakter), a blokk méretéből (négy bájt) és magából az adatból áll (5. ábra). Kényelmes úgy tekinteni a blokkra, mint egy héjra, amelybe az adatok "csomagolva" vannak. Maguk az adatok bármit tartalmazhatnak: grafikát, szöveget, animációt, hangot, 3D objektumok halmazát stb.

Az IFF fájl blokkjai egymásba ágyazhatók, ábra. 6. Valójában az IFF fájl nem más, mint egy legfelső szintű blokk, amely egy vagy több további blokkot tartalmaz. Ez az adattárolási elv lehetővé teszi több heterogén adat "csomagolását" egy fájlba, beleértve több IFF fájlt is, amelyek már egy fájlon belüli fájlrendszerre hasonlítanak. Igaz, a beágyazott adatszervezésnek van egy hátránya - a fájl nehezen értelmezhető, blokkokat izolálhat tőle.

A legtöbb IFF-fájl tartalmaz egy legfelső szintű blokkot "FORM" azonosítóval. Más blokkokat is tartalmaz (7. ábra). A FORM blokkban az egyetlen adat négy bájt, amely leírja a fájl típusát (pl. "ILBM", InterLeaved Bit Map). Közvetlenül ezek mögött vannak olyan beágyazott blokkok, mint a "BMHD" (képfejléc), a "CMAP" (paletta) és a "BODY" (maguk a képpontok). A blokkok nevét és az adatformátumot az adott fájltípus fejlesztője találja ki. Más programok, ha ismeretlen nevű blokkra bukkannak, a blokkhosszt tartalmazó mezőtől vezérelve nyugodtan kihagyhatják azt.

Az IFF fájlok minden numerikus adata nagy sorrendben tárolódik, vagyis először a szám legjelentősebb bájtja (MSB), majd a legkisebb jelentőségű bájt kerül tárolásra. Erről bővebben az oldalsávban olvashat. A fájlon belüli blokkoknak mindig páros bájttal kell kezdődniük. Ha az előző blokk páratlan számú bájtot tartalmaz, akkor egy null bájttal töltjük ki, hogy páros legyen.

Melyik végről menteni?
A számítógép memóriája cellákból áll, amelyek mindegyike pontosan egy bájtot tartalmaz. Egy cella eléréséhez (byte írásához vagy olvasásához) a processzor az ún a cím gondolatban. Ez egyszerűen egy egész szám, amelyet az operációs rendszer rendelt egy cellához (a számítógépes szakértők bocsássák meg ezt a túlzott leegyszerűsítést). A való életben általában egy bájt nem elég. Még egész számok tárolására is használnak szavakat, azaz két bájtos csoportokat, dupla vagy négyes szavakat (illetve négy vagy nyolc bájtot, lásd a ciklus első részét). Vagyis a szám több szomszédos bájtban van tárolva.

ábrán. A 8. ábra két lehetséges módot mutat be a memóriában való elhelyezésükre, egy kettős szó példáján. Az első mód - a bájtok szekvenciálisan tárolódnak a memóriában, a legjelentősebb bájt a legkisebb címen. Vagyis a magas szó MSB-je az N címen van tárolva, majd a magas szó LSB-je (N + 1), az alacsony szó MSB-je (N + 2), az alacsony szó LSB-je (N + 3) . Ezt a módszert általában ún big-endian(vagy "közvetlen bájt kiosztás"). A második módszernél minden pontosan az ellenkezője, a magas bájt a legmagasabb címen tárolódik: az alacsony szó LSB-je (N), az alacsony szó MSB-je (N + 1), a magas szó LSB-je (N + 2) ), a magas szó MSB-je (N + 3) ... Ezt a módszert általában ún kis-endian- "fordított byte allokáció".

Vagyis a különbség az, hogy "melyik végről" tárolódik a többbájtos érték. A "big-endian" és a "little-endian" kifejezéseket a témával foglalkozó cikkben találták meg Jonathan Swift The Adventures of Gulliver című könyvére hivatkozva. Tudniillik Liliputban a big-endiánok mozgalma alakult ki, akik nem akarták végrehajtani a császár rendeletét, amely elrendelte, hogy a főtt tojást csak az éles végéről törjék fel. A számítógépes világban a nagy / kis-végi konfrontáció nagyon hasonlónak tűnik.

A kis-végi támogatók azzal érvelnek, hogy a memória átrendezett bájtsorrendje megkönnyíti a többbyte-os értékeken végzett aritmetikai műveletek végrehajtását, mivel az elsőként hozzáadott legkisebb jelentőségű bájtok a legkevésbé jelentős bájtokban tárolódnak.

A kis méretű áramkört az Intel-kompatibilis processzorok használják, az Intel 8080-tól az Intel Pentium IV-ig. Közvetlen elhelyezés (big-endian) - Sun Spark processzorokban, Motorola 68000-ben (az Apple számítógépek korai sorozata) és számos RISC processzorban. De a PowerPC és az Intel Itanium processzorok egyszerre értik mindkét adatformátumot (ezeket néha "bi-endian"-nak nevezik).

Azonban nem is annyira az a fontos, hogy a számítógép hogyan tárolja az adatokat "magában", hanem az, hogy "kint", fájlokban hogyan tárolja azokat. Ez gyakorlati szempontból sokkal fontosabb. Például, ha a „UNIX” szót a rendszer egy nagyméretű fájlba menti (két duplabájtos szóként), akkor a kis végű rendszer „NUXI”-ként fogja olvasni. Ezt nevezi a számítógépes zsargon "NUXI-problémának". Hasonló nehézségek adódhatnak grafikák mentésekor, mivel a színek többbájtos számokkal vannak kódolva. Például az Adobe Photoshop és a JPEG fájlok a big-endian sémát használják, míg a GIF és BPM fájlok a little-endian sémát.

A "nem platform" szabványos MIDI fájl (SMF) formátum a big-endian módszert használja, vagyis először a szó legjelentősebb bájtja (MSB) kerül tárolásra.

SMF szerkezet
A szabványos MIDI-fájlok, például az IFF-fájlok, darabokból állnak. Összesen kétféle darab van: fejlécdarab és nyomelemdarab. Egy SMF-fájlban csak egy fejlécblokk és egy vagy több sávblokk lehet. A blokk tipikus IFF felépítésű: az első négy bájt az azonosító, a következő négy bájt a blokk hossza bájtban, a nyolc bájt típus/hossz nélkül. A fejlécblokk azonosítója négy "MThd" karakterből, a sávblokk azonosítója pedig négy "MTrk" karakterből áll. Ez a struktúra lehetővé teszi új blokktípusok meghatározását a jövőben, és egy ismeretlen blokk könnyen figyelmen kívül hagyható a hossza alapján. Az SMF specifikációja figyelmeztet: "A programoknak fel kell készülniük arra, hogy figyelmen kívül hagyják az ismeretlen típusú blokkokat, amikor találkoznak velük."

A fejléc blokk általános információkat tartalmaz a fájlról, a sávblokk a MIDI üzenetek folyamát tartalmazza időbélyegekkel. Ezenkívül a MIDI fájl a szekvenszerekhez szükséges további információkat tárol: tempó, időjelzés, billentyű, metronóm beállítások és hasonlók. Ezeket az információkat nem a MIDI interfészen keresztül továbbítják, az ezt alkotó eseményeket metaeseményeknek nevezzük.

A MIDI fájl mindig egy fejléc blokkkal kezdődik, amelyet egy vagy több sávblokk követ (9. ábra). Ez azt jelenti, hogy bármely szabványos MIDI fájl négy „M”, „T”, „h”, „d” betűvel kezdődik. Ez azt jelenti, hogy a MIDI-fájl nem felel meg az IFF-specifikációnak (amely megköveteli, hogy minden IFF-kompatibilis fájl a három típus egyikének legfelső szintű blokkjával kezdődjön – „FORM”, „CAT” vagy „LIST”). Vannak más különbségek is: az SMF-ek nem tartalmazhatnak beágyazott blokkokat, és a blokk hosszának sem kell párosnak lennie. Az SMF-ek IFF-kompatibilis fájllá konvertálása azonban egyszerű. A páratlan hosszúságú blokkokat elég egy nulla bájttal kitölteni (ha van ilyen), és az összes tartalmat a FORM blokkba tenni. Hasonló műveletet használnak a Microsoft által javasolt RMID formátumban (lásd az oldalsávot).


Azért vagy itt, mert van egy fájlja, amelynek kiterjesztése .smf végződésű. Az .smf kiterjesztésű fájlokat csak bizonyos alkalmazások tudják elindítani. Lehetséges, hogy az .smf fájlok adatfájlok, nem pedig dokumentumok vagy média , ami azt jelenti, hogy "egyáltalán nem nézhetők meg.

mi az az & nbsp.smf & nbspfile?

Az SMF formátumú fájlok hangadatokat tartalmaznak effektusokkal, és ez a fájlformátum hasonló technológiákkal és funkciókkal van integrálva, mint a MID kiterjesztésű fájlok. Az .smf kiterjesztésű hangsávok lejátszhatók az Apple QuickTime alkalmazással, és ennek a multimédiás programnak van egy olyan verziója, amely kompatibilis a Microsoft Windows alapú rendszerekkel, eltekintve egy másik, Mac felhasználók számára kifejlesztett verziótól. A MIDI Manufacturers Association a fejlesztése során integrálta a MIDI specifikációkat az SMF fájlformátumba. Ez azt jelenti, hogy az SMF-fájlok a több SMF-fájlban tárolt különböző hangsávokból kombinált különböző műsorszámokat is tartalmazhatnak, ami azt is jelenti, hogy az .smf formátumú fájlok kombinálhatók és egy hangsávmá konvertálhatók népszerűbb formátumokba, amelyek megtekinthetők és használhatók. digitális videó- ​​és dokumentumbemutató-fejlesztő szoftverek, multimédiás alkalmazások és digitális audiolejátszók. Ez lehetőséget biztosít a felhasználóknak, hogy külön-külön hozzáadjanak effektusokat az egyes számokhoz, és módosítsák a többit, mielőtt egyetlen hangsávként lejátszanák őket. Ezen effektusok és módosítások némelyike ​​magában foglalhatja a hangerő- és hangmagasság-beállításokat, a torzításokat és a visszhangot, a pásztázást és az időzítést. Vannak olyan harmadik féltől származó alkalmazások, amelyek az SMF fájlokat MIDI formátumba konvertálhatják, így több hangszerkesztő alkalmazás szélesebb körű keresztkompatibilitását támogatják.

Hogyan lehet megnyitni egy .smf fájlt?

Indítson el egy .smf fájlt vagy bármilyen más fájlt a számítógépén, ha duplán kattint rá. Ha a fájltársítások megfelelően vannak beállítva, akkor az az alkalmazás, amely az .smf fájlt akarta megnyitni, megnyitja azt. Lehetséges, hogy le kell töltenie vagy meg kell vásárolnia a megfelelő alkalmazást. Az is lehetséges, hogy a megfelelő alkalmazás van a számítógépén, de az .smf fájlok még nincsenek hozzá társítva. Ebben az esetben, amikor megpróbál megnyitni egy .smf fájlt, elmondhatja a Windowsnak, hogy melyik alkalmazás a megfelelő az adott fájlhoz. Ettől kezdve egy .smf fájl megnyitásával megnyílik a megfelelő alkalmazás.

smf fájlt megnyitó alkalmazások

Apple QuickTime Player

Apple QuickTime Player

Az Apple QuickTime Player egy multimédiás lejátszó szoftver, amely különféle formátumú fájlokat kezel a digitális fényképektől a panorámaképekig, a hanganyagoktól a videókig, valamint az interaktivitásig. Ez a multimédiás lejátszó program Mac OS X rendszerű számítógépekhez, valamint Windows rendszerű számítógépek újabb verzióihoz érhető el. Ez az Apple szoftvertermék szoftverfejlesztő készletekkel vagy SDK-kkal rendelkezik, amelyek mindaddig elérhetők a nyilvánosság számára, amíg előfizetett az Apple Developer Connection vagy az ADC szolgáltatással. QuickTime keretrendszerrel rendelkezik, amely kompatibilis más ingyenes lejátszóalkalmazásokkal, amelyek számos funkciót biztosítanak. Ezek közé tartozik a hangok és videók kódolása, ugyanazon fájlok átkódolása, dekódolás azzal a lehetőséggel, hogy dekódolt adatfolyamot küldjön a grafikus alrendszernek vagy audioalrendszernek, valamint egy komponens-bővítmény-architektúra más kodekek (harmadik fél, például DivX) támogatására. A szoftver legújabb verziója a QuickTime Player 7, amely ingyenesen letölthető Mac és Windows számítógépekre.

figyelmeztető szó

Ügyeljen arra, hogy ne nevezze át az & nbsp.smf & nbspfiles vagy bármely más fájl kiterjesztését. Ez nem változtatja meg a fájl típusát. Csak speciális konvertáló szoftverek módosíthatnak egy fájlt egyik fájltípusról a másikra.

mi az a fájlkiterjesztés?

A fájlkiterjesztés három vagy négy karakterből álló készlet a fájlnév végén; ebben az esetben a & nbsp.smf. & nbspFájlkiterjesztések megmondják, hogy milyen típusú fájlról van szó, és megmondják a Windowsnak, hogy milyen programok tudják megnyitni. A Windows gyakran egy alapértelmezett programot társít minden fájlkiterjesztéshez, így ha duplán kattint a fájlra, a program automatikusan elindul. Amikor ez a program már nincs a számítógépén, néha hibaüzenetet kaphat, amikor megpróbálja megnyitni a társított fájlt.


Általában a szekvenszerek saját elrendezési tárolási formátumukat használják. Ez annak köszönhető, hogy egy adott program képességeihez kialakított adatstruktúra sokkal hatékonyabb, egyszerűen könnyebb vele dolgozni. A formátumba további adatokat írhat, például a felhasználói felület testreszabásával kapcsolatban (az ablak helyzete és mérete, betűtípus stb.). Ezenkívül a szabványos MIDI fájlok tömörsége (különösen az események előfordulási idejének tárolására szolgáló változó hosszúságú) kényelmetlenséggé válik: az elrendezéssel való munkavégzés érdekében a fájlban lévő összes delta időt "ki kell csomagolni", és amikor a fájl mentésre kerül, újra "zip-csomagolva".

Másrészt az SMF egy hordozható, többplatformos formátum, amelyben további blokkok definiálhatók meghatározott adatok tárolására. Például egy szekvenszer tárolhatja a metronómot be- vagy kikapcsolva egy „Mtr” nevű blokkban. Ez a blokk nem akadályoz egy másik szekvenszert, hanem több saját blokkját is meghatározhatja ugyanabban a fájlban. Tehát néhány szekvenszer közvetlenül az SMF formátumot használja, ez számukra "natív". Mások lehetővé teszik a MIDI-fájlok importálását és exportálását, ha szükséges.

A különböző típusú szekvenszerek és egyéb berendezések támogatása érdekében a szabványos MIDI-fájlok három ízbe vagy formátumba vannak besorolva: 0, 1 és 2.

A 0-s fájlformátum egy számot tartalmaz, amely mind a tizenhat MIDI-csatorna eseményeit tartalmazza. Ez a legegyszerűbb formátum az adatcseréhez, mivel nem veszi figyelembe a szekvenszerben lévő számok eredeti szerkezetét (melyik sáv melyik MIDI csatornához van hozzárendelve). A 0-s formátumú fájl alkalmasabb adatátvitelre olyan eszközökre, mint a keverők és az effektprocesszorok, mint az elrendezések tárolására. Ha egy fájlt 0 formátumban rögzít, a szekvenszer egyszerűen egyetlen sávba egyesíti az összes MIDI csatorna összes üzenetét. Ennek megfelelően egy fájl betöltésekor egy sávot kapunk, amelyen problémás az események szerkesztése, mivel a különböző csatornák eseményei egymásba fonódnak. A legtöbb szekvenszernek az a funkciója, hogy egy ilyen "mixet" külön sávokra oszt, amelyek mindegyike egy-egy MIDI-csatorna eseményeit tartalmazza.

Az 1-es formátumú fájl minden MIDI csatornához külön sávot tartalmaz, amely a szekvenszerben lévő elrendezés ismerős felépítését tükrözi. A 2. formátumú fájl több független darabot (vagy teljes mintát) tartalmaz, mindegyik minta egy sávból áll, amely mind a 16 csatornán üzeneteket tartalmaz. Ezt a formátumot azokban a szekvenszerekben kellett volna használni, amelyek képesek egyidejűleg több hangszer által játszott független mintákkal dolgozni. A 2-es formátumot azonban széles körben figyelmen kívül hagyták, és jelenleg a specifikációban úgy tekintik, mint "nem szekvenszerekhez való".

Az egyik fő különbség a 0 és 1 formátumok között a metaesemények elhelyezése. A 0 formátumban a tempó és az időaláírás metaesemények (úgynevezett tempótérkép) keverednek más MIDI üzenetekkel. Ezenkívül a számok címei nem kerülnek mentésre ebben a formátumban. Az 1-es formátumban a fájl első sávja kizárólag a tempótérkép és más metaesemények számára van fenntartva, mint például a Sequence / Track Name, Sequence Number, Marker, SMPTE Offset (lásd alább).

Ha nincs tempóleképezés a fájlban, akkor a tempót 120 BPM-nek kell tekinteni, az időjel pedig 4/4.

Az MMA szervezet a jövőben más SMF formátumokat is kifejleszthet, hogy támogassa az új adatstruktúrákat a szekvenszerekben.

Címblokk ("MThd")

A fejlécblokk alapvető információkat tartalmaz a fájlról. A blokk felépítése az ábrán látható. 11. A hossz mező mindig a 6-os számot tartalmazza, a mezőt követő fejlécadatok bájtjai alapján. A fejléc adatok három 16 bites szóból állnak. Az első szó (formátum) - SMF formátum, a három érték egyikét veheti fel - 0, 1 és 2. A második szó (ntrks) - a fájlban lévő sávblokkok (vagyis maguk a sávok) száma. A 0 formátumú fájl esetén ez mindig egyenlő lesz eggyel.

Az osztásfejléc blokk utolsó szava határozza meg az idő mérésének módját (időbázis). Amint azt korábban említettük, kétféle mód létezik: zenei (ütemek / ütemek) és abszolút (időkód alapú), az abszolút idő alapján SMPTE formátumban. Mindenesetre az SMF fájlban a delta időt tickek mérik: zenei módszerrel a negyedenkénti tickek számát (vagyis PPQN-t) állítjuk be, az abszolút értéknél pedig az egy SMPTE-kockában lévő tickek számát. Ha az osztásmező legjelentősebb (15.) bitje nullára van állítva, akkor a zenei módszert alkalmazzuk, a maradék 15 bit pedig PPQN-t tartalmaz (32767-ig), ábra. 12. Ha a legjelentősebb bit egyre van állítva, akkor az abszolút módot használja. Az alacsony bájt (0–7. bit) a tickek számát tárolja keretenként, a magas bájt (8–15. bit) az SMPTE keretformátumot tárolja, negatív értékekkel (-24, -25, -29, -30) kifejezve. ). Ebben az esetben a -29 szám a 30 fps Drop Frame formátumnak felel meg (lásd a ciklus előző cikkét).

A negatív számokat azért választjuk, mert a kettő komplementereként vannak felírva (lásd az előző cikket), vagyis egyet tartalmaznak a legjelentősebb bitben. Ez az egység pedig csak az időszámítás abszolút módjának a jele. A képkockánkénti tickek száma pozitív, és általában a következő értékek egyikét veszi fel: 4 (a felbontás, mint a MIDI időkódban, ha négy Quarter Frame üzenet van képkockánként), 8, 10, 80 (egy bit felbontása egy SMPTE keret), vagy 100 ...

Ez a rendszer lehetővé teszi, hogy 1/128 képkocka pontossággal jelezze az esemény bekövetkezésének abszolút idejét. Ezen túlmenően, ha a képkocka formátumát 25 képkocka/mp-re, a felbontást pedig 40 tick/kockára állítja be, akkor minden tick egy milliszekundumnak felel meg. Ebben az esetben az osztásmező értéke 0xE728, a 0xE7 bájt a 2-es komplementszám bejegyzése, a 0x28 pedig a 40 hexadecimális szám.

Nyomvonalblokk ("MTrk")

A sávblokk magukat az eseményeket, azaz a MIDI üzeneteket tárolja időbélyeggel. A blokknak legalább egy eseményt kell tartalmaznia. A sávblokk felépítése megegyezik bármilyen formátumú (0, 1 és 2) MIDI-fájl esetén, ábra. tizenhárom.

Az esemény egy delta időből és magából a MIDI-üzenetből áll, ábra. 14. Hadd emlékeztesselek arra, hogy a deltaidő változó hosszúságúként van tárolva.

Reméljük, hogy segítettünk megoldani a problémát az SMF fájllal. Ha nem tudja, honnan tölthet le egy alkalmazást a listánkról, kattintson a linkre (ez a program neve) - részletesebb információkat talál arról, hogy honnan töltheti le a kívánt alkalmazás biztonságos telepítési verzióját .

Ennek az oldalnak a meglátogatása segíthet konkrétan ezekre vagy hasonló kérdésekre válaszolni:

  • Hogyan lehet fájlokat megnyitni SMF kiterjesztéssel?
  • Hogyan konvertálhatok egy SMF fájlt más formátumba?
  • Mi az SMF fájlformátum kiterjesztése?
  • Milyen programok támogatják az SMF fájlt?

Ha az oldalon található cuccok megtekintése után a fenti kérdések egyikére sem kapott kielégítő választ, ez azt jelenti, hogy az itt bemutatott SMF-fájlra vonatkozó információk nem teljesek. Vegye fel velünk a kapcsolatot a kapcsolatfelvételi űrlap segítségével, és írja meg, milyen információkat nem talált.

Mi okozhatja még a problémát?

Több oka is lehet annak, hogy miért nem tudja megnyitni az SMF fájlt (nem csak a megfelelő alkalmazás hiánya).
Először- Előfordulhat, hogy az SMF fájl helytelenül van összekapcsolva (nem kompatibilis) az azt kiszolgáló telepített alkalmazással. Ebben az esetben Önnek kell módosítania ezt a hivatkozást. Ehhez kattintson a jobb gombbal a szerkeszteni kívánt SMF fájlra, majd kattintson a lehetőségre "Nyitni vele" majd válassza ki a listából a telepített programot. Egy ilyen művelet után az SMF fájl megnyitásával kapcsolatos problémák teljesen eltűnnek.
Másodszor- előfordulhat, hogy a megnyitni kívánt fájl egyszerűen megsérült. Ezután a legjobb megoldás, ha keresel egy új verziót, vagy töltsd le újra ugyanabból a forrásból, mint korábban (lehet, hogy az előző munkamenetben valamiért nem fejeződött be az SMF fájl letöltése, és nem lehet megfelelően megnyitni).

Akarsz segíteni?

Ha további információi vannak az SMF fájlkiterjesztésről, hálásak vagyunk, ha megosztja azokat oldalunk felhasználóival. Használja a mellékelt űrlapot, és küldje el nekünk az SMF fájlra vonatkozó információkat.