Кіріспе

Аудионы көрсетуге арналған API. OpenAL (Open Audio Library) – платформадан тәуелсіз аудио бағдарламалық интерфейс (API). Ол көп арналы үш өлшемді кеңістіктік дыбысты тиімді көрсету үшін жасалған. Оның API стилі мен қағидалары OpenGL-ге ұқсас. OpenAL – бұл қоршаған ортаның 3D аудио кітапханасы, ол дыбыстың қашықтықпен әлсіреуін (деградациясын), Доплер эффектісін (қозғалыс нәтижесінде жиіліктің өзгеруін) және материалдардың тығыздығын модельдеу арқылы ойынға реализм қоса алады. OpenAL бастапқыда меншік (және көбінесе бір-бірімен үйлеспейтін) 3D аудио API-лерін, мысалы, DirectSound және Core Audio-ны алмастыруға арналған ашық стандарт және ашық кодты құрал болған, бірақ іс жүзінде көптеген платформаларда бұл API-лердің немесе өндірушіге арналған өзгертілген нұсқаларының ортасында қолданылды. Алғашқы нұсқасы кейіннен меншікке айналып, қолдаусыз қалғанмен, OpenAL Soft сияқты ашық кодты нұсқалары бар.

Тарих

OpenAL бастапқыда 2000 жылы Loki Software компаниясы Windows ойындарын Linux-қа көшіру ісінде көмектесу үшін әзірленген. Loki тоқтатылғаннан кейін, жоба бір кезде еркін бағдарламалық қамтамасыз ету/ашық кодты қауымдастық тарапынан қолдауға алынып, NVIDIA nForce дыбыс карталары мен аналық платаларда іске асырылды. 2012 жылға дейін Creative Technology компаниясы оны ұйымдастырып (және көбінесе дамытты). 1.1 нұсқасынан бастап (2009 жылдан бері) Creative-тің үлгілік іске асырылымы меншік құқығына көшті, бірақ жобаның Subversion бастапқы код қоймасында еркін лицензиядағы соңғы нұсқалары әлі де қолжетімді. Дегенмен, OpenAL Soft кеңінен қолданылатын ашық кодты балама болып табылады және осы күнгі күшке дейін белсенді түрде күтіліп, жаңартылуда. OpenAL жарғысында OpenGL ARB үлгісіндегідей "Архитектураны қарау кеңесі" (ARB) құрылатыны айтылғанмен, мұндай ұйым ешқашан құрылмады және OpenAL спецификациясы көбінесе электрондық пошта арқылы жария тізімде талқыланады. Creative басқарған openal devel пошта тізімі 2003 жылдың наурыз айынан 2012 жылдың тамызына дейін жұмыс істеді. Loki ардагері, Simple DirectMedia Layer-ді жасаған Ryan C. Gordon 2014 жылдың қаңтарында OpenAL.org сайтында жаңа пошта тізімі мен веб-сайт ашты. 2023 жылдың ақпанына қарай бұл тізім әлі де қолданыста.

API құрылымы мен функционалдылығы

