OpenAL là giao diện lập trình ứng dụng âm thanh đa nền tảng (API). OpenAL là một thư viện âm thanh 3D dựa theo môi trường, có thể giúp tăng tính chân thực cho game bằng cách mô phỏng độ giảm dần của âm thanh theo khoảng cách, hiệu ứng Doppler (thay đổi tần số do chuyển động) và mật độ vật chất.
OpenAL là gì?
Được phát triển bởi Loki Software vào năm 2000, Open Audio Library, thường được gọi là OpenAL, là một API âm thanh và có sẵn cho nhiều hệ điều hành. OpenAL được sử dụng để kết xuất âm thanh 3D đa kênh. Phong cách API của OpenAL rất giống với OpenGL.
OpenAL cũng được thiết kế để thay thế các hệ thống âm thanh 3D độc quyền khác, như EAX và A3D. Như đã nói ở trên, OpenAL có khả năng mô phỏng sự suy giảm âm thanh, hiệu ứng Doppler và mật độ vật chất, làm cho các game video trở nên chân thực hơn.
Cấu trúc và chức năng của OpenAL
Chức năng chung của OpenAL được mã hóa trong các source object (đối tượng nguồn), buffer âm thanh và một listener (trình nghe đơn). Một source object chứa một pointer (con trỏ) tới buffer, vận tốc, vị trí, hướng và cường độ của âm thanh. Listener object chứa vận tốc, vị trí và hướng của listener, cũng như mức tăng chung áp dụng cho tất cả âm thanh. Buffer chứa dữ liệu âm thanh ở định dạng PCM, 8 bit hoặc 16 bit, thuộc dạng mono hoặc stereo. Công cụ kết xuất thực hiện tất cả các tính toán cần thiết cho việc suy giảm âm thanh theo khoảng cách, hiệu ứng Doppler, v.v...
Kết quả cuối cùng của tất cả những điều này đối với người dùng cuối là trong một ứng dụng OpenAL được viết đúng cách, âm thanh hoạt động khá tự nhiên khi người dùng di chuyển qua không gian ba chiều của thế giới ảo. Từ quan điểm của một lập trình viên, việc thực hiện điều này trong một ứng dụng đồ họa 3D dựa trên OpenGL hiện có khá đơn giản.
Không giống như OpenGL, đặc điểm kỹ thuật của OpenAL bao gồm hai phần phụ cho API: Lõi bao gồm các lệnh gọi hàm OpenAL thực tế và API ALC (Audio Library Context), được sử dụng để quản lý rendering context (bối cảnh kết xuất), việc sử dụng và khóa tài nguyên theo phương thức đa nền tảng. Ngoài ra, còn có thư viện ALUT (Audio Library Utility Toolkit), cung cấp các chức năng tiện lợi ở cấp độ cao hơn, hoàn toàn tương tự với GLUT của OpenGL.
Để cung cấp chức năng bổ sung trong tương lai, OpenAL sử dụng cơ chế tiện ích mở rộng. Do đó, các nhà cung cấp riêng lẻ có thể đưa những tiện ích mở rộng của riêng họ vào các bản phân phối OpenAL, thường nhằm mục đích thêm chức năng bổ sung cho phần cứng độc quyền của hãng đó. Các tiện ích mở rộng có thể được chuyển sang trạng thái ARB (Architecture Review Board), cho biết tiện ích mở rộng tiêu chuẩn sẽ được duy trì để tương thích ngược. Các tiện ích mở rộng ARB có triển vọng được thêm vào API lõi sau một khoảng thời gian.
Để xử lý tín hiệu số nâng cao và hiệu ứng âm thanh với phần cứng được tăng tốc, có thể sử dụng EFX (Effects Extension) hoặc EAX (Environmental Audio Extension).