# OpenAL

OpenAL (Open Audio Library) è un software libero che fornisce API audio multi piattaforma. È progettata per un rendering efficiente di audio posizionale a tre dimensioni. Il suo stile e convenzioni delle API ricalcano deliberatamente quelle delle OpenGL.

## Storia

OpenAL fu sviluppata originariamente dalla Loki Software per aiutarli nel loro business di portare giochi Windows su Linux. Dopo la fine di Loki, il progetto fu mantenuto per un certo periodo di tempo dalla comunità del software libero ma è ora mantenuta (e largamente supportata) dalla Creative Technology con un supporto in corso per Apple ed entusiasti del free software/open source.
Mentre il capo delle OpenAL dice che ci sarà un "Architecture Review Board" (ARB) modellato sulle ARB delle OpenGL, nessuna organizzazione si è mai formata e le specifiche delle OpenAL sono generalmente gestite e discusse via e-mail sulla mailing list pubblica.

## Struttura delle API e funzionalità

Le funzionalità generali di OpenAL sono codificate in oggetti sorgenti, audio buffer e singoli listener. Un oggetto sorgente contiene un puntatore ad un buffer, la velocità, posizione, direzione di un suono e la sua intensità. L'oggetto listener contiene la velocità, posizione, direzione del listener e il guadagno generale applicato a tutti i suoni. I buffer contengono i dati audio nel formato PCM, sia ad 8 che 16 bit, sia in formato mono che stereo. Il motore di renderizzazione esegue tutti i calcoli necessari così come le attenuazioni dovute alle distanze, Effetto Doppler, etc...
Il risultato finale di tutto questo per l'utente finale è che per le applicazioni scritte per utilizzare OpenAL, il suono si comporta abbastanza naturalmente mentre l'utente si muove attraverso lo spazio tridimensionale del mondo virtuale.
Diversamente dalle specifiche OpenGL, le specifiche OpenAL includono due sottoinsiemi delle API: il core, consistente nelle vere chiamate alle funzioni OpenAL, e le API ALC che vengono usate per gestire la renderizzazione del contesto, utilizzo delle risorse ed il locking nelle applicazioni cross platform. C'è anche una libreria 'ALUT' che fornisce funzioni di più alto livello; l'esatto analogo delle librerie GLUT in relazione alle OpenGL.
Per poter fornire funzioni aggiuntive in futuro, OpenAL utilizza un meccanismo di estensioni. Fornitori individuali sono riusciti anche ad includere le loro proprie estensioni nelle distribuzioni di OpenAL, generalmente con lo scopo di mostrare le funzionalità aggiuntive sui loro hardware proprietari. Le estensioni possono essere promosse allo stato di (Architecture Review Board), che indicano una estensione standard per la retrocompatibilità. Le estensioni ARB hanno il prospetto di essere aggiunte alle API principali dopo un certo periodo di tempo.

## Portabilità

L'API è disponibile per le seguenti piattaforme:
* Microsoft Windows
* GNU/Linux (supporto sia OSS che ALSA)
* macOS
* PlayStation 3
* BSD
* Solaris
* IRIX
* Xbox
* Xbox 360
* MorphOS

## Applicazioni

Giochi:
* I motori di gioco della id Software come Doom 3, Jedi Knight 2, Jedi Knight: Jedi Academy, Quake 4 e Prey.
* Giochi basati su Unreal Technology come Unreal 2, Unreal Tournament 2003, Unreal Tournament 2004, Postal², e America's Army.
* Battlefield 2, Battlefield 2142, Freedom Fighters, Hitman, Psychonauts, Sacred 2, e Colin McRae: DiRT.
* Numerosi giochi free software/open-source usano anche OpenAL. Alcuni esempi includono OpenArena, War§ow e Warzone 2100.
Altre applicazioni:
* Blender - Tool di modellazione 3d.
* Unity - Motore di sviluppo giochi 3D e IDE.
Una lista più esaustiva può essere trovata sul sito di OpenAL.