Nnamost. Érzem ezzel most nem leszek népszerűbb, de értsétek meg, meg kell tennem :-)
Ugye a szoftver host-ját mindenki szereti, óvja, félti, ha bárki csúnyát mond rá hát odamegy orrot betörni. Érzékeny témakör na.
Sajnos a napokban eljutottam odáig hogy a jelenlegi host-omban már nem élvezem a zenélést, ilyenkor az ember vagy szünetet tart, vagy keres magának egy más (szoftver) környezetet, ami persze rengeteg próbálgatással, teszteléssel, hasonlókkal jár. Szumma szummárum (ez mekkora akadémikus duma már, érzem ahogy nő a szakállam és vastagodik a szemüvegem tőle), időbeli precízitást vizsgáltam 3 különböző host-nál.
Ugye mindenki hallott már ilyen-olyan fórumokon embereket hőbörögni hogy a "szoftver samplerek nem pontosak", meg "a PC-s host-ok lötyögnek", meg "csak az MPC az, ami atompontos", na most hasonló okoskodás következik, csak amolyan reprodukálható, tudományosnak álcázott tesztek alapján, amilyeneket már megszokhattatok tőlem :-)
Három progger lett vizsgálva, Fruity Studio, Mackie Tracktion 3 és Ableton Live (7.0x). A többit az ismertetett metodológia alapján majd ti megcsináljátok ha érdekel benneteket eléggé ez az egész.
Szóval, a teszthez szükség van egy 44.1 kHz-es, 32 bites hangmintára (lehetne 8 bites is, de lássuk be 2008-at mutat a naptár :-) ami 0.4 másodpercnyi totális csöndet tartalmaz, a második minta kivételével, amit audio editorral felhúzunk majdnem max hangerőig. Gyakorlatilag egy tüske (szebben szólva: impulzus) ami amennyire keskeny (adott mintavételi frekin a lehető legkeskenyebb), annyira nagy energiájú (a spektruma kb. a fehérzajéval megegyező, persze csak arra a nagyon rövid időre). Aki még emlékszik az EQ-s cikkekre, nna ott hasonlóval vizsgáltuk a fázistorzítást.
A teszt első lépése (1) hogy megfogjuk az adott host-ot, csinálunk egy project-et, aminek 60 BPM a tempója (valamint 44.1 kHz a mintavételi frekije) és measure-önként lepakolunk négy darabot ebből a hangmintából egy Audio sávra. Ez lesz arra az adott host-ra vonatkoztatva a baseline (várom az alternatívákat erre a szép nemmagyar szóra). Ha lejátsszuk szép, ütemes kattogást fogunk hallani, aminek az időzítése hangmintára pontos kell hogy legyen, ha lerendereljük egy fájlba. (Az is egyébként, mindhárom hostnál. Azzal a szépséghibával hogy az Ableton Live nemes egyszerűséggel "lenyeli" az első kattanást, kvázi csinál a renderelt audio elején egy fade-in-t. Hogy miért csinál ő ilyet ha senki sem kérte rá rejtély, mindenesetre csinálja. A hülyéje. :-)
Nnade, ugye ez csak a viszonyítási alapunk lesz, a cél ugyanis annak a megállapítása, hogy vajh. a host saját samplerébe betöltve és measure-önként azzal lejátszva ugyanezt a hangmintát vajon a kattogás egybeesik-e a viszonyítási alappal vagy sem (kvázi az adott host-ban az adott sampler valóban "sample accurate"-e or not). Ezt ellenőrizni baromi egyszerű, ugyanis az audio track kattogásával (mint viszonyítási alappal) együtt renderelve (és mixelve) a rendering után kapott audio-ban egy hangszerkesztővel nagyszerűen látszik majd hogy a sampler kattogása egybeesik-e a viszonyítási alappal, és ha nem, akkor vajon állandó-e az eltérés vagy mindig másmennyi.
A hab a tortán végül az lesz, amikor a sampler jelét először valós időben rögzítjük (record) az adott host-tal, majd ezt a rögzített jelet komparáljuk a viszonyítási alaphoz, ezzel ugyanis azt is tudjuk vizsgálni hogy vajon valós időben mennyire sample accurate az adott host az adott samplerrel. Végül, de nem utolsósorban megismételjük mindkét kísérletet a sokat szidott Battery 3 című VSTi-vel is.
Lássuk tehát az eredményeket:
Ableton Live 7
Szegény Live már a viszonyítási alapot is elcseszi, de hajlamosak vagyunk neki megbocsájtani ezegyszer, mindenesetre érdekes ez a fade in dolog. Nem baj, feltételezzük hogy jót akartak vele (még akkor is ha a 7.0-hoz kiadott kézikönyv a rendering-et azonos mintavételi frekin és bitmélységen transzparens műveletnek hazudja...) A "beépített" sampler ez esetben az Impulse lesz.
Impulse, render -> nincs eltérés (ilyenkor mindig a viszonyítási alaphoz értve ennyi a késleltetés)
Impulse, realtime -> 2 mintányi, fix késleltetés
Battery3, render -> nincs eltérés
Battery3, realtime -> 3 mintányi, fix késleltetés
Külön érdekesség hogy Abletonnal valós időben rögzítve MIDI sávot az első measure-nyi anyag időzítése MINDIG elcsúszik, majd 1/32-eddel, tehát mindig a második bar-tól renderelt anyag használható csak. Ilyet szintén egyik más host sem tud, csak a Live, ezúton gratulálunk a készítőknek hogy a 6.xx óta megőrizték a host eme remek tulajdonságát mindenféle bugfixelésre tett kísérlet nélkül.
Mackie Tracktion 3
Beépített samplere nemes egyszerűséggel csak "Sampler"néver hallgat. Sajnos valós időben VSTi-t tartalmazó MIDI sávot nem lehet vele, így a tesz ezen fele csupán füllel lett elvégezve, de mint látjuk az is elég volt...
Sampler, render -> nincs eltérés
(Sampler, realtime -> nincs értékelhető adat)
Battery3, render -> nincs eltérés
Battery3, realtime -> óbazmeg. Szóval ez csak füllel ment, de minden 4 kattanásból csak egyet lehetett hallani, a többit egyszerűen "benyelte" a Tracktion, ezzel bebiztosítva magát az utolsó helyre :-)
Fruity Studio 7
Beépített sampler a khmm... "Sampler" :-) a MIDI trackeket Edison-nal rögzítettem (mármint a realtime részét)
Sampler, render -> nincs eltérés
Sampler, realtime -> nincs eltérés
Battery3, render -> nincs eltérés
Battery3, realtime -> nincs eltérés
Khmm. Ne feledjük, ez a sokak által játékszernek titulált, Delphi-ben fejlesztett (bár ez a méréseink alapján immár nehezen hihető :-) Fruityloops.
Félve bár, de következtetéseket is levonhatunk:
- van olyan hogy egy host valós idejű lejátszása pontatlan
- renderelve nagy valószínűséggel nem futunk bele időzítési problémákba
- van olyan hogy adott host, adott VSTi-vel sample accurate, de ez nem minden esetben magától értetődő.