# SoX

Le logiciel SoX (SOund eXchange, en français : « échange de son ») est un utilitaire pour Unix (dont Linux), MacOS et Windows, en ligne de commande permettant la manipulation de sons et leur conversions dans différents format audio. Il est en ce sens similaire à ImageMagick pour les images ou FFmpeg pour la vidéo.

## Fonctionnalités

SoX peut lire et enregistrer des sons depuis la majorité des plateformes en accédant aux périphériques audio.
Le Processeur de signal numérique (ou DSP) peut être utilisé pour l'accélération du traitement, sous Linux, l'interface ossdsp est utilisée via l'option -t ossdsp /dev/dsp, où /dev/dsp est le périphérique DSP à utiliser$^,$.
Il peut appliquer différents effets aux sons qu'il traite, notamment à l'aide du support des plugins LADSPA. Il peut fonctionner en multithread, afin d'accélérer les calculs d'effets et peut générer des scripts pour répondre aux effets des filtres, à l'aide de Gnuplot ou de GNU Octave. Les effets intégrés sont les suivants, ladspa servant à executer un plugin d'effet LADSPA :
Il a un système de ré-échantillonnage avancé, permettant par exemple ed ré-échantillonner du débit DAT au format CD.
SoX peut également encoder et décoder dans les formats les plus courants de fichiers audio : aac, avi, flac, Opus, mp3, ogg, wav, wmv. Il permet de convertir les fichiers .au en .wav. La liste complète des formats supportés de la version peut-être obtenue par sox --help. Par exemple la version 14.4.2, pour Arch Linux, donne en septembre 2020 :
La partie AUDIO DEVICE DRIVERS dépend du système d'exploitation.
SoX permet aussi d'ajouter des filtres lors de la conversion, de concaténer et de mixer plusieurs fichiers.

### Bibliothèque

En dehors de son utilisation en ligne de commande permettant de l'utiliser dans des scripts shell, le logiciel comprend une bibliothèque nommée libSox permettant l'intégration de toutes les fonctionnalités dans d'autres logiciels en langage C et des wrappers dans différents langages de programmation :
* PySoX pour Python.
* Sox-ruby pour Ruby
* Go-sox pour Go$^,$
Pour le langage Lua, il est possible d'utiliser les pipes shell pour échanger entre SoX et le module Luasynth

## Exemples de fonctionnement

La gestion des différents format de fichiers audio est transparente et détectée automatiquement pas SoX via l'extension du fichier (entrée et sortie), ou contenu (entrée).
La commande sox fichier lit le fichier audio. Cependant avec certains serveurs de son comme PulseAudio, il faut parfois contourner pour préciser le flux audio à utiliser. Pour Pulseaudio, par exemple, il faut passer par padsp (PulseAudioDSP) : padsp sox fichier -t ossdsp /dev/dsp
Pour enregistrer l'entrée son du système vers un fichier audio, il suffit d'inverser sortie et entrée : padsp sox -t ossdsp /dev/dsp fichier
La syntaxe pour convertir un fichier .au en .wav : sox fichiersource.au nouveaufichier.wav

## Historique

SoX fut créé en juin 1991 par Lance Norskog et posté sur le groupe Usenet alt.sources sous l'appellation Aural eXchange: Sound sample translator. Norskog continua de maintenir et de sortir SoX via Usenet, ftp et le web, jusqu'au début de 1995. En 1996, Chris Bagwell lance sa propre sortie du programme patché après avoir effectué le portage sous Linux et Sun.
Ce programme est sous licence GPL. La dernière version au 22 février 2015 est la 14.4.2, mais le développement est toujours actif en 2020.