Files
livecodingfr/dist/_app/immutable/chunks/livecoding_supercollider.RJo0jTEb.js
2024-01-06 18:36:03 +01:00

81 lines
60 KiB
JavaScript
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.

import{s as el,x as qs,y as $a,n as tl}from"./scheduler.aZRR5A_O.js";import{S as nl,i as sl,r as Ts,u as As,v as Fs,d as Ms,t as Hs,w as Ps,g as u,s as r,H as z,h as o,x as b,c as i,j as $,C as R,f as t,k as B,a as s}from"./index.AIcdAWo0.js";import{G as al,g as ll,a as Ra}from"./guides.RN6emr9S.js";import{I as Ba}from"./Info.8pLsFJ2C.js";var Ia=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},rl={exports:{}};(function(Q){var y=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};/**
* Prism: Lightweight, robust, elegant syntax highlighting
*
* @license MIT <https://opensource.org/licenses/MIT>
* @author Lea Verou <https://lea.verou.me>
* @namespace
* @public
*/var m=function(h){var w=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,x=0,L={},f={manual:h.Prism&&h.Prism.manual,disableWorkerMessageHandler:h.Prism&&h.Prism.disableWorkerMessageHandler,util:{encode:function a(l){return l instanceof A?new A(l.type,a(l.content),l.alias):Array.isArray(l)?l.map(a):l.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(a){return Object.prototype.toString.call(a).slice(8,-1)},objId:function(a){return a.__id||Object.defineProperty(a,"__id",{value:++x}),a.__id},clone:function a(l,p){p=p||{};var c,d;switch(f.util.type(l)){case"Object":if(d=f.util.objId(l),p[d])return p[d];c={},p[d]=c;for(var g in l)l.hasOwnProperty(g)&&(c[g]=a(l[g],p));return c;case"Array":return d=f.util.objId(l),p[d]?p[d]:(c=[],p[d]=c,l.forEach(function(k,v){c[v]=a(k,p)}),c);default:return l}},getLanguage:function(a){for(;a;){var l=w.exec(a.className);if(l)return l[1].toLowerCase();a=a.parentElement}return"none"},setLanguage:function(a,l){a.className=a.className.replace(RegExp(w,"gi"),""),a.classList.add("language-"+l)},currentScript:function(){if(typeof document>"u")return null;if("currentScript"in document&&1<2)return document.currentScript;try{throw new Error}catch(c){var a=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(c.stack)||[])[1];if(a){var l=document.getElementsByTagName("script");for(var p in l)if(l[p].src==a)return l[p]}return null}},isActive:function(a,l,p){for(var c="no-"+l;a;){var d=a.classList;if(d.contains(l))return!0;if(d.contains(c))return!1;a=a.parentElement}return!!p}},languages:{plain:L,plaintext:L,text:L,txt:L,extend:function(a,l){var p=f.util.clone(f.languages[a]);for(var c in l)p[c]=l[c];return p},insertBefore:function(a,l,p,c){c=c||f.languages;var d=c[a],g={};for(var k in d)if(d.hasOwnProperty(k)){if(k==l)for(var v in p)p.hasOwnProperty(v)&&(g[v]=p[v]);p.hasOwnProperty(k)||(g[k]=d[k])}var _=c[a];return c[a]=g,f.languages.DFS(f.languages,function(F,P){P===_&&F!=a&&(this[F]=g)}),g},DFS:function a(l,p,c,d){d=d||{};var g=f.util.objId;for(var k in l)if(l.hasOwnProperty(k)){p.call(l,k,l[k],c||k);var v=l[k],_=f.util.type(v);_==="Object"&&!d[g(v)]?(d[g(v)]=!0,a(v,p,null,d)):_==="Array"&&!d[g(v)]&&(d[g(v)]=!0,a(v,p,k,d))}}},plugins:{},highlightAll:function(a,l){f.highlightAllUnder(document,a,l)},highlightAllUnder:function(a,l,p){var c={callback:p,container:a,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};f.hooks.run("before-highlightall",c),c.elements=Array.prototype.slice.apply(c.container.querySelectorAll(c.selector)),f.hooks.run("before-all-elements-highlight",c);for(var d=0,g;g=c.elements[d++];)f.highlightElement(g,l===!0,c.callback)},highlightElement:function(a,l,p){var c=f.util.getLanguage(a),d=f.languages[c];f.util.setLanguage(a,c);var g=a.parentElement;g&&g.nodeName.toLowerCase()==="pre"&&f.util.setLanguage(g,c);var k=a.textContent,v={element:a,language:c,grammar:d,code:k};function _(P){v.highlightedCode=P,f.hooks.run("before-insert",v),v.element.innerHTML=v.highlightedCode,f.hooks.run("after-highlight",v),f.hooks.run("complete",v),p&&p.call(v.element)}if(f.hooks.run("before-sanity-check",v),g=v.element.parentElement,g&&g.nodeName.toLowerCase()==="pre"&&!g.hasAttribute("tabindex")&&g.setAttribute("tabindex","0"),!v.code){f.hooks.run("complete",v),p&&p.call(v.element);return}if(f.hooks.run("before-highlight",v),!v.grammar){_(f.util.encode(v.code));return}if(l&&h.Worker){var F=new Worker(f.filename);F.onmessage=function(P){_(P.data)},F.postMessage(JSON.stringify({language:v.language,code:v.code,immediateClose:!0}))}else _(f.highlight(v.code,v.grammar,v.language))},highlight:function(a,l,p){var c={code:a,grammar:l,language:p};if(f.hooks.run("before-tokenize",c),!c.grammar)throw new Error('The language "'+c.language+'" has no grammar.');return c.tokens=f.tokenize(c.code,c.grammar),f.hooks.run("after-tokenize",c),A.stringify(f.util.encode(c.tokens),c.language)},tokenize:function(a,l){var p=l.rest;if(p){for(var c in p)l[c]=p[c];delete l.rest}var d=new G;return D(d,d.head,a),te(a,d,l,d.head,0),I(d)},hooks:{all:{},add:function(a,l){var p=f.hooks.all;p[a]=p[a]||[],p[a].push(l)},run:function(a,l){var p=f.hooks.all[a];if(!(!p||!p.length))for(var c=0,d;d=p[c++];)d(l)}},Token:A};h.Prism=f;function A(a,l,p,c){this.type=a,this.content=l,this.alias=p,this.length=(c||"").length|0}A.stringify=function a(l,p){if(typeof l=="string")return l;if(Array.isArray(l)){var c="";return l.forEach(function(_){c+=a(_,p)}),c}var d={type:l.type,content:a(l.content,p),tag:"span",classes:["token",l.type],attributes:{},language:p},g=l.alias;g&&(Array.isArray(g)?Array.prototype.push.apply(d.classes,g):d.classes.push(g)),f.hooks.run("wrap",d);var k="";for(var v in d.attributes)k+=" "+v+'="'+(d.attributes[v]||"").replace(/"/g,"&quot;")+'"';return"<"+d.tag+' class="'+d.classes.join(" ")+'"'+k+">"+d.content+"</"+d.tag+">"};function H(a,l,p,c){a.lastIndex=l;var d=a.exec(p);if(d&&c&&d[1]){var g=d[1].length;d.index+=g,d[0]=d[0].slice(g)}return d}function te(a,l,p,c,d,g){for(var k in p)if(!(!p.hasOwnProperty(k)||!p[k])){var v=p[k];v=Array.isArray(v)?v:[v];for(var _=0;_<v.length;++_){if(g&&g.cause==k+","+_)return;var F=v[_],P=F.inside,ne=!!F.lookbehind,se=!!F.greedy,J=F.alias;if(se&&!F.pattern.global){var dt=F.pattern.toString().match(/[imsuy]*$/)[0];F.pattern=RegExp(F.pattern.source,dt+"g")}for(var ae=F.pattern||F,S=c.next,E=d;S!==l.tail&&!(g&&E>=g.reach);E+=S.value.length,S=S.next){var O=S.value;if(l.length>a.length)return;if(!(O instanceof A)){var W=1,M;if(se){if(M=H(ae,E,a,ne),!M||M.index>=a.length)break;var j=M.index,Z=M.index+M[0].length,U=E;for(U+=S.value.length;j>=U;)S=S.next,U+=S.value.length;if(U-=S.value.length,E=U,S.value instanceof A)continue;for(var N=S;N!==l.tail&&(U<Z||typeof N.value=="string");N=N.next)W++,U+=N.value.length;W--,O=a.slice(E,U),M.index-=E}else if(M=H(ae,0,O,ne),!M)continue;var j=M.index,le=M[0],K=O.slice(0,j),V=O.slice(j+le.length),pt=E+O.length;g&&pt>g.reach&&(g.reach=pt);var X=S.prev;K&&(X=D(l,X,K),E+=K.length),Y(l,X,W);var ct=new A(k,P?f.tokenize(le,P):le,J,le);if(S=D(l,X,ct),V&&D(l,S,V),W>1){var ee={cause:k+","+_,reach:pt};te(a,l,p,S.prev,E,ee),g&&ee.reach>g.reach&&(g.reach=ee.reach)}}}}}}function G(){var a={value:null,prev:null,next:null},l={value:null,prev:a,next:null};a.next=l,this.head=a,this.tail=l,this.length=0}function D(a,l,p){var c=l.next,d={value:p,prev:l,next:c};return l.next=d,c.prev=d,a.length++,d}function Y(a,l,p){for(var c=l.next,d=0;d<p&&c!==a.tail;d++)c=c.next;l.next=c,c.prev=l,a.length-=d}function I(a){for(var l=[],p=a.head.next;p!==a.tail;)l.push(p.value),p=p.next;return l}if(!h.document)return h.addEventListener&&(f.disableWorkerMessageHandler||h.addEventListener("message",function(a){var l=JSON.parse(a.data),p=l.language,c=l.code,d=l.immediateClose;h.postMessage(f.highlight(c,f.languages[p],p)),d&&h.close()},!1)),f;var q=f.util.currentScript();q&&(f.filename=q.src,q.hasAttribute("data-manual")&&(f.manual=!0));function C(){f.manual||f.highlightAll()}if(!f.manual){var T=document.readyState;T==="loading"||T==="interactive"&&q&&q.defer?document.addEventListener("DOMContentLoaded",C):window.requestAnimationFrame?window.requestAnimationFrame(C):window.setTimeout(C,16)}return f}(y);Q.exports&&(Q.exports=m),typeof Ia<"u"&&(Ia.Prism=m),m.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},m.languages.markup.tag.inside["attr-value"].inside.entity=m.languages.markup.entity,m.languages.markup.doctype.inside["internal-subset"].inside=m.languages.markup,m.hooks.add("wrap",function(h){h.type==="entity"&&(h.attributes.title=h.content.replace(/&amp;/,"&"))}),Object.defineProperty(m.languages.markup.tag,"addInlined",{value:function(w,x){var L={};L["language-"+x]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:m.languages[x]},L.cdata=/^<!\[CDATA\[|\]\]>$/i;var f={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:L}};f["language-"+x]={pattern:/[\s\S]+/,inside:m.languages[x]};var A={};A[w]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,function(){return w}),"i"),lookbehind:!0,greedy:!0,inside:f},m.languages.insertBefore("markup","cdata",A)}}),Object.defineProperty(m.languages.markup.tag,"addAttribute",{value:function(h,w){m.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+h+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[w,"language-"+w],inside:m.languages[w]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),m.languages.html=m.languages.markup,m.languages.mathml=m.languages.markup,m.languages.svg=m.languages.markup,m.languages.xml=m.languages.extend("markup",{}),m.languages.ssml=m.languages.xml,m.languages.atom=m.languages.xml,m.languages.rss=m.languages.xml,function(h){var w=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;h.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+w.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+w.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+w.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+w.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:w,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},h.languages.css.atrule.inside.rest=h.languages.css;var x=h.languages.markup;x&&(x.tag.addInlined("style","css"),x.tag.addAttribute("style","css"))}(m),m.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},m.languages.javascript=m.languages.extend("clike",{"class-name":[m.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),m.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,m.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:m.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:m.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:m.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:m.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:m.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),m.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:m.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),m.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),m.languages.markup&&(m.languages.markup.tag.addInlined("script","javascript"),m.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),m.languages.js=m.languages.javascript,function(){if(typeof m>"u"||typeof document>"u")return;Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var h="Loading…",w=function(q,C){return"✖ Error "+q+" while fetching file: "+C},x="✖ Error: File does not exist or is empty",L={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},f="data-src-status",A="loading",H="loaded",te="failed",G="pre[data-src]:not(["+f+'="'+H+'"]):not(['+f+'="'+A+'"])';function D(q,C,T){var a=new XMLHttpRequest;a.open("GET",q,!0),a.onreadystatechange=function(){a.readyState==4&&(a.status<400&&a.responseText?C(a.responseText):a.status>=400?T(w(a.status,a.statusText)):T(x))},a.send(null)}function Y(q){var C=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(q||"");if(C){var T=Number(C[1]),a=C[2],l=C[3];return a?l?[T,Number(l)]:[T,void 0]:[T,T]}}m.hooks.add("before-highlightall",function(q){q.selector+=", "+G}),m.hooks.add("before-sanity-check",function(q){var C=q.element;if(C.matches(G)){q.code="",C.setAttribute(f,A);var T=C.appendChild(document.createElement("CODE"));T.textContent=h;var a=C.getAttribute("data-src"),l=q.language;if(l==="none"){var p=(/\.(\w+)$/.exec(a)||[,"none"])[1];l=L[p]||p}m.util.setLanguage(T,l),m.util.setLanguage(C,l);var c=m.plugins.autoloader;c&&c.loadLanguages(l),D(a,function(d){C.setAttribute(f,H);var g=Y(C.getAttribute("data-range"));if(g){var k=d.split(/\r\n?|\n/g),v=g[0],_=g[1]==null?k.length:g[1];v<0&&(v+=k.length),v=Math.max(0,Math.min(v-1,k.length)),_<0&&(_+=k.length),_=Math.max(0,Math.min(_,k.length)),d=k.slice(v,_).join(`
`),C.hasAttribute("data-start")||C.setAttribute("data-start",String(v+1))}T.textContent=d,m.highlightElement(T)},function(d){C.setAttribute(f,te),T.textContent=d})}}),m.plugins.fileHighlight={highlight:function(C){for(var T=(C||document).querySelectorAll(G),a=0,l;l=T[a++];)m.highlightElement(l)}};var I=!1;m.fileHighlight=function(){I||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),I=!0),m.plugins.fileHighlight.highlight.apply(this,arguments)}}()})(rl);function il(Q){let y,m="Introduction",h,w,x='Après avoir travaillé longtemps sur <a href="https://sardine.raphaelforment.fr" rel="nofollow">Sardine</a> et <a href="https://topos.live" rel="nofollow">Topos</a>, je me suis posé la question de savoir si jétais encore capable de <em>live coder</em> sur <strong>SuperCollider</strong>. Jai donc décidé de ramasser tout ce que je sais pour constituer un environnement de <em>live coding</em> minimal et efficace. Ce document est le résultat de cette expérience. Il existe aussi un petit <a href="https://github.com/Bubobubobubobubo/BuboQuark" rel="nofollow">Quark</a> qui va un peu plus loin que ce guide, mais que je ne documente pas encore. Javais une certaine jalousie latente vis à vis des artistes qui utilisent <strong>SuperCollider</strong> sans recourir à aucune extension ou surcouche logicielle qui facilite la tâche. Le langage et lenvironnement de <strong>SuperCollider</strong> est <em>monstrueux</em> (de complexité, de détails, etc). Il offre toutefois un avantage intéressant : <strong>SuperCollider</strong> est très versatile. Au sein dun seul langage / interface, il est possible de passer dune section du code lié aux patterns musicaux à une autre partie du code directement liée à la synthèse et à lécriture de traitements sonores. On peut aussi sen servir pour écrire des utilitaires divers et des interfaces graphiques si besoin. <strong>SuperCollider</strong> est aussi un environnement relativement minimal et économe pour la production et le travail du son, développé depuis plus de vingt ans. Cela garantit de pouvoir le faire tourner sur toutes les machines sans aucun problème.',L,f,A,H,te='<strong>SuperCollider</strong> a joué un rôle crucial dans le développement du <em>live coding</em> au cours de ces 20 dernières années (dès la parution de <strong>SuperCollider 2</strong>). Il est toujours utilisé par limmense majorité des artistes et <em>performers</em> sous une forme directe ou indirecte (au travers de <a href="https://tidalcycles.org" rel="nofollow">Tidal</a>, <a href="https://foxdot681713046.wordpress.com/" rel="nofollow">FoxDot</a> ou <a href="https://sonic-pi.net" rel="nofollow">Sonic Pi</a>). Bien que ces derniers soient aujourdhui populaires, il est également intéressant de voir que lon peut réaliser peu ou prou la même chose tout en éliminant toute une catégorie de problèmes liés à linstallation, au déploiement ou à la personnalisation de ces interfaces.',G,D,Y,I,q,C,T,a,l='<img src="/images/supercollider_splash.png" alt="SuperCollider Logo"/>',p,c,d,g,k="Mise en place",v,_,F='La mise en place est relativement simple. Nous aurons uniquement besoin de lenvironnement de base et de la librairie <em>JITLib</em>, livrée par défaut avec <strong>SuperCollider</strong>. Nous augmenterons progressivement <strong>SuperCollider</strong> avec des <em>plugins</em> (<a href="https://doc.sccode.org/Guides/UsingQuarks.html" rel="nofollow">Quarks</a>) mais cela ne requiert pas dinstallation directe et peut même se révéler facultatif.',P,ne,se,J,dt='1) <strong>Téléchargez</strong> et installez <a href="https://supercollider.github.io" rel="nofollow">SuperCollider</a> depuis le site officiel.',ae,S,E='2) <strong>Optionnel :</strong> téléchargez <a href="https://github.com/supercollider/sc3-plugins" rel="nofollow">sc3-plugins</a>, une collection officielle dobjets supplémentaires.',O,W,M,Z,U="Il est important de bien comprendre comment est structuré <strong>SuperCollider</strong>. Il sagit dun environnement composé de plusieurs briques logicielles interconnectées (ou non) :",N,j,le=`<li><strong>SCLang</strong> : un langage de programmation inspiré de la famille <strong>C</strong> ou
<strong>SmallTalk</strong></li> <li><strong>SCSynth</strong> / <strong>SCServer</strong> : un serveur chargé de lexécution audio</li> <li><strong>SCIDE</strong> : léditeur par défaut, qui lie ces deux premiers composants</li>`,K,V,pt=`<strong>SCIDE</strong> est utile, mais si vous préférez utiliser un autre éditeur, il est
possible de lier <a href="https://code.visualstudio.com/" rel="nofollow">VSCode</a>, <a href="https://github.com/supercollider/scel" rel="nofollow">Emacs</a> ou <a href="https://github.com/davidgranstrom/scnvim" rel="nofollow">Neovim</a>. <strong>SCLang</strong> et <strong>SCSynth</strong> sont les deux composants les plus importants, lun servant au contrôle de lautre. Larchitecture de <strong>SuperCollider</strong> est toujours axée sur la différence entre un <em>client</em> (le langage) et le <em>serveur</em> (qui exécute laudio).`,X,ct,ee,re,Es="Commandes de base",mt,ie,zs="Lorsque vous ouvrez <strong>SCIDE</strong>, vous vous trouvez face à un document texte vierge. Cest dans cette zone que vous devez programmer et écrire votre code. <strong>SuperCollider</strong> est un langage interprété. Cela signifie que vous allez graduellement soumettre du code à évaluation et recevoir le résultat des commandes éxecutées. Cela peut parfois poser problème aux débutants qui ne sont pas habitués à cette manière de concevoir la programmation :",ft,ue,$s=`<li>lévaluation dun fichier ne seffectue pas toujours de manière linéaire. On
peut évaluer du code bloc par bloc ou modifier un bloc à la volée.
<strong>SuperCollider</strong> identifie un bloc à laide des parenthèses <code>()</code>.</li> <li>il est possible dévaluer un fichier de manière linéaire si besoin. Il existe
des commandes spécifiques pour ce faire (<em>par ex.</em> <code>&quot;blabla/mon_fichier.scd&quot;.loadRelative</code>).</li> <li>la librairie standard (classes, extensions) est lue / interprétée de manière
linéaire au démarrage de linterpréteur. Vous ne pourrez pas démarrer
linterpréteur si une erreur est identifiée dans cette partie du code : <code>Library has not been compiled successfully</code>.</li>`,gt,vt,bt,oe,Rs="Selon votre éditeur, les commandes pour évaluer du code ligne par ligne ou bloc par bloc peuvent varier (<code>Shift + Enter</code>, <code>Control + Enter</code>, etc). Vous pourrez trouvez les commandes dans le menu <code>Language</code> de <strong>SCIDE</strong>. Pour vérifier que tout fonctionne, évaluez la ligne suivante (<em>note :</em> les commentaires sont précédés des caractères <code>//</code> et ne sont pas évalués) :",ht,pe,kt,Da='<code class="language-js">s<span class="token punctuation">.</span>boot <span class="token comment">// Démarrage du serveur</span></code>',xt,ce,Bs=`Attendez quelques secondes pour vérifier que tout se passe correctement puis
tuez le serveur :`,Ct,de,_t,Oa='<code class="language-js">Server<span class="token punctuation">.</span>killAll <span class="token comment">// Tuer le serveur</span></code>',wt,me,Is=`<strong>SuperCollider</strong> permet de prendre lhabitude de ne pas considérer le code
comme un texte linéaire mais comme une interface, ce qui est une caractéristique
commune des outils de <em>live coding</em>. Cest aussi une constante des
environnements pour la programmation musicale (<em>Max/MSP</em>, <em>Pure Data</em>) qui
éliminent / gomment la distinction entre travail sur le programme et exécution
du programme.`,yt,St,Lt,fe,js=`Ce guide ne vous apprendra pas les rudiments du langage. Il existe de très
nombreux guides qui font cela très bien. Notez la parution récente dun nouvel
ouvrage : <a href="https://global.oup.com/academic/product/supercollider-for-the-creative-musician-9780197616994" rel="nofollow">SuperCollider for the Creative Musician</a> par Eli Fieldsteel, également auteur dune <a href="https://www.youtube.com/@elifieldsteel" rel="nofollow">série de vidéos</a> que je recommande.`,qt,Tt,At,ge,Ds="Prérequis",Ft,Mt,Ht,ve,Os="Dès maintenant, je pars du principe que vous êtes à laise avec lenvironnement <strong>SuperCollider</strong> et que vous avez au moins quelques rudiments de son utilisation. Il nest pas nécessaire den connaître beaucoup mais au moins de savoir évaluer du code, naviguer dans les fichiers daide et de maîtriser quelques raccourcis clavier. Le reste viendra naturellement en pratiquant. Voici quelques suggestions pour découvrir <strong>SuperCollider</strong> et son utilisation :",Pt,be,Us=`<li>se familiariser avec chaque élément de linterface (<code>s.scope</code>,
<code>s.freqscope</code>, <code>s.gui</code>)</li> <li>se familiariser avec la documentation intégrée, lire les guides disponibles</li> <li>apprendre comment contrôler le serveur (<code>s</code>, <code>Server.default</code>) et linterpréteur<ul><li>démarrer et arrêter le serveur</li> <li>recompiler la librairie / redémarrer linterpréteur</li></ul></li> <li>apprendre la syntaxe de base dune <code>SynthDef</code> (définition de synthèse)</li> <li>apprendre à jouer avec la librairie des patterns (<code>Pbind</code>, <code>Pseq</code>, etc)</li>`,Et,he,Gs="Paramétrage du serveur",zt,$t,Rt,ke,Ns=`Nous allons maintenant commencer à travailler sur un fichier de lancement
réutilisable pour <strong>SuperCollider</strong>. Créez un fichier nommé <code>startup.scd</code> ou
tout autre nom qui vous permettra de lidentifier facilement.`,Bt,It,jt,xe,Vs="Choisir une interface audio",Dt,Ot,Ut,Ce,Qs="Pour connaître le nom des périphériques audio disponibles :",Gt,_e,Nt,Ua=`<code class="language-supercollider"><span class="token class-name">ServerOptions</span><span class="token punctuation">.</span>devices<span class="token punctuation">;</span> <span class="token comment">// Tout ce qui est disponible</span>
<span class="token class-name">ServerOptions</span><span class="token punctuation">.</span>inDevices<span class="token punctuation">;</span> <span class="token comment">// Les entrées uniquement</span>
<span class="token class-name">ServerOptions</span><span class="token punctuation">.</span>outDevices<span class="token punctuation">;</span> <span class="token comment">// Les sorties uniquement</span></code>`,Vt,we,Js="Il est possible de spécifier une entrée et une sortie différente :",Qt,ye,Jt,Ga=`<code class="language-supercollider"><span class="token class-name">Server</span><span class="token punctuation">.</span>default<span class="token punctuation">.</span>options<span class="token punctuation">.</span>inDevice_<span class="token punctuation">(</span><span class="token string">"Built-in Microph"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">Server</span><span class="token punctuation">.</span>default<span class="token punctuation">.</span>options<span class="token punctuation">.</span>outDevice_<span class="token punctuation">(</span><span class="token string">"Built-in Output"</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code>`,Wt,Se,Ws="On peut aussi utiliser le même <em>device</em> pour lentrée et la sortie :",Zt,Le,Xt,Na=`<code class="language-supercollider">s<span class="token punctuation">.</span>options<span class="token punctuation">.</span>device <span class="token operator">=</span> <span class="token string">"BlackHole 16ch"</span><span class="token punctuation">;</span> <span class="token comment">// Choix de l'interface</span>
<span class="token class-name">Server</span><span class="token punctuation">.</span>default<span class="token punctuation">.</span>options<span class="token punctuation">.</span>device_<span class="token punctuation">(</span><span class="token string">"BlackHole 16ch"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Alternative</span></code>`,Yt,Kt,en,qe,Zs=`Pour appliquer les modifications, il sera nécessaire de redémarrer le serveur.
Veillez à ce que votre entrée et votre sortie audio soient à la même fréquence
déchantillonnage (<em>sampling rate</em>). Si ce nest pas le cas, le serveur refusera
de démarrer, ce qui est une erreur très courante. Paramétrez votre fréquence
sur <code>44100hz</code> ou <code>48000hz</code>.`,tn,nn,sn,Te,Xs=`<strong>Note :</strong> si vous avez pour habitude dutiliser des écouteurs ou haut-parleurs
<em>Bluetooth</em>, les OS modernes ont tendance à changer automatiquement la
fréquence déchantillonnage à la connexion/déconnexion. Il en va de même des
micros et carte sons externes.`,an,ln,rn,Ae,Ys="Router le son de SuperCollider vers un autre logiciel",un,on,pn,Fe,Ks='Il est tout à fait possible dutiliser <strong>SuperCollider</strong> comme source principale et de router ensuite le son vers un autre logiciel pour le traitement. Cela vous permettra denregistrer plus facilement en multipiste, de disposer deffets ou de synthétiseurs supplémentaires, etc. Vous pourrez aussi contrôler une partie de votre dispositif en <strong>MIDI</strong> ou <strong>OSC</strong> directement depuis <strong>SuperCollider</strong>. Pour pouvoir router librement les signaux sortants de <strong>SuperCollider</strong>, il est préférable dutiliser une interface virtuelle comme <a href="https://existential.audio/blackhole/" rel="nofollow">BlackHole</a> (<em>cross-platform</em>), <a href="https://rogueamoeba.com/loopback/" rel="nofollow">Loopback</a> (MacOS, payant), <a href="https://jackaudio.org/" rel="nofollow">Jack</a> (<em>cross-platform</em>) ou <a href="https://vb-audio.com/Voicemeeter/" rel="nofollow">VB-Audio VoiceMeeter</a> (Windows, payant). Ces logiciels permettent de créer des <em>bus</em> audio virtuels qui peuvent être utilisés comme entrée ou sortie par <strong>SuperCollider</strong> aussi bien que par nimporte quel autre logiciel. Lutilisation de bus audios virtuels offre une grande flexibilité et je recommande de prendre lhabitude de les utiliser.',cn,dn,mn,Me,ea=`1) Choisir comme entrée/sortie une interface virtuelle (BlackHole, Loopback,
etc).`,fn,He,ta=`2) Choisir comme entrée dans le logiciel de traitement le bus virtuel que vous
venez de créer.`,gn,Pe,na="3) Traiter / enregistrer le son canal par canal dans votre logiciel.",vn,bn,hn,Ee,sa='<img src="/images/reaper_supercollider_1.png" alt="Routage de SuperCollider dans Reaper"/>',kn,xn,Cn,ze,aa="Protéger ses oreilles",_n,wn,yn,$e,la='<strong>SuperCollider</strong> vous permet de manipuler le son sans aucune restriction. Cest très utile mais cest aussi assez dangereux non seulement pour vous mais aussi pour votre public si vous vous produisez sur scène : <em>larsens</em>, <em>clipping</em>, explosion du volume, etc. Heureusement, ce problème est connu et il existe des moyens efficaces de se protéger. Nous allons utiliser le système de <em>plugins</em> interne pour installer un <strong>Quark</strong> très utile. Avec la commande suivante, installez <a href="https://github.com/supercollider-quarks/BatLib" rel="nofollow">BatLib</a>:',Sn,Re,Ln,Va='<code class="language-supercollider"><span class="token class-name">Quarks</span><span class="token punctuation">.</span>install<span class="token punctuation">(</span><span class="token string">"https://github.com/supercollider-quarks/BatLib"</span><span class="token punctuation">)</span></code>',qn,Be,ra="Recompilez ensuite la librairie et vous pourrez utiliser le <code>StageLimiter</code>. Il vous sauvera sans doute la vie de nombreuses fois. Vous verrez comment on le démarre dans le récapitulatif plus bas. TLDR, la commande est :",Tn,Ie,An,Qa='<code class="language-supercollider"><span class="token class-name">StageLimiter</span><span class="token punctuation">.</span>activate<span class="token punctuation">;</span></code>',Fn,je,ia='Notez que pour certains types de musique, il peut être intéressant de ne pas activer le <code>StageLimiter</code>. La protection a tendance à colorer le son et peut aller à lencontre de ce que vous souhaitez réellement faire : distortion numérique, <em>clipping</em> volontaire. Il existe d<a href="https://github.com/adcxyz/SafetyNet" rel="nofollow">autres types de protection</a> (le <strong>Quark</strong> <em>SafetyNet</em>) ou bien, tout simplement, vous pouvez vous fier à votre oreille et à votre expérience pour ne pas dépasser les limites.',Mn,Hn,Pn,De,ua="Choisir un dossier de stockage",En,zn,$n,Oe,oa=`Plutôt que de tout stocker dans le dossier par défaut, je préfère utiliser un
dossier qui contient tout ce dont jai besoin pour travailler : configuration,
définitions de synthèse, échantillons sonores. Cela permet de navoir quune
seule route à retenir si le système est relativement unifié. Jai choisi de tout
stocker dans <code>.config/livecoding/</code>, ce qui est une route assez prévisible pour
tout ceux qui sont habitués à utiliser le terminal sur <strong>MacOS</strong> / <strong>Linux</strong>.
Voici à quoi ressemble mon dossier :`,Rn,Ue,Bn,Ja=`<code class="language-bash"><span class="token builtin class-name">.</span>
├── Configuration.scd
├── README.md
├── Synthdefs.scd
└── samples</code>`,In,Ge,jn,Dn,On,Ne,pa=`Toute la configuration sera chargée à partir de la route
<code>/Users/bubo/.config/livecoding</code>. Il vous faudra changer ce chemin pour que cela
cole avec le dossier que vous aurez choisi. Pareillement, vous nêtes pas
obligés de suivre cette étape qui repose uniquement sur une préférence
personnelle.`,Un,Gn,Nn,Ve,ca="Chargement automatique des échantillons",Vn,Qn,Jn,Qe,da='Plutôt que de charger les échantillons sonores au cas par cas, en précisant chaque chemin individuellement, je préfère automatiquement charger une grande bibliothèque déchantillons. Par défaut, il nexiste aucun mécanisme permettant de gérer cela. Beaucoup de musiciens ont toutefois trouvé des solutions élégantes et assez minimales. Je me suis fié à la technique utilisé par <a href="https://github.com/scztt" rel="nofollow">Scott Carver</a>. Il utilise une série dextensions conçues spécialement par ses soins.',Wn,Zn,Xn,Je,ma="Pour installer les <strong>Quarks</strong>, on utilise une nouvelle fois la commande <code>Quarks.install</code> :",Yn,We,Kn,Wa=`<code class="language-supercollider"><span class="token class-name">Quarks</span><span class="token punctuation">.</span>install<span class="token punctuation">(</span><span class="token string">"https://github.com/scztt/Require.quark"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">Quarks</span><span class="token punctuation">.</span>install<span class="token punctuation">(</span><span class="token string">"https://github.com/scztt/Singleton.quark"</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code>`,es,ts,ns,Ze,fa='Une fois que cela est fait, il nous reste à installer la pièce finale, <a href="https://gist.github.com/scztt/73a2ae402d9765294ae8f72979d1720e" rel="nofollow">SAMP</a>, qui est mentionnée dans un <a href="https://scsynth.org/t/making-own-sounds-libraries/4593/7" rel="nofollow">topic</a> de discussion du forum <strong>SuperCollider</strong>. Il vous faudra créer ce fichier dans le dossier <strong>Extensions</strong>. Vous pouvez y accéder dans votre dossier de configuration <strong>SuperCollider</strong> (dépend de l<strong>OS</strong>). Pour obtenir le chemin vers ce dossier, évaluez le code suivant dans <strong>SuperCollider</strong> :',ss,Xe,as,Za='<code class="language-supercollider"><span class="token class-name">Platform</span><span class="token punctuation">.</span>userExtensionDir</code>',ls,Ye,ga=`Créez ensuite <strong>SAMP.sc</strong> dans le dossier <strong>Extensions</strong> et collez le code du
lien précédemment ouvert. Cest tout ce dont vous avez besoin. Fermez tout et
recompilez la librairie une nouvelle fois. Nous détaillerons ultérieurement lutilisation de <strong>SAMP</strong> pour gérer vos échantillons. Sachez que vous y avez maintenant accès !`,rs,is,us,Ke,va="<strong>Note :</strong> <strong>SAMP</strong> permet de réaliser un <em>lazy loading</em> des échantillons. Il sagit dune technique qui permet de ne pas surcharger dentrée de jeu la RAM de votre ordinateur en mettant en cache trop déchantillons. Lutilisation des ressources sera progressive, les échantillons étant chargés uniquement lorsque lutilisateur les requiert.",os,ps,cs,et,ba="Récapitulatif",ds,ms,fs,tt,ha="Voici le code complet que jutilise pour le démarrage et la configuration dun serveur audio minimal pour le <em>live coding</em> :",gs,nt,vs,Xa=`<code class="language-supercollider"><span class="token punctuation">(</span>
s<span class="token punctuation">.</span>options<span class="token punctuation">.</span>numBuffers <span class="token operator">=</span> <span class="token number">1024</span> <span class="token operator">*</span> <span class="token number">128</span><span class="token punctuation">;</span> <span class="token comment">// Nombre de buffers disponibles pour stocker des samples</span>
s<span class="token punctuation">.</span>options<span class="token punctuation">.</span>memSize <span class="token operator">=</span> <span class="token number">8192</span> <span class="token operator">*</span> <span class="token number">64</span><span class="token punctuation">;</span> <span class="token comment">// Mémoire disponible pour le serveur</span>
s<span class="token punctuation">.</span>options<span class="token punctuation">.</span>numWireBufs <span class="token operator">=</span> <span class="token number">2048</span><span class="token punctuation">;</span> <span class="token comment">// Augmenter ce nombre si "exceeded number of interconnect buffers"</span>
s<span class="token punctuation">.</span>options<span class="token punctuation">.</span>maxNodes <span class="token operator">=</span> <span class="token number">1024</span> <span class="token operator">*</span> <span class="token number">32</span><span class="token punctuation">;</span> <span class="token comment">// Changer cette valeur si le son saute avec le message "too many nodes"</span>
s<span class="token punctuation">.</span>options<span class="token punctuation">.</span>device <span class="token operator">=</span> <span class="token string">"BlackHole 16ch"</span><span class="token punctuation">;</span> <span class="token comment">// Choix de l'interface audio à utiliser</span>
s<span class="token punctuation">.</span>options<span class="token punctuation">.</span>numOutputBusChannels <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">;</span> <span class="token comment">// Indiquer le nombre de sorties de son interface audio</span>
s<span class="token punctuation">.</span>options<span class="token punctuation">.</span>numInputBusChannels <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">;</span> <span class="token comment">// Indiquer le nombre d'entrées de son interface audio</span>
p<span class="token operator">=</span><span class="token class-name">ProxySpace</span><span class="token punctuation">.</span>push<span class="token punctuation">(</span>s<span class="token punctuation">.</span>boot<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Démarrage du serveur dans un ProxySpace (JITLIB)</span>
p<span class="token punctuation">.</span>makeTempoClock<span class="token punctuation">;</span> <span class="token comment">// Gestion du tempo</span>
p<span class="token punctuation">.</span>clock<span class="token punctuation">.</span>tempo <span class="token operator">=</span> <span class="token number">120</span><span class="token operator">/</span><span class="token number">60</span><span class="token punctuation">;</span>
<span class="token class-name">SAMP</span><span class="token punctuation">.</span>root <span class="token operator">=</span> <span class="token string">"/Users/bubo/.config/livecoding/samples/"</span><span class="token punctuation">;</span> <span class="token comment">// Chemin vers les samples</span>
<span class="token class-name">SAMP</span><span class="token punctuation">.</span>lazyLoading <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span> <span class="token comment">// Chargement paresseux (permet de ne pas remplir la mémoire pour rien)</span>
s<span class="token punctuation">.</span>waitForBoot<span class="token punctuation">(</span><span class="token punctuation">&#123;</span>
<span class="token string">"/Users/bubo/.config/livecoding/Synthdefs.scd"</span><span class="token punctuation">.</span>load<span class="token punctuation">;</span> <span class="token comment">// Chargement des synthétiseurs</span>
<span class="token class-name">StageLimiter</span><span class="token punctuation">.</span>activate<span class="token punctuation">;</span> <span class="token comment">// StageLimiter pour les oreilles</span>
<span class="token string">"== 💻 LIVE CODING PRÊT 💻 == "</span><span class="token punctuation">.</span>postln<span class="token punctuation">;</span>
<span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">)</span></code>`,bs,st,ka="Sauvegardez cet extrait de code dans un fichier <strong>.scd</strong> situé dans votre dossier de stockage. Vous pourrez ensuite lévaluer à chaque fois que vous voudrez démarrer à laide de la commande suivante quil vous faudra évaluer dans linterpréteur :",hs,at,ks,Ya='<code class="language-supercollider"><span class="token string">"/Users/bubo/.config/livecoding/Configuration.scd"</span><span class="token punctuation">.</span>load<span class="token punctuation">;</span></code>',xs,lt,xa="Si vous souhaitez démarrer <strong>SuperCollider</strong> avec cette configuration par défaut, vous pouvez également tirer parti du fichier de démarrage, qui sexécute automatiquement à louverture de <strong>SCIDe</strong>. Ce dernier se situe dans votre dossier de configuration <strong>SuperCollider</strong>. Vous pouvez le trouver en évaluant le code suivant :",Cs,rt,_s,Ka='<code class="language-supercollider"><span class="token class-name">Platform</span><span class="token punctuation">.</span>userAppSupportDir</code>',ws,it,Ca=`Il devrait exister un fichier <code>startup.scd</code> que vous pouvez remplir avec la
configuration ci-dessus, en adaptant les chemins.`,ys,ut,_a="Conclusion",Ss,ot,wa=`Cette configuration sera amenée à évoluer et pourra même faire lobjet dune
refonte complète lorsque vous serez amenés à pré-charger dautres composants :
synthétiseurs, effets pré-déclarés, etc. Nous y reviendrons.`,Ls;return I=new Ba({props:{info:`Ce guide est une approche personnelle de <b>SuperCollider</b>. Je ne
suis pas particulièrement expert sur le sujet et j'accueille volontiers toutes
les suggestions pour améliorer cette série d'articles.`,markdown:"false"}}),Ge=new Ba({props:{info:"Ce graphe est généré avec la commande <code>tree -L 1</code>",markdown:"false"}}),{c(){y=u("h2"),y.textContent=m,h=r(),w=u("p"),w.innerHTML=x,L=r(),f=u("br"),A=r(),H=u("p"),H.innerHTML=te,G=r(),D=u("br"),Y=r(),Ts(I.$$.fragment),q=r(),C=u("br"),T=r(),a=u("p"),a.innerHTML=l,p=r(),c=u("br"),d=r(),g=u("h2"),g.textContent=k,v=r(),_=u("p"),_.innerHTML=F,P=r(),ne=u("br"),se=r(),J=u("p"),J.innerHTML=dt,ae=r(),S=u("p"),S.innerHTML=E,O=r(),W=u("br"),M=r(),Z=u("p"),Z.innerHTML=U,N=r(),j=u("ul"),j.innerHTML=le,K=r(),V=u("p"),V.innerHTML=pt,X=r(),ct=u("br"),ee=r(),re=u("h2"),re.textContent=Es,mt=r(),ie=u("p"),ie.innerHTML=zs,ft=r(),ue=u("ul"),ue.innerHTML=$s,gt=r(),vt=u("br"),bt=r(),oe=u("p"),oe.innerHTML=Rs,ht=r(),pe=u("pre"),kt=new z(!1),xt=r(),ce=u("p"),ce.textContent=Bs,Ct=r(),de=u("pre"),_t=new z(!1),wt=r(),me=u("p"),me.innerHTML=Is,yt=r(),St=u("br"),Lt=r(),fe=u("p"),fe.innerHTML=js,qt=r(),Tt=u("br"),At=r(),ge=u("h2"),ge.textContent=Ds,Ft=r(),Mt=u("br"),Ht=r(),ve=u("p"),ve.innerHTML=Os,Pt=r(),be=u("ul"),be.innerHTML=Us,Et=r(),he=u("h2"),he.textContent=Gs,zt=r(),$t=u("br"),Rt=r(),ke=u("p"),ke.innerHTML=Ns,Bt=r(),It=u("br"),jt=r(),xe=u("h3"),xe.textContent=Vs,Dt=r(),Ot=u("br"),Ut=r(),Ce=u("p"),Ce.textContent=Qs,Gt=r(),_e=u("pre"),Nt=new z(!1),Vt=r(),we=u("p"),we.textContent=Js,Qt=r(),ye=u("pre"),Jt=new z(!1),Wt=r(),Se=u("p"),Se.innerHTML=Ws,Zt=r(),Le=u("pre"),Xt=new z(!1),Yt=r(),Kt=u("br"),en=r(),qe=u("p"),qe.innerHTML=Zs,tn=r(),nn=u("br"),sn=r(),Te=u("p"),Te.innerHTML=Xs,an=r(),ln=u("br"),rn=r(),Ae=u("h3"),Ae.textContent=Ys,un=r(),on=u("br"),pn=r(),Fe=u("p"),Fe.innerHTML=Ks,cn=r(),dn=u("br"),mn=r(),Me=u("p"),Me.textContent=ea,fn=r(),He=u("p"),He.textContent=ta,gn=r(),Pe=u("p"),Pe.textContent=na,vn=r(),bn=u("br"),hn=r(),Ee=u("p"),Ee.innerHTML=sa,kn=r(),xn=u("br"),Cn=r(),ze=u("h3"),ze.textContent=aa,_n=r(),wn=u("br"),yn=r(),$e=u("p"),$e.innerHTML=la,Sn=r(),Re=u("pre"),Ln=new z(!1),qn=r(),Be=u("p"),Be.innerHTML=ra,Tn=r(),Ie=u("pre"),An=new z(!1),Fn=r(),je=u("p"),je.innerHTML=ia,Mn=r(),Hn=u("br"),Pn=r(),De=u("h3"),De.textContent=ua,En=r(),zn=u("br"),$n=r(),Oe=u("p"),Oe.innerHTML=oa,Rn=r(),Ue=u("pre"),Bn=new z(!1),In=r(),Ts(Ge.$$.fragment),jn=r(),Dn=u("br"),On=r(),Ne=u("p"),Ne.innerHTML=pa,Un=r(),Gn=u("br"),Nn=r(),Ve=u("h3"),Ve.textContent=ca,Vn=r(),Qn=u("br"),Jn=r(),Qe=u("p"),Qe.innerHTML=da,Wn=r(),Zn=u("br"),Xn=r(),Je=u("p"),Je.innerHTML=ma,Yn=r(),We=u("pre"),Kn=new z(!1),es=r(),ts=u("br"),ns=r(),Ze=u("p"),Ze.innerHTML=fa,ss=r(),Xe=u("pre"),as=new z(!1),ls=r(),Ye=u("p"),Ye.innerHTML=ga,rs=r(),is=u("br"),us=r(),Ke=u("p"),Ke.innerHTML=va,os=r(),ps=u("br"),cs=r(),et=u("h3"),et.textContent=ba,ds=r(),ms=u("br"),fs=r(),tt=u("p"),tt.innerHTML=ha,gs=r(),nt=u("pre"),vs=new z(!1),bs=r(),st=u("p"),st.innerHTML=ka,hs=r(),at=u("pre"),ks=new z(!1),xs=r(),lt=u("p"),lt.innerHTML=xa,Cs=r(),rt=u("pre"),_s=new z(!1),ws=r(),it=u("p"),it.innerHTML=Ca,ys=r(),ut=u("h2"),ut.textContent=_a,Ss=r(),ot=u("p"),ot.textContent=wa,this.h()},l(e){y=o(e,"H2",{"data-svelte-h":!0}),b(y)!=="svelte-1ukekoe"&&(y.textContent=m),h=i(e),w=o(e,"P",{"data-svelte-h":!0}),b(w)!=="svelte-7rkpty"&&(w.innerHTML=x),L=i(e),f=o(e,"BR",{}),A=i(e),H=o(e,"P",{"data-svelte-h":!0}),b(H)!=="svelte-1rjzs2d"&&(H.innerHTML=te),G=i(e),D=o(e,"BR",{}),Y=i(e),As(I.$$.fragment,e),q=i(e),C=o(e,"BR",{}),T=i(e),a=o(e,"P",{"data-svelte-h":!0}),b(a)!=="svelte-50dijs"&&(a.innerHTML=l),p=i(e),c=o(e,"BR",{}),d=i(e),g=o(e,"H2",{"data-svelte-h":!0}),b(g)!=="svelte-xnmkjo"&&(g.textContent=k),v=i(e),_=o(e,"P",{"data-svelte-h":!0}),b(_)!=="svelte-1rinzxc"&&(_.innerHTML=F),P=i(e),ne=o(e,"BR",{}),se=i(e),J=o(e,"P",{"data-svelte-h":!0}),b(J)!=="svelte-d8v93c"&&(J.innerHTML=dt),ae=i(e),S=o(e,"P",{"data-svelte-h":!0}),b(S)!=="svelte-1takps0"&&(S.innerHTML=E),O=i(e),W=o(e,"BR",{}),M=i(e),Z=o(e,"P",{"data-svelte-h":!0}),b(Z)!=="svelte-1vyl27o"&&(Z.innerHTML=U),N=i(e),j=o(e,"UL",{"data-svelte-h":!0}),b(j)!=="svelte-hv4bkw"&&(j.innerHTML=le),K=i(e),V=o(e,"P",{"data-svelte-h":!0}),b(V)!=="svelte-3smba5"&&(V.innerHTML=pt),X=i(e),ct=o(e,"BR",{}),ee=i(e),re=o(e,"H2",{"data-svelte-h":!0}),b(re)!=="svelte-hua5op"&&(re.textContent=Es),mt=i(e),ie=o(e,"P",{"data-svelte-h":!0}),b(ie)!=="svelte-1bj8gjt"&&(ie.innerHTML=zs),ft=i(e),ue=o(e,"UL",{"data-svelte-h":!0}),b(ue)!=="svelte-8eutst"&&(ue.innerHTML=$s),gt=i(e),vt=o(e,"BR",{}),bt=i(e),oe=o(e,"P",{"data-svelte-h":!0}),b(oe)!=="svelte-oa7hms"&&(oe.innerHTML=Rs),ht=i(e),pe=o(e,"PRE",{class:!0});var n=$(pe);kt=R(n,!1),n.forEach(t),xt=i(e),ce=o(e,"P",{"data-svelte-h":!0}),b(ce)!=="svelte-51uwhi"&&(ce.textContent=Bs),Ct=i(e),de=o(e,"PRE",{class:!0});var ya=$(de);_t=R(ya,!1),ya.forEach(t),wt=i(e),me=o(e,"P",{"data-svelte-h":!0}),b(me)!=="svelte-10i0i02"&&(me.innerHTML=Is),yt=i(e),St=o(e,"BR",{}),Lt=i(e),fe=o(e,"P",{"data-svelte-h":!0}),b(fe)!=="svelte-1xrvjb"&&(fe.innerHTML=js),qt=i(e),Tt=o(e,"BR",{}),At=i(e),ge=o(e,"H2",{"data-svelte-h":!0}),b(ge)!=="svelte-11x115w"&&(ge.textContent=Ds),Ft=i(e),Mt=o(e,"BR",{}),Ht=i(e),ve=o(e,"P",{"data-svelte-h":!0}),b(ve)!=="svelte-oiiynv"&&(ve.innerHTML=Os),Pt=i(e),be=o(e,"UL",{"data-svelte-h":!0}),b(be)!=="svelte-1kykvor"&&(be.innerHTML=Us),Et=i(e),he=o(e,"H2",{"data-svelte-h":!0}),b(he)!=="svelte-1gkj9qe"&&(he.textContent=Gs),zt=i(e),$t=o(e,"BR",{}),Rt=i(e),ke=o(e,"P",{"data-svelte-h":!0}),b(ke)!=="svelte-89t05y"&&(ke.innerHTML=Ns),Bt=i(e),It=o(e,"BR",{}),jt=i(e),xe=o(e,"H3",{"data-svelte-h":!0}),b(xe)!=="svelte-tt5viu"&&(xe.textContent=Vs),Dt=i(e),Ot=o(e,"BR",{}),Ut=i(e),Ce=o(e,"P",{"data-svelte-h":!0}),b(Ce)!=="svelte-1b1pdsx"&&(Ce.textContent=Qs),Gt=i(e),_e=o(e,"PRE",{class:!0});var Sa=$(_e);Nt=R(Sa,!1),Sa.forEach(t),Vt=i(e),we=o(e,"P",{"data-svelte-h":!0}),b(we)!=="svelte-zxgqi1"&&(we.textContent=Js),Qt=i(e),ye=o(e,"PRE",{class:!0});var La=$(ye);Jt=R(La,!1),La.forEach(t),Wt=i(e),Se=o(e,"P",{"data-svelte-h":!0}),b(Se)!=="svelte-1ph5p4m"&&(Se.innerHTML=Ws),Zt=i(e),Le=o(e,"PRE",{class:!0});var qa=$(Le);Xt=R(qa,!1),qa.forEach(t),Yt=i(e),Kt=o(e,"BR",{}),en=i(e),qe=o(e,"P",{"data-svelte-h":!0}),b(qe)!=="svelte-1my7crh"&&(qe.innerHTML=Zs),tn=i(e),nn=o(e,"BR",{}),sn=i(e),Te=o(e,"P",{"data-svelte-h":!0}),b(Te)!=="svelte-ysw906"&&(Te.innerHTML=Xs),an=i(e),ln=o(e,"BR",{}),rn=i(e),Ae=o(e,"H3",{"data-svelte-h":!0}),b(Ae)!=="svelte-kfth7w"&&(Ae.textContent=Ys),un=i(e),on=o(e,"BR",{}),pn=i(e),Fe=o(e,"P",{"data-svelte-h":!0}),b(Fe)!=="svelte-aiy4wh"&&(Fe.innerHTML=Ks),cn=i(e),dn=o(e,"BR",{}),mn=i(e),Me=o(e,"P",{"data-svelte-h":!0}),b(Me)!=="svelte-nb5dha"&&(Me.textContent=ea),fn=i(e),He=o(e,"P",{"data-svelte-h":!0}),b(He)!=="svelte-uv9hed"&&(He.textContent=ta),gn=i(e),Pe=o(e,"P",{"data-svelte-h":!0}),b(Pe)!=="svelte-1edr512"&&(Pe.textContent=na),vn=i(e),bn=o(e,"BR",{}),hn=i(e),Ee=o(e,"P",{"data-svelte-h":!0}),b(Ee)!=="svelte-fbrdfo"&&(Ee.innerHTML=sa),kn=i(e),xn=o(e,"BR",{}),Cn=i(e),ze=o(e,"H3",{"data-svelte-h":!0}),b(ze)!=="svelte-4wsstc"&&(ze.textContent=aa),_n=i(e),wn=o(e,"BR",{}),yn=i(e),$e=o(e,"P",{"data-svelte-h":!0}),b($e)!=="svelte-1kgpabk"&&($e.innerHTML=la),Sn=i(e),Re=o(e,"PRE",{class:!0});var Ta=$(Re);Ln=R(Ta,!1),Ta.forEach(t),qn=i(e),Be=o(e,"P",{"data-svelte-h":!0}),b(Be)!=="svelte-dg58kp"&&(Be.innerHTML=ra),Tn=i(e),Ie=o(e,"PRE",{class:!0});var Aa=$(Ie);An=R(Aa,!1),Aa.forEach(t),Fn=i(e),je=o(e,"P",{"data-svelte-h":!0}),b(je)!=="svelte-8mr65h"&&(je.innerHTML=ia),Mn=i(e),Hn=o(e,"BR",{}),Pn=i(e),De=o(e,"H3",{"data-svelte-h":!0}),b(De)!=="svelte-eqy1p7"&&(De.textContent=ua),En=i(e),zn=o(e,"BR",{}),$n=i(e),Oe=o(e,"P",{"data-svelte-h":!0}),b(Oe)!=="svelte-1izbaiv"&&(Oe.innerHTML=oa),Rn=i(e),Ue=o(e,"PRE",{class:!0});var Fa=$(Ue);Bn=R(Fa,!1),Fa.forEach(t),In=i(e),As(Ge.$$.fragment,e),jn=i(e),Dn=o(e,"BR",{}),On=i(e),Ne=o(e,"P",{"data-svelte-h":!0}),b(Ne)!=="svelte-835hap"&&(Ne.innerHTML=pa),Un=i(e),Gn=o(e,"BR",{}),Nn=i(e),Ve=o(e,"H3",{"data-svelte-h":!0}),b(Ve)!=="svelte-9mx1vr"&&(Ve.textContent=ca),Vn=i(e),Qn=o(e,"BR",{}),Jn=i(e),Qe=o(e,"P",{"data-svelte-h":!0}),b(Qe)!=="svelte-nmdp3e"&&(Qe.innerHTML=da),Wn=i(e),Zn=o(e,"BR",{}),Xn=i(e),Je=o(e,"P",{"data-svelte-h":!0}),b(Je)!=="svelte-1xxxj79"&&(Je.innerHTML=ma),Yn=i(e),We=o(e,"PRE",{class:!0});var Ma=$(We);Kn=R(Ma,!1),Ma.forEach(t),es=i(e),ts=o(e,"BR",{}),ns=i(e),Ze=o(e,"P",{"data-svelte-h":!0}),b(Ze)!=="svelte-broz1s"&&(Ze.innerHTML=fa),ss=i(e),Xe=o(e,"PRE",{class:!0});var Ha=$(Xe);as=R(Ha,!1),Ha.forEach(t),ls=i(e),Ye=o(e,"P",{"data-svelte-h":!0}),b(Ye)!=="svelte-1kgbl5n"&&(Ye.innerHTML=ga),rs=i(e),is=o(e,"BR",{}),us=i(e),Ke=o(e,"P",{"data-svelte-h":!0}),b(Ke)!=="svelte-j6tawo"&&(Ke.innerHTML=va),os=i(e),ps=o(e,"BR",{}),cs=i(e),et=o(e,"H3",{"data-svelte-h":!0}),b(et)!=="svelte-ri7iuh"&&(et.textContent=ba),ds=i(e),ms=o(e,"BR",{}),fs=i(e),tt=o(e,"P",{"data-svelte-h":!0}),b(tt)!=="svelte-9svk99"&&(tt.innerHTML=ha),gs=i(e),nt=o(e,"PRE",{class:!0});var Pa=$(nt);vs=R(Pa,!1),Pa.forEach(t),bs=i(e),st=o(e,"P",{"data-svelte-h":!0}),b(st)!=="svelte-4w91o5"&&(st.innerHTML=ka),hs=i(e),at=o(e,"PRE",{class:!0});var Ea=$(at);ks=R(Ea,!1),Ea.forEach(t),xs=i(e),lt=o(e,"P",{"data-svelte-h":!0}),b(lt)!=="svelte-1ofmlv6"&&(lt.innerHTML=xa),Cs=i(e),rt=o(e,"PRE",{class:!0});var za=$(rt);_s=R(za,!1),za.forEach(t),ws=i(e),it=o(e,"P",{"data-svelte-h":!0}),b(it)!=="svelte-16ctipw"&&(it.innerHTML=Ca),ys=i(e),ut=o(e,"H2",{"data-svelte-h":!0}),b(ut)!=="svelte-grw4hp"&&(ut.textContent=_a),Ss=i(e),ot=o(e,"P",{"data-svelte-h":!0}),b(ot)!=="svelte-qw3nrf"&&(ot.textContent=wa),this.h()},h(){kt.a=null,B(pe,"class","language-js"),_t.a=null,B(de,"class","language-js"),Nt.a=null,B(_e,"class","language-supercollider"),Jt.a=null,B(ye,"class","language-supercollider"),Xt.a=null,B(Le,"class","language-supercollider"),Ln.a=null,B(Re,"class","language-supercollider"),An.a=null,B(Ie,"class","language-supercollider"),Bn.a=null,B(Ue,"class","language-bash"),Kn.a=null,B(We,"class","language-supercollider"),as.a=null,B(Xe,"class","language-supercollider"),vs.a=null,B(nt,"class","language-supercollider"),ks.a=null,B(at,"class","language-supercollider"),_s.a=null,B(rt,"class","language-supercollider")},m(e,n){s(e,y,n),s(e,h,n),s(e,w,n),s(e,L,n),s(e,f,n),s(e,A,n),s(e,H,n),s(e,G,n),s(e,D,n),s(e,Y,n),Fs(I,e,n),s(e,q,n),s(e,C,n),s(e,T,n),s(e,a,n),s(e,p,n),s(e,c,n),s(e,d,n),s(e,g,n),s(e,v,n),s(e,_,n),s(e,P,n),s(e,ne,n),s(e,se,n),s(e,J,n),s(e,ae,n),s(e,S,n),s(e,O,n),s(e,W,n),s(e,M,n),s(e,Z,n),s(e,N,n),s(e,j,n),s(e,K,n),s(e,V,n),s(e,X,n),s(e,ct,n),s(e,ee,n),s(e,re,n),s(e,mt,n),s(e,ie,n),s(e,ft,n),s(e,ue,n),s(e,gt,n),s(e,vt,n),s(e,bt,n),s(e,oe,n),s(e,ht,n),s(e,pe,n),kt.m(Da,pe),s(e,xt,n),s(e,ce,n),s(e,Ct,n),s(e,de,n),_t.m(Oa,de),s(e,wt,n),s(e,me,n),s(e,yt,n),s(e,St,n),s(e,Lt,n),s(e,fe,n),s(e,qt,n),s(e,Tt,n),s(e,At,n),s(e,ge,n),s(e,Ft,n),s(e,Mt,n),s(e,Ht,n),s(e,ve,n),s(e,Pt,n),s(e,be,n),s(e,Et,n),s(e,he,n),s(e,zt,n),s(e,$t,n),s(e,Rt,n),s(e,ke,n),s(e,Bt,n),s(e,It,n),s(e,jt,n),s(e,xe,n),s(e,Dt,n),s(e,Ot,n),s(e,Ut,n),s(e,Ce,n),s(e,Gt,n),s(e,_e,n),Nt.m(Ua,_e),s(e,Vt,n),s(e,we,n),s(e,Qt,n),s(e,ye,n),Jt.m(Ga,ye),s(e,Wt,n),s(e,Se,n),s(e,Zt,n),s(e,Le,n),Xt.m(Na,Le),s(e,Yt,n),s(e,Kt,n),s(e,en,n),s(e,qe,n),s(e,tn,n),s(e,nn,n),s(e,sn,n),s(e,Te,n),s(e,an,n),s(e,ln,n),s(e,rn,n),s(e,Ae,n),s(e,un,n),s(e,on,n),s(e,pn,n),s(e,Fe,n),s(e,cn,n),s(e,dn,n),s(e,mn,n),s(e,Me,n),s(e,fn,n),s(e,He,n),s(e,gn,n),s(e,Pe,n),s(e,vn,n),s(e,bn,n),s(e,hn,n),s(e,Ee,n),s(e,kn,n),s(e,xn,n),s(e,Cn,n),s(e,ze,n),s(e,_n,n),s(e,wn,n),s(e,yn,n),s(e,$e,n),s(e,Sn,n),s(e,Re,n),Ln.m(Va,Re),s(e,qn,n),s(e,Be,n),s(e,Tn,n),s(e,Ie,n),An.m(Qa,Ie),s(e,Fn,n),s(e,je,n),s(e,Mn,n),s(e,Hn,n),s(e,Pn,n),s(e,De,n),s(e,En,n),s(e,zn,n),s(e,$n,n),s(e,Oe,n),s(e,Rn,n),s(e,Ue,n),Bn.m(Ja,Ue),s(e,In,n),Fs(Ge,e,n),s(e,jn,n),s(e,Dn,n),s(e,On,n),s(e,Ne,n),s(e,Un,n),s(e,Gn,n),s(e,Nn,n),s(e,Ve,n),s(e,Vn,n),s(e,Qn,n),s(e,Jn,n),s(e,Qe,n),s(e,Wn,n),s(e,Zn,n),s(e,Xn,n),s(e,Je,n),s(e,Yn,n),s(e,We,n),Kn.m(Wa,We),s(e,es,n),s(e,ts,n),s(e,ns,n),s(e,Ze,n),s(e,ss,n),s(e,Xe,n),as.m(Za,Xe),s(e,ls,n),s(e,Ye,n),s(e,rs,n),s(e,is,n),s(e,us,n),s(e,Ke,n),s(e,os,n),s(e,ps,n),s(e,cs,n),s(e,et,n),s(e,ds,n),s(e,ms,n),s(e,fs,n),s(e,tt,n),s(e,gs,n),s(e,nt,n),vs.m(Xa,nt),s(e,bs,n),s(e,st,n),s(e,hs,n),s(e,at,n),ks.m(Ya,at),s(e,xs,n),s(e,lt,n),s(e,Cs,n),s(e,rt,n),_s.m(Ka,rt),s(e,ws,n),s(e,it,n),s(e,ys,n),s(e,ut,n),s(e,Ss,n),s(e,ot,n),Ls=!0},p:tl,i(e){Ls||(Ms(I.$$.fragment,e),Ms(Ge.$$.fragment,e),Ls=!0)},o(e){Hs(I.$$.fragment,e),Hs(Ge.$$.fragment,e),Ls=!1},d(e){e&&(t(y),t(h),t(w),t(L),t(f),t(A),t(H),t(G),t(D),t(Y),t(q),t(C),t(T),t(a),t(p),t(c),t(d),t(g),t(v),t(_),t(P),t(ne),t(se),t(J),t(ae),t(S),t(O),t(W),t(M),t(Z),t(N),t(j),t(K),t(V),t(X),t(ct),t(ee),t(re),t(mt),t(ie),t(ft),t(ue),t(gt),t(vt),t(bt),t(oe),t(ht),t(pe),t(xt),t(ce),t(Ct),t(de),t(wt),t(me),t(yt),t(St),t(Lt),t(fe),t(qt),t(Tt),t(At),t(ge),t(Ft),t(Mt),t(Ht),t(ve),t(Pt),t(be),t(Et),t(he),t(zt),t($t),t(Rt),t(ke),t(Bt),t(It),t(jt),t(xe),t(Dt),t(Ot),t(Ut),t(Ce),t(Gt),t(_e),t(Vt),t(we),t(Qt),t(ye),t(Wt),t(Se),t(Zt),t(Le),t(Yt),t(Kt),t(en),t(qe),t(tn),t(nn),t(sn),t(Te),t(an),t(ln),t(rn),t(Ae),t(un),t(on),t(pn),t(Fe),t(cn),t(dn),t(mn),t(Me),t(fn),t(He),t(gn),t(Pe),t(vn),t(bn),t(hn),t(Ee),t(kn),t(xn),t(Cn),t(ze),t(_n),t(wn),t(yn),t($e),t(Sn),t(Re),t(qn),t(Be),t(Tn),t(Ie),t(Fn),t(je),t(Mn),t(Hn),t(Pn),t(De),t(En),t(zn),t($n),t(Oe),t(Rn),t(Ue),t(In),t(jn),t(Dn),t(On),t(Ne),t(Un),t(Gn),t(Nn),t(Ve),t(Vn),t(Qn),t(Jn),t(Qe),t(Wn),t(Zn),t(Xn),t(Je),t(Yn),t(We),t(es),t(ts),t(ns),t(Ze),t(ss),t(Xe),t(ls),t(Ye),t(rs),t(is),t(us),t(Ke),t(os),t(ps),t(cs),t(et),t(ds),t(ms),t(fs),t(tt),t(gs),t(nt),t(bs),t(st),t(hs),t(at),t(xs),t(lt),t(Cs),t(rt),t(ws),t(it),t(ys),t(ut),t(Ss),t(ot)),Ps(I,e),Ps(Ge,e)}}}function ul(Q){let y,m;const h=[Q[0],ja];let w={$$slots:{default:[il]},$$scope:{ctx:Q}};for(let x=0;x<h.length;x+=1)w=qs(w,h[x]);return y=new al({props:w}),{c(){Ts(y.$$.fragment)},l(x){As(y.$$.fragment,x)},m(x,L){Fs(y,x,L),m=!0},p(x,[L]){const f=L&1?ll(h,[L&1&&Ra(x[0]),L&0&&Ra(ja)]):{};L&2&&(f.$$scope={dirty:L,ctx:x}),y.$set(f)},i(x){m||(Ms(y.$$.fragment,x),m=!0)},o(x){Hs(y.$$.fragment,x),m=!1},d(x){Ps(y,x)}}}const ja={title:"Introduction au live coding sur SuperCollider (I)",author:"Raphaël Maurice Forment",date:"2023-12-24"};function ol(Q,y,m){return Q.$$set=h=>{m(0,y=qs(qs({},y),$a(h)))},y=$a(y),[y]}class fl extends nl{constructor(y){super(),sl(this,y,ol,ul,el,{})}}export{fl as default,ja as metadata};