artykuły

Karty dźwiękowe i zintegrowane układy audio bez tajemnic

397
17 stycznia 2008, 00:30 Piotr Gontarczyk

API, API, cztery API! Microsoft

Zanim przejdziemy do spraw sprzętowych, musimy oczywiście zapoznać się choć po trochu z całą tą stertą papierów, specyfikacji, interfejsów, rozszerzeń, funkcji itd. Innymi słowy, ze wszystkim, co napędza nasze dźwiękowe cacka.

Aby aplikacja bądź gra mogła komunikować się z kartą dźwiękową, podobnie jak w przypadku kart graficznych potrzebne jest środowisko programistyczne. Dla ułatwienia pracy programistom, ci stworzyli sobie kilka interfejsów. Dzięki nim nasze programy multimedialne oraz gry mogą wykorzystać wiele specyficznych funkcji naszych "dźwiękówek". To interfejs decyduje o tym, czy dana gra wykorzysta te wspaniałe "eaksy" czy systemy dźwięku przestrzennego. W najbardziej zorientowanym na multimedia i gry (a na pewno najpopularniejszym) środowisku Windows na dzień dzisiejszy funkcjonują cztery poważne interfejsy programistyczne. W średniotelegraficznym skrócie przedstawimy każdy z nich.

DirectSound (API - Application Programming Interface, z ang. Interfejs programowania aplikacji) jest specyfikacją instrukcji i procedur komunikacji pomiędzy kontrolerem dźwięku, jego sterownikiem, systemem operacyjnym a aplikacją. Dzięki niemu programy odtwarzające dźwięki mają bezpośredni dostęp do kontrolera, co w efekcie skutkuje tym, że mogą one przekazywać bufory (próbki) dźwiękowe bezpośrednio do niego, z pominięciem przetwarzania ich przez CPU. Obecnie na rynku masowym nie ma ani rozwiązań zintegrowanych, ani kart dźwiękowych niezgodnych z DirectSound. Jest to absolutnie podstawa praktycznie wszystkich aplikacji multimedialnych oraz gier, w kwestii przetwarzania dźwięku oczywiście. Zaprezentowany po raz pierwszy pod koniec 1996 roku, wraz z premierą DirectX 3.0 szybko został podchwycony przez twórców gier, którzy wcześniej zmuszeni byli do korzystania z systemu DOS jako podstawowej platformy. W tym oczywiście pomocny był także Direct3D, ale to zupełnie inna kwestia.

