Soul : un langage et un EDI pour le codage audio
Rend le codage audio plus accessible et améliore la productivité, selon son développeur

Le , par Bill Fassinou

60PARTAGES

6  0 
Soul est à la fois un langage de programmation et une infrastructure pour l'écriture et le déploiement de code audio présenté par Julian Storer, un programmeur C++. L’acronyme Soul est l'abréviation du groupe de mots “Sound Language”. Storer a présenté Soul comme une solution qui vise à fournir aux programmeurs des améliorations en termes de latence, de performances, de portabilité et de facilité de développement qui ne sont pas possibles avec les techniques classiques actuellement utilisées. Pour cela, Soul mise sur la vitesse et est moins sujet aux erreurs pour améliorer la productivité des experts tout comme des débutants.

Julian Storer a indiqué que la plateforme Soul est en même temps un langage et une API. Le langage est un petit DSL (Domain Specific Language) soigneusement conçu pour écrire les parties en temps réel d'un algorithme audio. L'API est conçue pour déployer ce code Soul sur des processeurs et des DSP hétérogènes, à la fois localement et à distance. Notons qu’un DSP (de l'anglais Digital Signal Processor, qu'on pourrait traduire par processeur de signal numérique ou traitement numérique de signal) est un microprocesseur optimisé pour exécuter des applications de traitement numérique du signal (filtrage, extraction de signaux, etc.) le plus rapidement possible.

Selon lui, les techniques de codage audio actuelles posent quelques problèmes qui limitent la performance des développeurs. En effet, il estime que les outils actuels de codage audio sont complexes et non portables. La méthode standard pour écrire du code audio hautes performances implique une connaissance du C/C ++, ce qui constitue un obstacle important pour la grande majorité des développeurs, a-t-il expliqué. C'est également, poursuit-il, un langage dangereux pour les débutants, et comme la plupart des passionnés d'audio sont plus intéressés par l'écriture d'algorithmes DSP que par le temps d'apprentissage de l'écriture en C ++ sécurisé, il n'est pas surprenant que l'industrie du logiciel audio soit en proie à de nombreuses erreurs.


Le codage audio a une courbe d'apprentissage abrupte pour les débutants, est laborieux et constitue une source d'erreurs pour les experts, et l'essentiel du code audio écrit est exécuté sur du matériel mal adapté à la tâche, dit-il. Ainsi, pour lui, il faudra résoudre tout ceci en trouvant un autre moyen d’exploiter les ressources des processeurs dont les architectures, autrefois limitées par la loi de Moore, se tournent aujourd’hui vers des architectures spécifiques connues sous le nom DSA pour des performances et des gains de puissance futurs. Storer a indiqué que cette tendance implique de rechercher des charges de travail pouvant être déplacées des processeurs classiques vers des processeurs spéciaux. Selon lui, les graphismes, l'apprentissage automatique et d'autres domaines de l'informatique ont déjà été transformés de cette manière et il est temps que la programmation audio suive le même chemin.

D’après lui, Soul résout un certain nombre de ces problèmes. Il rassure que Soul n’est pas un langage indépendant destiné à remplacer les langages classiques dans la programmation audio, mais il s’agit plutôt d’un langage spécifique à un domaine pour écrire uniquement du code en temps réel dans une application audio ou un plug-in. Soul a été conçu pour éliminer des catégories entières de gaffes de codage courantes, et son API masque la plupart des tâches standard que les applications audio devaient généralement fournir. Comme Soul est un langage intégré, explique-t-il, même les applications écrites dans des langages non natifs tels que JavaScript, Java, Python, etc. peuvent atteindre des performances du niveau du C ++ voire supérieures, sans que le développeur ait besoin d'apprendre le C ++ ou d'utiliser une chaîne de compilation.

En gros, Julian Storer suggère de considérer Soul comme un équivalent audio d'OpenGLSL ou d'OpenCL. Comme ces langages, vous écrirez généralement une application hôte (dans une autre langue) qui transmet un bloc de code Soul à l'API Soul. Ensuite, l'API se charge de compiler le code et l'envoie au meilleur pilote, CPU, DSP ou un périphérique externe disponible. Cela pourrait signifier qu'il ne fonctionne que sur votre processeur normal à l'aide d'un compilateur JIT (Just-In-Time). Si un DSP audio est disponible, il peut fonctionner sur cela. Ou bien, il peut envoyer le code à un périphérique d’E/S audio externe qui contient un processeur compatible Soul.

Le fait de fonctionner sur un système DSP/barre métal signifie que vous pouvez obtenir une latence et des performances bien meilleures que de l’exécuter sur un processeur, mais votre application n’a pas à s’inquiéter pour cela. Vous écrivez une fois, et l’API Soul se charge de la déployer sur toutes sortes d'architectures différentes. Tout ceci permet à Soul de fournir un temps de latence optimisé. Le langage Soul rend le codage audio plus accessible et moins sujet aux erreurs, améliorant ainsi la productivité des débutants et des experts.

Enfin, Julian Storer a indiqué que l’outil est destiné à tous les développeurs audio de tous les niveaux, des débutants absolus (pour qui la syntaxe, des API et des outils de développement basés sur un navigateur seront utiles) aux professionnels du son chevronnés (qui apprécieront sa promesse de temps de latence, développement et déploiement plus rapides sur le nouveau matériel accéléré). « Jusqu'à présent, votre code audio n’avait pas Soul. Plus rapide, plus économe en énergie, moins de latence, portable, et agréable à utiliser, c’est ainsi que l’audio sera écrit à l’avenir », a-t-il écrit sur le site officiel de la solution.

Cependant, certains doutent que Soul puisse mieux faire que les autres langages qui existent déjà pour le codage audio tels que Nyquist et Csound et remettent en cause les performances d’un environnement audio basé sur un navigateur. Par contre, pour d’autres c’est une bonne chose que la programmation audio par le biais d’un navigateur devienne effective. Selon eux, WebAssembly (WASM) finira probablement par rattraper son retard sur le C ++ natif compilé. Néanmoins, ajoutent-ils, il existe également une hypothèse selon laquelle même le C ++ nativement compilé ne peut pas obtenir les meilleures performances du matériel audio, car il s’exécute sur le processeur dans un système d'exploitation normal, ce qui est un mauvais endroit pour une tâche en temps réel comme la programmation audio.

Sources : Soul, GitHub

Et vous ?

Qu'en pensez-vous ?
L'avez-vous déjà essayé ? Quelle sont vos appréciations ?
Connaissez-vous d'autres alternatives à Soul ? Lesquelles ?

Voir aussi

Windows : les pilotes audio Conexant HD préinstallés sur 28 modèles de laptops HP contiennent un keylogger d'après la firme suisse modzero

GB Studio : un créateur de jeu vidéo rétro open source pour Nintendo Game boy disponible sur Mac, Linux et Windows

Nintendo a supprimé le jeu « A Dark Room » de son magasin de jeux Switch eShop, car son développeur a révélé qu'il contenait un éditeur de code secret

Une erreur dans cette actualité ? Signalez-le nous !

Contacter le responsable de la rubrique Programmation

Partenaire : Hébergement Web