Open Sound System
# Open Sound System

L'Open Sound System (OSS) è un framework portabile per la gestione della registrazione e riproduzione audio disponibile in undici diversi sistemi Unix-like.

Venne creato nel 1992 dal finlandese Hannu Savolainen.

In seguito al successo del progetto, Savolainen creò la compagnia 4Front Technologies e rese proprietari i suoi miglioramenti, cosa che potrebbe aver contribuito indirettamente alla creazione di ALSA. Il pacchetto proprietario, sviluppato dalla 4Front, è disponibile on-line. In ogni modo, i sistemi liberi GNU/Linux e BSD includono le proprie implementazioni libere.

## Limitazioni dell'OSS

L'API dell'OSS fu progettata al tempo in cui le schede audio erano molto più limitate rispetto ad oggi. Ciò risultò in una mancanza del supporto API per diverse funzioni come:

* Supporto hardware per MIDI (solitamente implementata da wavetable synthesis)
* Mixing hardware di più canali audio
* operazione Full duplex

Alcune di queste funzioni sono state implementate in seguito nei driver OSS, ma la mancanza di architettura unificata rende l'implementazione di queste funzioni meno elegante.

Queste limitazioni, in particolare per Linux, hanno ispirato il lavoro originale che più tardi diventò il progetto ALSA.

## API

L'API è progettata per utilizzare le funzioni tradizionali Unix come open, read, write e ioctl, tramite dispositivi speciali. Ad esempio, il dispositivo predefinito per l'ingresso e l'uscita audio è /dev/dsp.

Esempi usando la shell:

## OSS in relazione con ALSA

Nel caso del kernel Linux, OSS fu l'unico sistema sonoro supportato fino alla serie 2.4.x. A partire dalla versione 2.5 venne introdotto, ALSA, l'Advanced Linux Sound Architecture, e l'interfaccia OSS diventò deprecated dagli autori di Linux. ALSA contiene una modalità opzionale di emulazione dell'OSS che è riconosciuta dai programmi come se fosse OSS.

ALSA è l'interfaccia raccomandata per il software che lavorerà esclusivamente su Linux. Tuttavia, i programmi che devono essere portabili su altri sistemi UNIX (come i vari *BSD), utilizzano tipicamente OSS, oppure supportano entrambi i sistemi.