Aplikacja komunikując się z kontrolerem dźwięku za pośrednictwem DirectSound przesyła próbki dźwięku w dwóch postaciach:

  • Bufory drugorzędne (Secondary): zależnie od możliwości kontrolera dźwięku mogą być programowe lub sprzętowe. Są wykorzystywane wyłącznie do przechowywania dźwięków, na których nie są dokonywane żadne operacje przetwarzania (np. dodawanie efektów akustycznych). Obecnie dostępne na rynku karty dźwiękowe udostępniają albo 64, albo 128 buforów drugorzędnych. Potocznie zwiemy je "głosami (3D)". To ich ilość reguluje na przykład, ile dźwięków w grze można odtworzyć jednocześnie. Z wyjątkiem NVIDIA Sound Storm, wszystkie kontrolery zintegrowane w chipsetach płyt głównych oferują nie więcej niż 32 bufory tego typu. Procesory NVIDII miały 64 sprzętowe bufory drugorzędne. Bufory te dzielimy na dwa typy, zależnie od tego co zawierają lub jak mają być odtwarzane:
    • Bufory statyczne: krótkotrwałe dźwięki, mogące stale rezydować w lokalnej pamięci karty dźwiękowej. Dzięki temu mogą one być odtworzone z bardzo małymi opóźnieniami. Jeśli karta dźwiękowa nie dysponuje odpowiednio pojemną pamięcią lokalną lub nie posiada jej wcale, dźwięki mogą być zapisane do pamięci operacyjnej i przechowywane właśnie w niej. Jako bufory statyczne odtwarzane są w grach np. odgłosy strzałów, uderzeń, głosy postaci itd.
    • Bufory strumieniowe: stosowane w przypadku długotrwałych dźwięków, jak np. muzyka w grach czy z odtwarzaczy multimedialnych. Jako że tego typu strumienie dźwięku mają dużą objętość, są zawsze ładowane do pamięci operacyjnej. Aby jednak nie doprowadzać do zbyt dużych strat wolnych obszarów RAM, są one ładowane w małych fragmentach. Gdy jeden fragment jest odtwarzany, do pamięci ładowany jest następny, w dokładnie tym samym obszarze (bufor jest wypełniany od początku). Buforowanie strumieniowe pozwala zachować spore obszary pamięci operacyjnej wolne dla innych celów. Z drugiej strony wymaga dokładnego dostosowania wielkości buforów i częstotliwości ich "doładowywania" kolejno następującymi fragmentami strumieni dźwiękowych, aby uniknąć przeskoków, trzasków i przerw w odtwarzanych dźwiękach.
  • Bufor główny (Primary): Tutaj trafiają dźwięki z buforów drugorzędnych. Następnie następuje przekonwertowanie ich zawartości na jeden, wspólny format (próbkowanie, rozdzielczość). Jeśli bufor jest sprzętowy, tutaj następuje także miksowanie buforów drugorzędnych i nakładanie na nie efektów specjalnych. Stąd gotowy strumień dźwięku (Mono, Stereo lub wielokanałowy) trafia do wyjścia dźwięku urządzenia.

DirectSound3D - podobnie jak poprzednik jest środowiskiem programistycznym, mającym jednak inne przeznaczenie i funkcjonalność. Jest pomostem łączącym interfejs renderowania grafiki trójwymiarowej (np. Direct3D) z DirectSound. Rozszerza on możliwości tego ostatniego o pozycjonowanie źródeł dźwięku w wirtualnym środowisku odsłuchowym na podstawie informacji o pozycjach obiektów dostarczanych przez interfejs Direct3D. Udostępnia on filtry HRTF, odpowiadające za przetwarzanie dźwięku tak, aby jak najwierniej odwzorować jego barwę, opóźnienie, dynamikę w środowisku naturalnym. Innymi słowy, filtry HRTF sprawiają, że dźwięk odtwarzany na słuchawkach jest przetworzony tak, aby słuchacz mógł precyzyjnie określić lokalizację jego źródła (w przypadku dźwięku wielokanałowego). Są one stosowane także w przypadku konfiguracji opartej na parze głośników lub zestawach wielokanałowych. Pierwotnie DirectSound3D realizowany był wyłącznie przez CPU, co stanowiło otwarcie drogi dla innego interfejsu. Ten szybko wyrósł na potężną konkurencję dla DS3D i jednocześnie na ogromny orzech do zgryzienia dla Creative Labs. O tym jednak trochę później.

DirectSound pomimo ogromnej popularności, bardzo dobrych opinii programistów i świetnych rezultatów praktycznych został przez firmę Microsoft skreślony, a jego rozwój zatrzymany. Po prawie dwunastu latach postępów w rozwoju DirectSound, podjęto sprawiającą ogromne problemy producentom kart dźwiękowych i gier decyzję. Najnowszy system operacyjny firmy Microsoft (Windows Vista) został całkowicie pozbawiony możliwości sprzętowego przetwarzania dźwięku (na poziomie jądra systemu), a z dziesiątej wersji DirectX, DirectSound i DirectSound3D znikły bez śladu. Są to dwa z niewielu przypadków doskonale funkcjonujących rozwiązań Microsoftu, które wyłącznie ze względów zarobkowych poddano egzekucji. Następcą obu standardów jest Microsoft XACT, czyli dziwaczny twór całkowicie na siłę przeniesiony z konsol Microsoft Xbox 360 na komputery PC.

