Files
livecodingfr/articles/scheme.html
Bubobubobubobubo 2ddf3c556f deploy: 85d28fcb86
2025-07-01 00:05:44 +00:00

53 lines
11 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#ffffff">
<link href="../_app/immutable/assets/0.2dCqWpGr.css" rel="stylesheet">
<link rel="modulepreload" href="../_app/immutable/entry/start.5YLs103A.js">
<link rel="modulepreload" href="../_app/immutable/chunks/scheduler.aZRR5A_O.js">
<link rel="modulepreload" href="../_app/immutable/entry/app.i08eSpn0.js">
<link rel="modulepreload" href="../_app/immutable/chunks/preload-helper.0HuHagjb.js">
<link rel="modulepreload" href="../_app/immutable/chunks/index.kYoizZ4A.js">
<link rel="modulepreload" href="../_app/immutable/nodes/0.4o9Fw0YJ.js">
<link rel="modulepreload" href="../_app/immutable/nodes/5.jhkcUtER.js">
<link rel="modulepreload" href="../_app/immutable/chunks/dynamic-import-helper.0gtGTknh.js">
</head>
<body data-sveltekit-preload-data="hover">
<div style="display: contents"> <div><div class="bg-neutral-800"><nav class="px-8 py-2 flex justify-between items-center"><div class="flex items-center justify-between w-full"><a href="/" class="website-title text-2xl font-bold bg-gradient-to-r from-orange-700 via-blue-500 to-green-400 text-transparent bg-clip-text animate-gradient" data-svelte-h="svelte-15xybd8">livecoding.fr</a> <div class="lg:hidden"><button type="button" class="text-gray-100 hover:text-gray-400 focus:outline-none focus:text-gray-400" data-svelte-h="svelte-vbp173"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"></path></svg></button></div></div> <div class="hidden lg:flex lg:items-center lg:space-x-10" data-svelte-h="svelte-1ydj4af"><a href="/evenements" class="titlebar-link">Évènements</a> <a href="/membres" class="titlebar-link">Membres</a> <a href="/outils" class="titlebar-link">Outils</a> <a href="/guides" class="titlebar-link">Guides</a> <a href="/articles" class="titlebar-link">Articles</a> <a href="/reseaux" class="titlebar-link">Réseaux</a> <a href="/ressources" class="titlebar-link">Ressources</a> <a href="/presse" class="titlebar-link">Presse</a> <a href="/contacts" class="titlebar-link">Contact</a></div></nav> <div class="lg:hidden hidden"><div class="px-2 pt-2 pb-3 space-y-1 sm:px-3" data-svelte-h="svelte-1sqq9eu"><a href="/evenements" class="mobile-menu-link block">Évènements</a> <a href="/membres" class="mobile-menu-link block">Membres</a> <a href="/outils" class="mobile-menu-link block">Outils</a> <a href="/guides" class="mobile-menu-link block">Guides</a> <a href="/articles" class="mobile-menu-link block">Articles</a> <a href="/reseaux" class="mobile-menu-link block">Réseaux</a> <a href="/ressources" class="mobile-menu-link block">Ressources</a> <a href="/presse" class="mobile-menu-link block">Presse</a> <a href="/contacts" class="mobile-menu-link block">Contact</a></div></div></div></div> <main class="bg-neutral-900"><div class="drawer lg:drawer-open"><input id="my-drawer-2" type="checkbox" class="drawer-toggle"> <div class="drawer-content space-y-4 flex flex-col lg:px-16 px-4 py-8"><article><h1>Scheme for Max/Pure Data : LISP encore et toujours</h1> <div class="pt-4 flex justify-between mb-12"><p class="inline font-bold">Publié le : 2024-02-11</p> <p class="inline font-bold">Auteur : Raphaël Maurice Forment</p></div> <div class="lg:px-12 content-center"><img src="https://repository-images.githubusercontent.com/232438669/2786d100-7d94-11ea-81b9-74d9e19db04a" alt="Biset Blank" style="display:block; margin-left:auto;margin-right:auto;max-width:500px;width:75%"> <br> <h2 data-svelte-h="svelte-1v4p4uu">Présentation</h2> <p data-svelte-h="svelte-1t86df7">Iain Duncan est lauteur de deux utilitaires, <a href="https://github.com/iainctduncan/scheme-for-max" rel="nofollow">Scheme for Max</a> et <a href="https://github.com/iainctduncan/scheme-for-pd" rel="nofollow">Scheme for Pure
Data</a>. Ces deux outils font
sensiblement la même chose, à différents niveaux davancement. Ils intègrent un
interpréteur pour le langage <a href="https://ccrma.stanford.edu/software/snd/snd/s7.html" rel="nofollow">S7 Scheme</a> (publié par Bill Schottstaedt au <a href="https://ccrma.stanford.edu/" rel="nofollow">CCRMA</a>) et permettent de contrôler plus ou moins finement Max ou Pure Data directement depuis LISP. Vous pouvez programmer vos propres séquenceurs, manipuler des données, générer des tableaux et des <em>buffers</em> etc. S7 est un dialecte de Scheme/LISP qui a été conçu pour être facilement intégré dans différentes applications. Cest un langage léger et facile à porter un peu partout. Il a initialement été développé par un musicien pour des musiciens. Il existe une longue tradition dans les milieux créatifs qui consiste à présenter les langages de la famille LISP comme particulièrement adaptés au travail en musique. Il suffit de regarder des outils comme <a href="https://opusmodus.com/forums/live-coding-instrument/" rel="nofollow">OpusModus</a>, <a href="https://extemporelang.github.io/" rel="nofollow">ExTempore</a>, <a href="https://github.com/overtone/overtone" rel="nofollow">Overtone</a>, <a href="https://incudine.sourceforge.net/" rel="nofollow">Incudine</a>, <a href="https://github.com/byulparan/cl-collider" rel="nofollow">cl-collider</a> ou encore <a href="https://www.ircam.fr/transmission/formations-professionnelles/openmusic" rel="nofollow">OpenMusic</a> pour sen convaincre. Tous réinventent la même idée : faire de LISP un environnement de choix pour la composition électronique/algorithmique. Lutilisation de Scheme for Max et de Scheme for Pure Data sadresse à des <em>live coders</em> expérimentés et qui maîtrisent déjà un petit peu la programmation et lutilisation de Max/Pure Data. Il ne faut pas non plus être effrayé de laspect académique et un peu <em>nerd</em> de lexpérience. On fait beaucoup de programmation et de technique pour développer, <em>in fine</em>, des super pouvoirs et une maîtrise inégalée de lenvironnement de composition.</p> <br> <iframe width="800" height="600" src="https://www.youtube.com/embed/rcLWTjN4qBI" title="Stochastic Study #1 for Scheme for Max and modular synthesizer, Iain C.T. Duncan (2021)" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen style="display:block; margin-left:auto;margin-right:auto;max-width:800px;width:75%"></iframe> <br> <p data-svelte-h="svelte-czrwfr">Iain Duncan est lun des derniers musiciens frappés par le sortilège LISP et il a pris le
temps de publier <a href="https://iainctduncan.github.io/scheme-for-max-docs/s7.html#about-s7-and-s74-scheme" rel="nofollow">quelques</a> <a href="https://iainctduncan.github.io/scheme-for-max-docs/motivations.html" rel="nofollow">documents</a> qui détaillent les avantages de LISP pour le travail en musique. Ces outils sadressent à un public qui aime expérimenter et qui préfère développer de petites librairies/fonctions réutilisables entre différents <em>patchs</em> plutôt que de tout sacrifier pour apprendre lutilisation dun <em>framework</em> ou dun outil/usine à gaz. La documentation est très bien faite et cela vaut le coup de tout lire ne serait-ce que pour sen imprégner. Même si le fait dapprendre LISP peut engendrer des réticences plus ou moins justifiées, faire un petit <em>patch</em> pour essayer na jamais tué personne. Contrairement à dautres familles de langages, LISP, il est vrai, à lair <em>naturellement</em> et presque par accident adapté à la pratique du <em>live coding</em>.</p> <br> <h2 data-svelte-h="svelte-grw4hp">Conclusion</h2> <br> <img src="https://imgs.xkcd.com/comics/lisp_cycles.png" alt="Biset Blank" style="display:block; margin-left:auto;margin-right:auto;max-width:800px;width:75%"> <br> <p data-svelte-h="svelte-1df9fw3">Quelle conclusion tirer de tout cela ? Aucune idée. Parler des langages LISP comme dun outil ou dune expérience magique est un poncif un peu usant à la longue. Si les langages LISPs étaient vraiment nécessaires et adaptés, pourquoi ne sont-ils pas utilisé partout et tout le temps ? Il semble que le vent ait juste tourné et que les langages LISP se soient retrouvés dans une niche quils narrivent désormais plus vraiment à quitter. Les langages LISP restent présents un peu partout en informatique musicale, surtout dans les coulisses, et ressurgissent périodiquement pour nous rappeler à quel point ils sont élégants, adaptés et efficaces. Essayez Scheme for Pure Data et faites vous une idée par vous-même.</p> <p class="rounded-lg font-bold border-2 py-2 pl-2 mt-8 bg-neutral-800" data-svelte-h="svelte-o6y0y"><a href="/articles">Revenir à l&#39;index</a></p></div></article></div> <div class="drawer-side no-scrollbar m-0 lg:block hidden" data-svelte-h="svelte-si3uu3"><label for="my-drawer-2" aria-label="close sidebar" class="drawer-overlay scrollbar-hide whitespace-nowrap overflow-hidden no-scrollbar"></label> <ul class="menu sidemenu-style no-scrollbar my-0"><li class="sideli"><a class="sidebar-link" href="/evenements">Évènements</a></li> <li class="sideli"><a class="sidebar-link" href="/membres">Membres</a></li> <li class="sideli"><a class="sidebar-link" href="/outils">Outils</a></li> <li class="sideli"><a class="sidebar-link" href="/guides">Guides</a></li> <li class="sideli"><a class="sidebar-link" href="/articles">Articles</a></li> <li class="sideli"><a class="sidebar-link" href="/reseaux">Réseaux</a></li> <li class="sideli"><a class="sidebar-link" href="/ressources">Ressources</a></li> <li class="sideli"><a class="sidebar-link" href="/presse">Presse</a></li> <li class="sideli"><a class="sidebar-link" href="/contacts">Contact</a></li></ul></div></div></main> <footer class="footer-style" data-svelte-h="svelte-1gkeg8z"><div class="flex justify-between"><p class="inline indent-4 text-bold text-white">Raphaël Forment</p> <p><a class="inline pl-4" href="https://github.com/Bubobubobubobubo/livecodingfr">GitHub</a></p></div></footer>
<script>
{
__sveltekit_1f3gh83 = {
base: new URL("..", location).pathname.slice(0, -1),
env: null
};
const element = document.currentScript.parentElement;
const data = [{"type":"data","data":null,"uses":{}},null];
Promise.all([
import("../_app/immutable/entry/start.5YLs103A.js"),
import("../_app/immutable/entry/app.i08eSpn0.js")
]).then(([kit, app]) => {
kit.start(app, element, {
node_ids: [0, 5],
data,
form: null,
error: null
});
});
}
</script>
</div>
</body>
</html>