deploy: 4cf6b72b75
This commit is contained in:
@ -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
Binary file not shown.
Binary file not shown.
@ -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">{</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">}</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 d’utiliser n’importe quel algorithme audio et de le mettre à jour graduellement tout au long d’une performance. Ce type de <em>live coding</em> centré autour de la musique à jour d’un 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> l’utilisation 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 s’agit d’une 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 s’agit d’une préférence personnelle, presque d’ordre 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. C’est une autre manière de désigner exactement le même type d’objet que ce que nous manipulons depuis le début ! Seule la syntaxe diffère. Profitons-en quand même pour évoquer rapidement ce qu’est 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 d’objets présents sur le serveur sont des <em>nodes</em>. Il s’agit d’un objet générique utilisé pour une opération audio : contrôle ou synthétiseur. C’est un objet abstrait, qu’on ne manipule jamais directement. Les fonctions audio que nous venons d’utiliser dans l’exemple précédent sont des <em>nodes</em> que l’on 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 l’environnement local. Elles rendent tout un petit peu plus clair. Réécrivons l’exemple 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">{</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">}</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 d’utiliser n’importe quel algorithme audio et de le mettre à jour graduellement tout au long d’une performance. Ce type de <em>live coding</em> centré autour de la musique à jour d’un 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> l’utilisation 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 s’agit d’une 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 s’agit d’une préférence personnelle, presque d’ordre 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. C’est une autre manière de désigner exactement le même type d’objet que ce que nous manipulons depuis le début ! Seule la syntaxe diffère. Profitons-en quand même pour évoquer rapidement ce qu’est 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 d’objets présents sur le serveur sont des <em>nodes</em>. Il s’agit d’un objet générique utilisé pour une opération audio : contrôle ou synthétiseur. C’est un objet abstrait, qu’on ne manipule jamais directement. Les fonctions audio que nous venons d’utiliser dans l’exemple précédent sont des <em>nodes</em> que l’on 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 l’environnement local. Elles rendent tout un petit peu plus clair. Réécrivons l’exemple 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">{</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">}</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],
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@ -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.
Reference in New Issue
Block a user