XACT (XAudio) - nowy interfejs programowania Microsoftu, wchodzący w skład pakietu DirectX 10, zastępujący DirectSound i eliminujący sens istnienia DirectSound3D. Jest także jednym z elementów pakietu Microsoft XNA, pierwotnie przeznaczonego dla konsol Xbox 360. XACT w przeciwieństwie do swoich poprzedników nie pozwala aplikacjom uzyskać bezpośredniego dostępu do karty dźwiękowej. Skutkiem jest konieczność przerzucenia wszystkich operacji przetwarzania dźwięku na CPU. Ponadto względem DirectSound3D, XACT oznacza utratę wielu sprzętowych rozwiązań ("nakładek" na DS3D) jak na przykład Creative EAX, QSound QEM, czy systemów wirtualizacji przestrzennej dźwięku (Aureal A3D, Creative CMSS-3D, QSound QMSS, Sensaura 3DPA). Interfejs ten nie obejmuje wsparcia dla sprzętowych filtrów HRTF oraz rozszerzeń EAX. XACT wstępnie został opracowany dla konsol do gier Microsoft Xbox, jednakże producent podjął decyzje mające na celu zbliżenie do nich platformy Windows Vista. Dlatego też DirectSound i jego trójwymiarowy brat musieli odejść, a "pecetowi" gracze, pod względem przetwarzania dźwięku w grach cofnąć się niemal do czasów MS-DOS.

Nowy interfejs Microsoftu reguluje przetwarzanie przez aplikacje tzw. banków dźwięków (Sound banks). Są to pojedyncze pliki typu Wave zawierające zestawy różnych dźwięków. Podczas pracy aplikacji bank może zostać załadowany do pamięci operacyjnej, a CPU zależnie od potrzeb pobiera z niego fragment zawierający potrzebny dźwięk.

W kwietniu 2007 roku pojawiły się plotki mówiące o tym, że Microsoft rozważa wprowadzenie zmian w jądrze systemowym Windows Vista i przywrócenie DirectSound i DirectSound3D. Dziś wiadomo już, że nie należy oczekiwać żadnych zmian w tej kwestii. Microsoft stawia na swoim i nie zamierza cofnąć się ani o krok. Programiści odpowiedzialni za nowy stos audio Windows Vista i XAudio wydają się być tak zachwyceni swoim wytworem i odporni na krytykę producentów sprzętu, oprogramowania i wreszcie sporej części klientów, że trudno spodziewać się ujawnienia zdolności do popukania się w czoła. Paranoja napędzana przez budzący sporą nieufność system zabezpieczeń multimediów DRM wydaje się być nie do sforsowania. To właśnie on leży u podstaw zawalenia się dorobku dziesięciolecia rynku PC Audio. Aby DRM mógł funkcjonować, przetwarzanie dźwięku musi odbywać się pod ścisłą kontrolą systemu operacyjnego, a więc CPU.

Ostatnią deską ratunku przed XAudio jest otwarty interfejs programowania OpenAL, stworzony pierwotnie przez firmę Loki Software, trudniącą się przenoszeniem gier z platformy Windows na Linux (Loki wydawała linuksowe edycje gier Quake III Arena, Soldier of Fortune, Descent 3, Heretic II, Unreal Tournament i kilku innych). Nowy interfejs miał wspomóc firmę podczas portowania gier na Linuksa. Efekty jednak przeszły wszelkie oczekiwania...

Dokładnie w tym samym czasie, gdy pojawiły się pierwsze doniesienia o tym, że firma Creative Labs rozpocznie sprzedaż swoich procesorów dźwięku innym firmom, które będą dzięki temu mogły produkować własne karty dźwiękowe, w oparciu o układy X-Fi (przynajmniej na obecną chwilę), Microsoft zapowiedział XAudio 2 - interfejs wzbogacony m.in. o nowe filtry HRTF. W ten sposób uzyskamy funkcjonalnie niemal ten sam interfejs, co DirectSound(3D) z 1997 roku, tyle że realizowany przez CPU. Programiści Microsoftu najwyraźniej przestraszyli się wizji spopularyzowania interfejsu OpenAL poprzez wypełnienie rynku kartami dźwiękowymi w pełni sprzętowo z nim zgodnymi. Ogromnym możliwościom OpenAL XAudio 2 nie ma jednak szans zagrozić. W praktyce jednak to Microsoft dyktuje warunki i dni OpenAL już niebawem mogą się okazać policzone.

