Question:
Existe-t-il des langages de programmation de musique d'après l'ère SuperCollider?
Nathaniel
2016-08-07 09:05:56 UTC
view on stackexchange narkive permalink

L'histoire de la musique et des langages de synthèse sonore remonte aux langages Music N à partir des années 1950. Vous pouvez retracer les fils à partir de là vers une variété de langues qui ont été développées dans les années 90, notamment CSound, ChucK et SuperCollider. CSound pourrait être considéré comme le dernier des langages «traditionnels» de Music N, qui se concentrent principalement sur la synthèse sonore, tandis que ChucK et SuperCollider ajoutent également des outils flexibles pour la composition. (Il existe également une variété de langages graphiques pointer-cliquer tels que Max MSP et PureData qui descendent également du paradigme Music N, mais je ne suis intéressé que par pour le bien de cette question.)

SuperCollider a toujours été mon outil de choix. Il fournit une grande variété d'opcodes (modules de traitement de signal de bas niveau) et de nombreuses façons de les assembler à la volée, de déclencher des événements de manière algorithmique et de répondre de manière interactive aux signaux externes.

Cependant, SuperCollider est maintenant gentil de l'ancienne technologie. La première version est sortie en 1996 et la version 3 a été open-source en 2002. Bien qu'il y ait de nouvelles fonctionnalités depuis lors, le cœur du système de langage et de synthèse est inchangé et reste optimisé pour une machine du début des années 2000. En particulier, il est clairement défini dans un paradigme à processeur unique et ne peut pas tirer parti du parallélisme fourni par les GPU modernes, bien que la prise en charge de plusieurs cœurs de processeur ait été ajoutée. Il y a aussi certaines caractéristiques de son architecture qui seraient probablement repensées si elle était repensée maintenant. (Un exemple est la nécessité d'exécuter le serveur de synthèse en tant qu'application distincte du langage lui-même, ce qui rend la synchronisation d'échantillons très difficile à réaliser, entre autres.)

Je me demande donc s'il existe des successeurs de SuperCollider et de ses cousins ​​de cette époque, déjà existants ou à l'horizon, qui vont au-delà de ce qui peut être réalisé avec les outils listés ci-dessus. Les possibilités de parallélisme GPU semblent immenses, et il y a également eu des progrès dans la conception de langage de programmation depuis 2002 qui pourraient aboutir à un outil encore plus impressionnant et flexible. En particulier, les machines virtuelles peuvent maintenant être presque aussi efficaces que le code C nu, ce qui signifie que le code DSP pourrait être compilé juste à temps, supprimant la limitation de s'en tenir à un ensemble préprogrammé d'opcodes.

Quelqu'un at-il connaissance de développements ou de recherches dans ce sens? Je commence à me remettre à la composition musicale et à la programmation DSP après une longue période de travail avec d'autres choses, et ce serait vraiment génial d'avoir un nouvel outil passionnant à apprendre, avec des fonctionnalités qui vont au-delà de ce que j'ai utilisé avant. Comme mentionné ci-dessus, je parle de langages textuels pour la programmation DSP et la composition algorithmique, plutôt que de systèmes basés sur des correctifs visuels.

Pour résumer, mon principal intérêt est de savoir s'il existe des projets qui se concentrer sur des techniques de synthèse de pointe, en utilisant une nouvelle technologie qui n'était pas disponible au début des années 2000. (Mais les réponses qui énumèrent d'autres types de paquets sont également utiles.)

Supernova est le serveur de synthèse multi-CPU, et il est incorporé dans la base de code principale.
@PeterT est-ce? Ce n'est pas du tout évident sur le site Web, même en regardant le journal des modifications. Où est-il documenté et comment l'utiliser?
Sur la page d'accueil, puce sous les fonctionnalités de scsynth: `Prise en charge de plusieurs processeurs en utilisant l'implémentation du serveur Supernova` Je ne l'ai toujours pas vraiment utilisé, je ne sais pas si c'est le serveur par défaut ou si j'ai besoin d'ajuster la configuration. Il s'agit alors d'organiser les nœuds en p-groupes.
Il convient également de souligner que sc 3.7 est assez récent et devrait être bien optimisé pour les architectures CPU modernes. Je suis d'accord que gpu pourrait être intéressant, il peut y avoir des problèmes de latence. Je ne connais aucun environnement de type SuperCollider qui utilise largement gpu. Je devrais peut-être ajouter cela à ma réponse.
@PeterT, la compilation JIT du code DSP changerait également la donne, si elle existait dans un langage de type SuperCollider. Actuellement, nous sommes limités à un ensemble fini d'UGens, mais cela permettrait d'en générer de nouveaux à la volée. Ce serait un peu comme si Faust était parfaitement intégré au langage. Cela permettrait également d'effectuer très efficacement des opérations telles que la rétroaction d'un échantillon unique. Cela n'aurait pas été possible en 2002, mais les machines virtuelles sont maintenant beaucoup plus efficaces et je pense que ce serait possible maintenant.
Si vous recherchez des performances, il serait difficile de battre les outils d'optimisation multi-core de Haskell (c'est-à-dire essayez [Tidal] (https://tidalcycles.org/)).
@Nathaniel vous connaissez peut-être https://soul.dev/ Je pense que c'est beaucoup plus proche de ce que vous recherchiez. Peut-être pas «prêt pour les heures de grande écoute», mais à regarder.
@PeterT, vous devriez poster cela comme réponse! Je n'en étais pas conscient et c'est vraiment le genre de chose que je cherchais.
@PeterT une évaluation rapide: c'est un peu verbeux, mais il serait super facile de créer une interface plus accessible, semblable à SuperCollider en Python en utilisant son API, donc c'est génial. Cependant, ce n'est pas entièrement open source, et la FAQ dit "En fin de compte, nous prévoyons de commercialiser SOUL en octroyant des licences de pilotes back-end et d'autres IP pour une utilisation par les fournisseurs qui construisent des produits matériels compatibles SOUL." Cela me rend incertain s'il serait possible de faire cela en tant que projet open source, ce qui me rend triste.
@Nathaniel IIRC l'idée était que le similaire à OpenGL en termes de open-source il est je pense (les pilotes GPU ne sont généralement pas open source, GLSL est toujours utile). Je soupçonne que des «costumes» (pour le dire impoliment) ont pu être impliqués et que ce désir a peut-être été corrompu.
Cinq réponses:
PeterT
2016-08-07 13:34:31 UTC
view on stackexchange narkive permalink

Il existe en effet de nouveaux langages, ainsi que des bibliothèques dans d'autres langages. Je vais en énumérer quelques-uns qui me viennent à l'esprit, et peut-être revenir et développer ma réponse plus tard.

modifier 17/03: J'ai légèrement révisé la réponse. Notons que dans une large mesure, SuperCollider est souvent utilisé comme back-end pour les systèmes basés dans une gamme de paradigmes de langages &; dans certains cas, les systèmes qui, il y a quelques mois, lorsque j'ai écrit ceci, utilisaient leurs propres moteurs audio utilisent maintenant scsynth.

  • Sonic Pi - utilise son propre serveur, mais semble plus axé sur la facilité d'utilisation (en particulier pour une utilisation dans l'éducation) que sur les fonctionnalités de synthèse avancées. ( edit: utilise SuperCollider dans le back-end; un thème récurrent dans cette liste).
  • ChucK - pas très activement développé, mais très langage accessible avec quelques fonctionnalités intéressantes pour raisonner sur le temps qui vont au-delà du sucre syntaxique.
  • Tidal Cycles - Système basé sur Haskell principalement pour la composition générative plutôt que pour la conception de synthés. Utilise OSC pour contrôler d'autres applications (à l'origine, il s'agissait principalement du synthétiseur personnalisé Dirt , maintenant SuperDirt dans SuperCollider, mais aussi capable de travailler avec d'autres).
  • Overtone (bibliothèque Clojure) - Une interface SuperCollider dans Clojure.
  • Gibber - une interface JavaScript pour Web-Audio, qui est une API de synthèse basée sur ugen, une partie de HTML5 fonctionnant dans tous les navigateurs modernes.
  • Faust - un langage de niveau inférieur pour DSP qui se compile en plugins pour d'autres programmes, d'un millésime similaire à SuperCollider.
J'ai suggéré une modification qui ajoute des liens et de courtes descriptions à votre liste. Certains de ces projets sont nouveaux pour moi, veuillez donc corriger ma modification si l'une de mes descriptions est incorrecte ou incomplète. Aucun des projets listés n'aborde vraiment les principaux problèmes que j'ai identifiés, mais il est très utile d'avoir la liste.
Vouliez-vous dire Overtone pour la puce 4? http://overtone.github.io/
David Vogel
2016-08-07 18:58:33 UTC
view on stackexchange narkive permalink

Je recommanderais toujours Csound comme le meilleur outil pour la programmation audio basée sur du texte. Il est activement en cours de développement et a suivi le rythme des progrès récents. Une autre mention intéressante est une bibliothèque appelée pyo qui peut être utilisée avec Python 2.7 et Python 3.5+. Les développeurs pour cela ont beaucoup d ' autres outils intéressants que vous voudrez peut-être consulter. Si vous souhaitez approfondir votre connaissance de la programmation audio, " Le livre de programmation audio" est assez remarquable, même s'il est sorti en 2010.

polymechanos
2016-08-15 20:27:02 UTC
view on stackexchange narkive permalink

Il existe quelques cadres de composition algorithmiques intéressants basés sur le langage de programmation LISP:

Nyquist https://www.cs.cmu.edu/~music/nyquist/
Open Music http://repmus.ircam.fr/openmusic/home

Il existe un livre sur Nyquist écrit par des informaticiens / compositeurs qui développé le langage - algocompbook.com.
Open Music a été construit par des personnes de l'IRCAM - en.wikipedia.org/wiki/IRCAM -, un institut français de recherche sonore et de composition musicale électroacoustique - leur travail vaut le détour.

Pour un environnement de composition et de synthèse algorithmique LISP-ish moderne (peut-être pas pour les puristes LISP), Overtone est un bon pari.
Oui, Overtone est une autre option intéressante, probablement en cours de développement aussi - par rapport aux projets académiques plus anciens que j'ai mentionnés.
Phil Freihofner
2017-03-15 07:41:10 UTC
view on stackexchange narkive permalink

Je connais un type qui a écrit un système de synthé, en Java, qui peut être édité en direct. Il s’appelle Praxis LIVE et est d’origine récente, tirant parti des capacités de multithreading de Java. L'auteur est assez accompli, ayant également écrit JAudioLibs, qui inclut une liaison audio Java à JACK Audio Connection Kit.

Java peut faire beaucoup plus avec l'audio qu'on ne le croit généralement. Il est beaucoup plus proche du C ++ en termes de performances que Python ou JavaScript. J'ai piraté avec de l'audio 3D et un synthétiseur FM construit à partir de zéro en Java, également un thérémine en temps réel comme exemple de ce que Java peut faire. J'aime pouvoir rouler moi-même, jouer avec des idées plutôt que d'être limité par des systèmes de synthés. Il y a un peu d'obstacle à bien maîtriser les primitives Java Sound (par exemple, SourceDataLine), mais une fois que vous avez dépassé cela, il y a toutes sortes de choses qui peuvent être construites à partir de zéro si vous êtes si enclin.

Athina
2017-03-13 22:05:11 UTC
view on stackexchange narkive permalink

Il existe un livre de Will Pirkle intitulé Designing Audio Effect Plug-Ins in C ++: With Digital Audio Signal Processing Theory. Il vous présentera le système RackAFX utilisé avec Microsoft Visual C ++ 2008-2010. Vous pouvez utiliser RackAFX avec d'autres compilateurs C ++ autres que MSVBC ++. Vous utilisez RackAFX pour aider à concevoir l'interface graphique tandis que C ++ est utilisé pour écrire la partie de code DSP. RackAFX mettra automatiquement à jour le code à mesure que vous ajoutez des curseurs, des boutons et des boutons. Il existe de nombreux exemples de Delay, Filters, etc.

Il a deux livres, ils sont tous les deux géniaux. Il en va de même pour le livre d'Eric Lyon sur l'écriture de Max externals en C.Je pense que c'est vraiment comme ça que les choses se passent maintenant, les gens font leur audio dans des bibliothèques en C / C ++ et l'intègrent dans des environnements hôtes comme SuperCollider, Max, PD, etc.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...