This commit is contained in:
Bubobubobubobubo
2024-01-03 12:36:15 +00:00
parent 63961a573b
commit 9482affe55
115 changed files with 127 additions and 127 deletions

View File

@ -7,13 +7,13 @@
<meta name="theme-color" content="#ffffff">
<link href="../_app/immutable/assets/0.B2YDv0ji.css" rel="stylesheet">
<link rel="modulepreload" href="../_app/immutable/entry/start.lsAj1Ej8.js">
<link rel="modulepreload" href="../_app/immutable/entry/start.cKyxnSZP.js">
<link rel="modulepreload" href="../_app/immutable/chunks/scheduler.aZRR5A_O.js">
<link rel="modulepreload" href="../_app/immutable/entry/app.t1XFBWiS.js">
<link rel="modulepreload" href="../_app/immutable/entry/app.K3AlUOsq.js">
<link rel="modulepreload" href="../_app/immutable/chunks/preload-helper.0HuHagjb.js">
<link rel="modulepreload" href="../_app/immutable/chunks/index.AIcdAWo0.js">
<link rel="modulepreload" href="../_app/immutable/nodes/0.uMzUYRGs.js">
<link rel="modulepreload" href="../_app/immutable/nodes/9.ceqUHxWv.js">
<link rel="modulepreload" href="../_app/immutable/nodes/9.YZ57kV9v.js">
<link rel="modulepreload" href="../_app/immutable/chunks/dynamic-import-helper.0gtGTknh.js">
</head>
<body data-sveltekit-preload-data="hover">
@ -21,7 +21,7 @@
<script>
{
__sveltekit_9w4fen = {
__sveltekit_1vsa1vc = {
base: new URL("..", location).pathname.slice(0, -1),
env: null
};
@ -31,8 +31,8 @@
const data = [{"type":"data","data":null,"uses":{}},null];
Promise.all([
import("../_app/immutable/entry/start.lsAj1Ej8.js"),
import("../_app/immutable/entry/app.t1XFBWiS.js")
import("../_app/immutable/entry/start.cKyxnSZP.js"),
import("../_app/immutable/entry/app.K3AlUOsq.js")
]).then(([kit, app]) => {
kit.start(app, element, {
node_ids: [0, 9],

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -7,13 +7,13 @@
<meta name="theme-color" content="#ffffff">
<link href="../_app/immutable/assets/0.B2YDv0ji.css" rel="stylesheet">
<link rel="modulepreload" href="../_app/immutable/entry/start.lsAj1Ej8.js">
<link rel="modulepreload" href="../_app/immutable/entry/start.cKyxnSZP.js">
<link rel="modulepreload" href="../_app/immutable/chunks/scheduler.aZRR5A_O.js">
<link rel="modulepreload" href="../_app/immutable/entry/app.t1XFBWiS.js">
<link rel="modulepreload" href="../_app/immutable/entry/app.K3AlUOsq.js">
<link rel="modulepreload" href="../_app/immutable/chunks/preload-helper.0HuHagjb.js">
<link rel="modulepreload" href="../_app/immutable/chunks/index.AIcdAWo0.js">
<link rel="modulepreload" href="../_app/immutable/nodes/0.uMzUYRGs.js">
<link rel="modulepreload" href="../_app/immutable/nodes/9.ceqUHxWv.js">
<link rel="modulepreload" href="../_app/immutable/nodes/9.YZ57kV9v.js">
<link rel="modulepreload" href="../_app/immutable/chunks/dynamic-import-helper.0gtGTknh.js">
</head>
<body data-sveltekit-preload-data="hover">
@ -40,7 +40,7 @@ est toutefois possible de développer une certaine expertise pour utiliser <stro
<span class="token operator">~</span>osc <span class="token operator">=</span> <span class="token punctuation">&#123;</span>LPF<span class="token punctuation">.</span><span class="token function">ar</span><span class="token punctuation">(</span>SinOsc<span class="token punctuation">.</span><span class="token function">ar</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">200</span><span class="token punctuation">,</span> <span class="token number">150</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">,</span> SinOsc<span class="token punctuation">.</span><span class="token function">ar</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token operator">/</span><span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">range</span><span class="token punctuation">(</span><span class="token number">200</span><span class="token punctuation">,</span><span class="token number">2000</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">0.5</span><span class="token punctuation">&#125;</span><span class="token punctuation">;</span> <span class="token comment">// On remplace la source</span>
<span class="token operator">~</span>osc<span class="token punctuation">.</span><span class="token function">stop</span><span class="token punctuation">(</span>fadeTime<span class="token operator">:</span> <span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Fade-out</span>
<span class="token operator">~</span>osc<span class="token punctuation">.</span>clear<span class="token punctuation">;</span> <span class="token comment">// On libère la mémoire</span></code><!-- HTML_TAG_END --></pre> <br> <p data-svelte-h="svelte-mlyqm">Même si tout reste assez primitif pour le moment, on peut déjà faire beaucoup de choses en suivant ce principe. Il est possible dutiliser nimporte quel algorithme audio et de le mettre à jour graduellement tout au long dune performance. Ce type de <em>live coding</em> centré autour de la musique à jour dun générateur sonore se prête plutôt bien à de la musique électro-acoustique, <em>ambient</em>, <em>noise</em>, etc.</p> <br> <h3 data-svelte-h="svelte-1t7im02">Les <code>Ndefs</code> : une autre manière de faire la même chose</h3> <br> <p data-svelte-h="svelte-ngon7m">La technique que nous utilisons avec <code>ProxySpace.push(s.boot)</code> <em>dissimule</em> lutilisation que nous faisons des <code>NodeProxy</code>. Cette fonctionnalité a été intégrée car elle permet de gagner du temps de frappe mais elle a pour désavantage de rendre plus difficilement perceptible ce que nous sommes réellement en train de faire. À première vue, il semble que <code>~a = 2</code> soit juste une assignation de variable comme dans un langage de programmation classique. Pourtant, il sagit dune opération qui crée/modifie un <code>NodeProxy</code>.</p> <br> <p data-svelte-h="svelte-f4v0jn">Nous occultons le fait que les variables globales de <strong>SuperCollider</strong> sont maintenant des <code>NodeProxy</code>. Il est possible de se passer entièrement de <code>Proxyspace.push</code> et de cet avantage/désagrément en utilisant les <code>Ndefs</code>. Il sagit dune préférence personnelle, presque dordre stylistique.</p> <br> <div class="alert bg-base-300 dark:bg-base-300"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" class="stroke-current shrink-0 w-6 h-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg> <span class="text-2xl"><!-- HTML_TAG_START -->Pour être plus précis, <code>ProxySpace.push(...)</code> transforme le <em>scope</em> global en un <code>ProxySpace</code>. Seule les variables de <code>a</code> à <code>z</code> sont épargnées.<!-- HTML_TAG_END --></span></div> <br> <p data-svelte-h="svelte-l6ldcg">Le terme de <strong>NDef</strong> est un raccourci pour <em>Node Proxy Definition</em>. On retrouve du vocabulaire familier. Cest une autre manière de désigner exactement le même type dobjet que ce que nous manipulons depuis le début ! Seule la syntaxe diffère. Profitons-en quand même pour évoquer rapidement ce quest un <em>node</em> :</p> <br> <div class="pl-8 pt-4 pb-4 bg-base-300" data-svelte-h="svelte-19ar4er"><p><strong>Node:</strong> un <em>node</em> est un objet défini en interne par le serveur audio de <strong>SuperCollider</strong>. Un synthétiseur est un <em>node</em>, beaucoup dobjets présents sur le serveur sont des <em>nodes</em>. Il sagit dun objet générique utilisé pour une opération audio : contrôle ou synthétiseur. Cest un objet abstrait, quon ne manipule jamais directement. Les fonctions audio que nous venons dutiliser dans lexemple précédent sont des <em>nodes</em> que lon associe à un <em>proxy</em>. Un <em>node</em> tire ce nom du fait que ce sont des <em>noeuds</em> dans un graphe audio, des objets qui ont une position dans un graphe de traitement du signal.</p></div> <br> <p data-svelte-h="svelte-1i92p2x">Les <code>Ndefs</code> ont pour avantage de ne pas se propager dans lenvironnement local. Elles rendent tout un petit peu plus clair. Réécrivons lexemple précédent en utilisant uniquement des <code>Ndefs</code> :</p> <pre class="language-cpp"><!-- HTML_TAG_START --><code class="language-cpp"><span class="token function">Ndef</span><span class="token punctuation">(</span>osc<span class="token punctuation">,</span> <span class="token punctuation">&#123;</span>SinOsc<span class="token punctuation">.</span><span class="token function">ar</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">200</span><span class="token punctuation">,</span> <span class="token number">100</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">0.5</span><span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// On associe une source à un NodeProxy, un double oscillateur</span>
<span class="token operator">~</span>osc<span class="token punctuation">.</span>clear<span class="token punctuation">;</span> <span class="token comment">// On libère la mémoire</span></code><!-- HTML_TAG_END --></pre> <br> <p data-svelte-h="svelte-mlyqm">Même si tout reste assez primitif pour le moment, on peut déjà faire beaucoup de choses en suivant ce principe. Il est possible dutiliser nimporte quel algorithme audio et de le mettre à jour graduellement tout au long dune performance. Ce type de <em>live coding</em> centré autour de la musique à jour dun générateur sonore se prête plutôt bien à de la musique électro-acoustique, <em>ambient</em>, <em>noise</em>, etc.</p> <br> <h3 data-svelte-h="svelte-1t7im02">Les <code>Ndefs</code> : une autre manière de faire la même chose</h3> <br> <p data-svelte-h="svelte-ngon7m">La technique que nous utilisons avec <code>ProxySpace.push(s.boot)</code> <em>dissimule</em> lutilisation que nous faisons des <code>NodeProxy</code>. Cette fonctionnalité a été intégrée car elle permet de gagner du temps de frappe mais elle a pour désavantage de rendre plus difficilement perceptible ce que nous sommes réellement en train de faire. À première vue, il semble que <code>~a = 2</code> soit juste une assignation de variable comme dans un langage de programmation classique. Pourtant, il sagit dune opération qui crée/modifie un <code>NodeProxy</code>.</p> <br> <p data-svelte-h="svelte-f4v0jn">Nous occultons le fait que les variables globales de <strong>SuperCollider</strong> sont maintenant des <code>NodeProxy</code>. Il est possible de se passer entièrement de <code>Proxyspace.push</code> et de cet avantage/désagrément en utilisant les <code>Ndefs</code>. Il sagit dune préférence personnelle, presque dordre stylistique.</p> <br> <div class="alert bg-base-300 dark:bg-base-300"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" class="stroke-current shrink-0 w-6 h-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg> <span class="text-xl"><!-- HTML_TAG_START -->Pour être plus précis, <code>ProxySpace.push(...)</code> transforme le <em>scope</em> global en un <code>ProxySpace</code>. Seule les variables de <code>a</code> à <code>z</code> sont épargnées.<!-- HTML_TAG_END --></span></div> <br> <p data-svelte-h="svelte-l6ldcg">Le terme de <strong>NDef</strong> est un raccourci pour <em>Node Proxy Definition</em>. On retrouve du vocabulaire familier. Cest une autre manière de désigner exactement le même type dobjet que ce que nous manipulons depuis le début ! Seule la syntaxe diffère. Profitons-en quand même pour évoquer rapidement ce quest un <em>node</em> :</p> <br> <div class="pl-8 pt-4 pb-4 bg-base-300" data-svelte-h="svelte-19ar4er"><p><strong>Node:</strong> un <em>node</em> est un objet défini en interne par le serveur audio de <strong>SuperCollider</strong>. Un synthétiseur est un <em>node</em>, beaucoup dobjets présents sur le serveur sont des <em>nodes</em>. Il sagit dun objet générique utilisé pour une opération audio : contrôle ou synthétiseur. Cest un objet abstrait, quon ne manipule jamais directement. Les fonctions audio que nous venons dutiliser dans lexemple précédent sont des <em>nodes</em> que lon associe à un <em>proxy</em>. Un <em>node</em> tire ce nom du fait que ce sont des <em>noeuds</em> dans un graphe audio, des objets qui ont une position dans un graphe de traitement du signal.</p></div> <br> <p data-svelte-h="svelte-1i92p2x">Les <code>Ndefs</code> ont pour avantage de ne pas se propager dans lenvironnement local. Elles rendent tout un petit peu plus clair. Réécrivons lexemple précédent en utilisant uniquement des <code>Ndefs</code> :</p> <pre class="language-cpp"><!-- HTML_TAG_START --><code class="language-cpp"><span class="token function">Ndef</span><span class="token punctuation">(</span>osc<span class="token punctuation">,</span> <span class="token punctuation">&#123;</span>SinOsc<span class="token punctuation">.</span><span class="token function">ar</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">200</span><span class="token punctuation">,</span> <span class="token number">100</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">0.5</span><span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// On associe une source à un NodeProxy, un double oscillateur</span>
<span class="token function">Ndef</span><span class="token punctuation">(</span>osc<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">play</span><span class="token punctuation">(</span>fadeTime<span class="token operator">:</span> <span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// On lance le NodeProxy avec un fade-in</span>
<span class="token function">Ndef</span><span class="token punctuation">(</span>osc<span class="token punctuation">)</span><span class="token punctuation">.</span>fadeTime <span class="token operator">=</span> <span class="token number">4</span><span class="token punctuation">;</span> <span class="token comment">// On change le fadeTime général</span>
@ -78,7 +78,7 @@ comme <code>.set</code> et <code>.xset</code>.</p> <h2 data-svelte-h="svelte-grw
<script>
{
__sveltekit_9w4fen = {
__sveltekit_1vsa1vc = {
base: new URL("..", location).pathname.slice(0, -1),
env: null
};
@ -88,8 +88,8 @@ comme <code>.set</code> et <code>.xset</code>.</p> <h2 data-svelte-h="svelte-grw
const data = [{"type":"data","data":null,"uses":{}},null];
Promise.all([
import("../_app/immutable/entry/start.lsAj1Ej8.js"),
import("../_app/immutable/entry/app.t1XFBWiS.js")
import("../_app/immutable/entry/start.cKyxnSZP.js"),
import("../_app/immutable/entry/app.K3AlUOsq.js")
]).then(([kit, app]) => {
kit.start(app, element, {
node_ids: [0, 9],

View File

@ -7,13 +7,13 @@
<meta name="theme-color" content="#ffffff">
<link href="../_app/immutable/assets/0.B2YDv0ji.css" rel="stylesheet">
<link rel="modulepreload" href="../_app/immutable/entry/start.lsAj1Ej8.js">
<link rel="modulepreload" href="../_app/immutable/entry/start.cKyxnSZP.js">
<link rel="modulepreload" href="../_app/immutable/chunks/scheduler.aZRR5A_O.js">
<link rel="modulepreload" href="../_app/immutable/entry/app.t1XFBWiS.js">
<link rel="modulepreload" href="../_app/immutable/entry/app.K3AlUOsq.js">
<link rel="modulepreload" href="../_app/immutable/chunks/preload-helper.0HuHagjb.js">
<link rel="modulepreload" href="../_app/immutable/chunks/index.AIcdAWo0.js">
<link rel="modulepreload" href="../_app/immutable/nodes/0.uMzUYRGs.js">
<link rel="modulepreload" href="../_app/immutable/nodes/9.ceqUHxWv.js">
<link rel="modulepreload" href="../_app/immutable/nodes/9.YZ57kV9v.js">
<link rel="modulepreload" href="../_app/immutable/chunks/dynamic-import-helper.0gtGTknh.js">
</head>
<body data-sveltekit-preload-data="hover">
@ -25,7 +25,7 @@
<script>
{
__sveltekit_9w4fen = {
__sveltekit_1vsa1vc = {
base: new URL("..", location).pathname.slice(0, -1),
env: null
};
@ -35,8 +35,8 @@
const data = [{"type":"data","data":null,"uses":{}},null];
Promise.all([
import("../_app/immutable/entry/start.lsAj1Ej8.js"),
import("../_app/immutable/entry/app.t1XFBWiS.js")
import("../_app/immutable/entry/start.cKyxnSZP.js"),
import("../_app/immutable/entry/app.K3AlUOsq.js")
]).then(([kit, app]) => {
kit.start(app, element, {
node_ids: [0, 9],

Binary file not shown.

Binary file not shown.