Symptomatyczne wydają się ostatnie wypowiedzi "przodowników pracy" wśród producentów gier. Zarówno John Carmack (id Software), jak i Gabe Newell (Valve Software) krytykują sposób, w jaki Microsoft manipuluje rynkiem gier za pomocą DirectX 10. Carmack bardzo stanowczo stwierdza, że nie zamierza rezygnować z OpenGL i OpenAL jako podstawowych interfejsów programowania gier id Software. Inny producent gier, Electronic Arts planujący rozszerzyć swoją ofertę gier dla komputerów firmy Apple Computer, także coraz chętniej sięga po OpenAL. W przypadku gier dla Windows panuje pewna dezorientacja. Głośna gra Crysis (Electronic Arts) korzysta bowiem z całkowicie programowego silnika przetwarzania dźwięku FMOD Ex.

Strona:
  1. Wstęp
  2. Historia rynku - 1981-1986, era dźwięku pikanego
  3. Historia rynku - 1987-1990, pierwsze potyczki
  4. Historia rynku - 1991-1994, wojna = wszystkie chwyty dozwolone
  5. Historia rynku - 1995-1996, AMD i NVIDIA z odsieczą
  6. Historia rynku - Nowa era
  7. Monopol Creative - fakt czy mit?
  8. API, API, cztery API! Microsoft
  9. API, API, cztery API! OpenAL
  10. OpenAL: Na co? Po co?
  11. Creative ALchemy - remedium na Vistę?
  12. Integry kontra karty, czyli "Neverending story"
  13. Dźwięk 3D w grach
  14. Creative EAX
  15. QSound Q3D Interactive
  16. Sensaura 3DPA
  17. Coś z niczego: sztuczne 3D
  18. Sztuczne 3D w praktyce
  19. 0110001100100111 bzzz!
  20. Podłączamy
  21. Rozstawiamy głośniki
  22. Aureal Vortex 2 - sprzęt
  23. Aureal Vortex 2 - oprogramowanie
  24. Sound Blaster Live! - sprzęt
  25. Sound Blaster Live! - oprogramowanie
  26. Sound Blaster Audigy - sprzęt
  27. Sound Blaster Audigy - oprogramowanie
  28. Sound Blaster Audigy 2 - sprzęt
  29. Sound Blaster Audigy 2 - oprogramowanie
  30. Sound Blaster Audigy 2 ZS - sprzęt
  31. Sound Blaster Audigy 2 ZS - oprogramowanie
  32. Sound Blaster X-Fi - sprzęt
  33. Sound Blaster X-Fi - sprzęt c.d.
  34. Sound Blaster X-Fi - oprogramowanie
  35. Sound Blaster X-Fi - oprogramowanie c.d.
  36. Sound Blaster X-Fi Elite Pro - sprzęt
  37. Audiotrak Prodigy 7.1 HiFi - sprzęt
  38. Audiotrak Prodigy 7.1 HiFi - oprogramowanie
  39. Speed Link SL-8870 - sprzęt
  40. Speed Link SL-8870 - oprogramowanie
  41. Razer Barracuda AC-1 - sprzęt
  42. Razer Barracuda AC-1 - oprogramowanie
  43. ASUS Xonar D2 - sprzęt
  44. ASUS Xonar D2 - oprogramowanie
  45. Integry
  46. Podsumowanie prezentacji
  47. Zestawy testowe
  48. RightMark 3DSound Benchmark
  49. Splinter Cell: Double Agent
  50. Prey
  51. Battlefield 2
  52. Half-Life 2
  53. F.E.A.R.
  54. Podsumowanie
  55. Podsumowanie c.d.
8