musicman
|
|
« Odpoveď #544 kedy: 12. December , 2008, 21:35:09 » |
|
Audio podle Microsoftu - pořád kulhá za Apple
Ani Microsoft nezklamal a splnil očekávání, že jeho audio subsystém se posune k Mac OS X, ale ani zdaleka jej nepřekoná. Zatímco Mac OS X má možnost si nastavit priority aplikací celkem libovolným způsobem, kdo si nainstaluje Developer Tools a Core Audio SDK, najde v příkladech aplikací utilitku Million Monkeys, která umí zaměstnat procesor od pár procent až po takovou hodnotu, že už se jen počítá audio a na zbytek obsluhy systému procesoru nezbývá čas, takže aplikace ani nejde vypnout. Windows Vista přinášejí jako novinku Pro Audio mód, který by měl možné využití procesoru pro audio posílit. Všichni, kdo znají Maca a Windows vědí, že přetížení procesoru jednou aplikací může způsobit to, že počítač nereaguje ani na snahu aplikaci "shodit". U Windows trvá odhadem tak 10x delší dobu, než se po zmáčknutí ctrl-alt-del něco začne dít, než po command-option-escape u Maca, ale pokud je systém zatížený naplno, obě platformy se shodnou a prostě se k zobrazení okna s možností vynucení konce nedopracují. U obou systémů tato situace nastane, pokud si nějaká aplikace přivlastní příliš mnoho výkonu, ani preemptivní multitasking tady bohužel nepomůže. Rozdíl je především v tom, že při velmi zatíženém procesoru se Windows audio stává nespolehlivým, zatímco Mac hraje celkem bez problémů. Je to dáno tím, že Mac OS X (a myslím, že i Linux - ALSA) používají zvláštní způsob časování. Protože žádný z těchto desktopových systémů není v pravém slova smyslu real-timový, tedy není možné v něm něco dělat naprosto přesně třeba po setinách sekundy, má Mac OS X zvláštní způsob řízení úloh (threadů), které musí být zavolány v přesných časech. A to je především audio. Pokud je digitální audio provozováno na 44100 Hz, musí aplikace dostat jednou za jednu 44100tinu sekundy vynásobenou počtem vzorků, které naráz zpracovává, nějakou chvilku, aby mohla s daty něco provést. Pokud systém "zaspí" a dá aplikaci čas příliš pozdě, tak se to nestihne a dojde k trhanému přehrávání - drop outům.
Jak funguje audio na Mac OS X
U Mac OS Core Audio systému je na přesné časování použito velmi zajímavé řešení: Aby systém věděl, kdy má audio aplikaci zavolat, je na základě zjištění hodnot vypočítána předvídací hodnota, která říká, kdy teoreticky by audio aplikace měla dostat mezi všemi různě privilegovanými úlohami v systému svůj čas. Tak může předběhnout i tu úlohu, která si pro sebe nastaví v systému velkou prioritu. Asi před dvěma lety mimochodem Microsoft na jednom audio meetingu přiznal, že něco podobného nelze ve Windows se současným jádrem realizovat. Dá se tedy zjednodušeně říct, že u Windows je spolehlivost audia zajištěna tím, že je úloha obsluhována preemptivním multitaskingem má velkou prioritu, zatímco v Mac OS X jsou dvě úrovně - jednak je také možné nastavit prioritu, kromě toho ale nezávisle funguje mechanismus předvídání.
Celé audio řešení má nyní Apple ve svých rukou. Doba, kdy provozování audia na OS 7-9 záviselo na tom, jaký fígl programátoři najdou (a našli jich mnoho), je už pryč. Vzorná dokumentace, desítky příkladů a rozsáhlé knihovny umožňují napsat poměrně snadno třeba MP3 přehrávač, MIDI softwarový syntezátor nebo cokoli jiného. V oblasti audia se podařilo Applu také prosadit vlastní formát modulů pro efekty a virtuální nástroje, nazvaný AudioUnits. Tady se ukázala jedna věc - Apple nechce být závislý na dalších firmách. I když v době začátku existoval vynikající systém VST - Virtual studio technology, vytvořený německou firmou Steinberg, Apple vyvinul vlastní systém, který je celý, stejně jako VST, open source. Rozhodnutí se ukázalo být moudré, Steinberg totiž vzápětí byl koupen Pinnaclem a ten se snažil udělat si ze Steinbergu svého výrobce audio řešení, převážně pro PC. Mohlo se stát, že by firma přestala Mac-VST podporovat a Apple by zůstal bez podpory hudebních efektů. Steinberg sice posléze koupila Yamaha, která je v profesionálních řešeních poměrně pro-applovská, ale ani to Applu stoprocentní stabilitu podpory nezaručuje.
S audiem je spojené i řešení MIDI. Kdyby někdo nevěděl, MIDI znamená 2 různé věci: Jednak typ rozhraní - pětikolíkové zástrčky a seriový drát, a dále protokol, kterým se mezi libovolnými zařízeními přenášejí noty a pomocné informace, například dynamika, ovládací prvky (kontrolery) syntezátorů a klávesnic. Zatímco MIDI jako rozhraní je používáno pouze k přenášení MIDI dat, tato MIDI data jsou běžně přenášena také jinými typy rozhraní, jako USB, FireWire a Ethernet a také mezi aplikacemi na počítači. Tuto technologii Apple v systému OS 9 a starších sám o sobě vůbec nepodporoval, bylo nutné doinstalovat software dalších výrobců - OMS od Opcode Systems nebo FreeMIDI od MOTU. OMS byl v podstatě standard pro připojování MIDI zařízení, existoval i ve verzi pro Windows, kde neporovnatelně překonával windowsovské MIDI, ale jako standard se neujal. Apple to vyřešil geniálně - poté, co Opcode zkrachoval a nový vlastník, výrobce kytar Gibson propustil softwarový tým, Apple zaměstnal hlavního tvůrce a architekta OMS. Ten je v týmu zodpovědný za koncepci Core MIDI, v mnoha vlastnostech navenek podobného devítkovému OMS, ale po programátorské stránce zcela konzistentního s ostatními částmi Core Audia.
|