OpenAL-дың жалпы функционалдығы бастапқы нысандарда, дыбыс буферлерінде және бір тыңдаушыда кодталған. Көз объектісі буферге сілтеме, дыбыстың жылдамдығы, орны мен бағыты, сондай-ақ дыбыстың қарқындылығын қамтиды. Тыңдаушы объектісі тыңдаушының жылдамдығын, орнын және бағытын, барлық дыбысқа қолданылатын жалпы күшейтуді қамтиды. Буферлер аудио деректерді PCM форматында, 8 немесе 16 бит, моно немесе стерео форматта сақтайды. Рендеринг қозғалтқышы қашықтыққа байланысты әлсіреу, Доплер эффектісі және т.б. үшін қажетті есептеулердің барлығын жүргізеді. Бұның нәтижесінде, дұрыс жазылған OpenAL қолданбасында дыбыстар пайдаланушы виртуалды әлемнің үш өлшемді кеңістігінде қозғалғанда өте табиғи түрде әрекет етеді. Бағдарламашы үшін OpenGL негізіндегі 3D графикалық қолданбада мұны іске асыру үшін көп қосымша жұмыс қажет емес. OpenGL сипаттамасынан айырмашылығы, OpenAL сипаттамасы API-нің екі бөлімін қамтиды: нақты OpenAL функцияларын қамтитын негізгі бөлік және рендеринг контексттерін, ресурстарды пайдалануды және платформааралық түрде құлыптауды басқару үшін қолданылатын ALC (Audio Library Context) API. Сондай-ақ, OpenGL-дің "GLUT" сияқты жоғары деңгейлі, ыңғайлы функцияларды ұсынатын "ALUT" (Audio Library Utility Toolkit) кітапханасы бар. OpenAL болашақта қосымша функционалдық мүмкіндіктерді ұсыну үшін кеңейту механизмін пайдаланады. Жеке өндірушілер өз кеңейтулерін OpenAL дистрибутивтеріне қоса алады, әдетте олардың меншік аппараттық құралдарында қосымша мүмкіндіктерді ашу үшін. Кеңейтулер ARB (Architecture Review Board) статусына көтерілуі мүмкін, бұл стандартты кеңейтуді білдіреді және кері үйлесімділікті сақтау үшін қолдау көрсетіледі. ARB кеңейтулері белгілі бір уақыт өткен соң негізгі API-ге қосылуы мүмкін. Жоғары деңгейдегі цифрлық сигналды өңдеу және аппараттық үдетілген дыбыс эффектілері үшін EFX (Effects Extension) немесе қоршаған орта дыбысы кеңейтулерін (EAX) пайдалануға болады.

Шектеулер

OpenAL-дегі бір тыңдаушы моделі бір адам пайдаланушысына бағытталған және жасанды интеллектке, роботтық симуляцияларға немесе бірлескен музыкалық орындаудағы бірнеше қатысушыларға жарамсыз. Мұндай жағдайларда көп тыңдаушы моделі қажет. OpenAL сонымен қатар дыбыс таралу кешігуін ескермейді (дыбыс жылдамдығы тек Доплер эффектісі үшін қолданылады). Дыбыс көзіне дейінгі қашықтық тек амплитудаға (әлсіреуге) әсер етеді, ал кешігуге емес. Сондықтан, егер қосымша функционал енгізілмесе, OpenAL-ды келу уақытының айырмасын есептеу үшін қолдануға болмайды. OpenAL-дың толық мүмкіндіктерін пайдалану үшін, сатушының/аппараттық ерекшелігі бар жүзеге асырылу қажет, бірақ олар көбінесе ашық код ретінде жарияланбайды. Көптеген қолдау көрсетілетін платформалар OpenAL-ды платформаның түпкілікті және көбінесе меншік аудио API-ға шақыруларды аударатын орауыш ретінде іске асырады. Windows-та, егер сатушының ерекшелігі бар жүзеге асырылу табылмаса, ол oal.dll орауыш кітапханасына қайта оралады, ол OpenAL-ды DirectSound (Жалпы бағдарламалық қамтамасыз ету) немесе DirectSound3D (Жалпы аппараттық қамтамасыз ету) форматына аударады; соңғысы Windows Vista және одан кейінгі нұсқаларынан алынып тасталғандықтан, қазіргі Windows нұсқаларында аппараттық үдету іс жүзінде тоқтатылды.

Қолдауы бар платформалар

API келесі платформалар мен операциялық жүйелерде қол жетімді: Android (OpenSL ES қолдайды), AmigaOS 3. x және 4. x, Bada, BlackBerry 10, BlackBerry PlayBook, BSD, iOS (Core Audio қолдайды), IRIX, Linux (ALSA, OSS, PortAudio және PulseAudio қолдайды), Mac OS 8, Mac OS 9 және Mac OS X (Core Audio), Microsoft Windows (DirectSound, Windows Multimedia API және Windows Multimedia Device (MMDevice) API қолдайды), MorphOS, OpenBSD, Solaris, QNX және AROS. Сонымен қатар, қолдау көрсетілетін ойын құрылғылары мыналар: GameCube, PlayStation 2, PlayStation 3, Xbox, Xbox 360, Wii және PlayStation Portable.