deploy: e592499711
This commit is contained in:
Binary file not shown.
@ -314,6 +314,20 @@ You can also find a .pdf version listing the principal commands and functions [h
|
|||||||
`},FB=r=>{const e=St(r);return`
|
`},FB=r=>{const e=St(r);return`
|
||||||
# Atelier (06 mars 2024)
|
# Atelier (06 mars 2024)
|
||||||
|
|
||||||
|
Bonjour tout le monde ! Nous sommes :
|
||||||
|
|
||||||
|
- [Rémi Georges](https://remigeorges.fr) : musicien, réalisateur en informatique musicale.
|
||||||
|
- [Agathe Herrou](https://www.youtube.com/@th4music) : musicienne, chercheuse.
|
||||||
|
- [Raphaël Forment](https://raphaelforment.fr) : musicien, doctorant.
|
||||||
|
|
||||||
|
Nous pratiquons le [live coding](https://livecoding.fr). Nous utilisons notre ordinateur comme un instrument de musique, nous programmons de la musique devant notre public. Nous pouvons faire plein de choses comme :
|
||||||
|
|
||||||
|
- créer des instruments de musique, des synthétiseurs, des boîtes à rythme.
|
||||||
|
- jouer des échantillons, charger des images, des vidéos, créer des animations.
|
||||||
|
- contrôler d'autres instruments, jouer avec d'autres musiciens.
|
||||||
|
|
||||||
|
Topos est un instrument de musique. On peut l'utiliser depuis n'importe quel ordinateur, sans avoir à installer quoi que ce soit. Nous l'avons fabriqué pour que tout le monde puisse jouer facilement de la musique.
|
||||||
|
|
||||||
|
|
||||||
## Découverte
|
## Découverte
|
||||||
|
|
||||||
@ -326,6 +340,8 @@ beat(2)::sound('snare').out()
|
|||||||
beat(.5)::sound('hh').out()
|
beat(.5)::sound('hh').out()
|
||||||
`,!0)}
|
`,!0)}
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
- Qu'est-ce qu'il se passe si je change un nombre ?
|
- Qu'est-ce qu'il se passe si je change un nombre ?
|
||||||
- Qu'est-ce qu'il se passe si je change un nom ?
|
- Qu'est-ce qu'il se passe si je change un nom ?
|
||||||
- Essayez par exemple <ic>"sid"</ic> ou <ic>"trump"</ic>.
|
- Essayez par exemple <ic>"sid"</ic> ou <ic>"trump"</ic>.
|
||||||
@ -348,6 +364,8 @@ beat([0.25,0.5].beat(1))::sound("pluck")
|
|||||||
.note([40,45].beat(2)).out()
|
.note([40,45].beat(2)).out()
|
||||||
`,!0)}
|
`,!0)}
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
- Qu'est-ce que le son <ic>"pluck"</ic> ?
|
- Qu'est-ce que le son <ic>"pluck"</ic> ?
|
||||||
|
|
||||||
- Que signifie <ic>.note([40,45].beat(2))</ic> ?
|
- Que signifie <ic>.note([40,45].beat(2))</ic> ?
|
||||||
@ -376,12 +394,16 @@ beat([0.25,0.5].beat())::sound("pluck")
|
|||||||
.out()
|
.out()
|
||||||
`,!0)}
|
`,!0)}
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
Ici, on ajoute une nouvelle mélodie mais il s'agit aussi d'un nouvel instrument. C'est pour cela que le code est plus long. Quand on fait du <em>live coding</em>, on code tout en même temps : notes, rythmes, mélodies, sons. C'est beaucoup de choses ! C'est pour cela que le code est court, on essaie de tout taper très vite en jouant !
|
Ici, on ajoute une nouvelle mélodie mais il s'agit aussi d'un nouvel instrument. C'est pour cela que le code est plus long. Quand on fait du <em>live coding</em>, on code tout en même temps : notes, rythmes, mélodies, sons. C'est beaucoup de choses ! C'est pour cela que le code est court, on essaie de tout taper très vite en jouant !
|
||||||
|
|
||||||
- Que signifie selon vous <ic>vib</ic>, <ic>delay</ic>, <ic>room</ic> ou <ic>size</ic> ?
|
- Que signifie selon vous <ic>vib</ic>, <ic>delay</ic>, <ic>room</ic> ou <ic>size</ic> ?
|
||||||
|
|
||||||
- Que se passe-t-il si je change les valeurs dans <ic>vib</ic>, <ic>delay</ic>, <ic>room</ic> ou <ic>size</ic> ?
|
- Que se passe-t-il si je change les valeurs dans <ic>vib</ic>, <ic>delay</ic>, <ic>room</ic> ou <ic>size</ic> ?
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
**Exercices :**
|
**Exercices :**
|
||||||
|
|
||||||
- Transformer <ic>vib(8)</ic> en <ic>vib([2,4,8].beat(1))</ic>.
|
- Transformer <ic>vib(8)</ic> en <ic>vib([2,4,8].beat(1))</ic>.
|
||||||
@ -404,11 +426,15 @@ rhythm(0.5, 2, 8)::sound('sd').out()
|
|||||||
|
|
||||||
Nous allons créer un nouvel instrument à partir d'un son de base. Voici un premier son :
|
Nous allons créer un nouvel instrument à partir d'un son de base. Voici un premier son :
|
||||||
|
|
||||||
${e("Notre son de base","beat(2)::sound('sine').note(50).ad(0, .5).out()",!0)};
|
${e("Notre son de base","beat(2)::sound('sine').note(50).ad(0, .5).out()",!0)}
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
Ce son est assez ennuyeux. Nous allons ajouter quelques paramètres :
|
Ce son est assez ennuyeux. Nous allons ajouter quelques paramètres :
|
||||||
|
|
||||||
${e("Beaucoup mieux !","beat(2)::sound('sine').note(50).fmi(2).fmh(2).ad(0, .5).out()",!0)};
|
${e("Beaucoup mieux !","beat(2)::sound('sine').note(50).fmi(2).fmh(2).ad(0, .5).out()",!0)}
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
Nous allons aussi ajouter quelques effets intéressants :
|
Nous allons aussi ajouter quelques effets intéressants :
|
||||||
|
|
||||||
@ -416,6 +442,8 @@ ${e("Ajout d'un écho",`beat(2)::sound('sine').note(50)
|
|||||||
.fmi(2).fmh(2).ad(1/16, 1.5)
|
.fmi(2).fmh(2).ad(1/16, 1.5)
|
||||||
.delay(0.5).delayt(0.75).out()`,!0)}
|
.delay(0.5).delayt(0.75).out()`,!0)}
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
Nous pouvons utiliser plusieurs techniques pour rendre le son plus dynamique :
|
Nous pouvons utiliser plusieurs techniques pour rendre le son plus dynamique :
|
||||||
- générer des valeurs aléatoires pour les paramètres
|
- générer des valeurs aléatoires pour les paramètres
|
||||||
- utiliser des générateurs de valeurs (comme <ic>usine</ic>)
|
- utiliser des générateurs de valeurs (comme <ic>usine</ic>)
|
||||||
@ -427,6 +455,7 @@ beat(2)::sound('sine').note([50,55,57,62,66, 69, 74].mouseX())
|
|||||||
.ad(1/16, 1.5).delay(0.5).delayt(0.75)
|
.ad(1/16, 1.5).delay(0.5).delayt(0.75)
|
||||||
.out()`,!0)}
|
.out()`,!0)}
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
Un exemple final, le plus complexe jusqu'à présent :
|
Un exemple final, le plus complexe jusqu'à présent :
|
||||||
|
|
||||||
@ -437,6 +466,30 @@ beat(2)::sound('triangle')
|
|||||||
.ad(1/16, 1.5).delay(0.5).delayt(0.75)
|
.ad(1/16, 1.5).delay(0.5).delayt(0.75)
|
||||||
.room(0.5).size(8).lpf(usine(1/3)*4000)`,!0)}
|
.room(0.5).size(8).lpf(usine(1/3)*4000)`,!0)}
|
||||||
|
|
||||||
|
## Compléments
|
||||||
|
|
||||||
|
${e("Quelques échantillons",`
|
||||||
|
ab ade ades2 ades3 ades4 alex alphabet amencutup armora arp arpy auto
|
||||||
|
baa baa2 bass bass0 bass1 bass2 bass3 bassdm bassfoo battles bd bend
|
||||||
|
bev bin birds birds3 bleep blip blue bottle breaks125 breaks152
|
||||||
|
breaks157 breaks165 breath bubble can casio cb cc chin circus clak
|
||||||
|
click clubkick co coins control cosmicg cp cr crow d db diphone
|
||||||
|
diphone2 dist dork2 dorkbot dr dr2 dr55 dr_few drum drumtraks e east
|
||||||
|
electro1 em2 erk f feel feelfx fest fire flick fm foo future gab
|
||||||
|
gabba gabbaloud gabbalouder glasstap glitch glitch2 gretsch gtr h
|
||||||
|
hand hardcore hardkick haw hc hh hh27 hit hmm ho hoover house ht if
|
||||||
|
ifdrums incoming industrial insect invaders jazz jungbass jungle juno
|
||||||
|
jvbass kicklinn koy kurt latibro led less lighter linnhats lt made
|
||||||
|
made2 mash mash2 metal miniyeah monsterb moog mouth mp3 msg mt mute
|
||||||
|
newnotes noise noise2 notes numbers oc off outdoor pad padlong pebbles
|
||||||
|
perc peri pluck popkick print proc procshort psr rave rave2 ravemono
|
||||||
|
realclaps reverbkick rm rs sax sd seawolf sequential sf sheffield
|
||||||
|
short sid sine sitar sn space speakspell speech speechless speedupdown
|
||||||
|
stab stomp subroc3d sugar sundance tabla tabla2 tablex tacscan tech
|
||||||
|
techno tink tok toys trump ul ulgab uxay v voodoo wind wobble world
|
||||||
|
xmas yeah`,!0)}
|
||||||
|
|
||||||
|
|
||||||
`},UB=r=>{const e=St(r);return`# Loading custom samples
|
`},UB=r=>{const e=St(r);return`# Loading custom samples
|
||||||
|
|
||||||
|
|
||||||
BIN
assets/index-8a00fcee.js.gz
Normal file
BIN
assets/index-8a00fcee.js.gz
Normal file
Binary file not shown.
@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
|
|
||||||
<script src="https://unpkg.com/hydra-synth"></script>
|
<script src="https://unpkg.com/hydra-synth"></script>
|
||||||
<script type="module" crossorigin src="/assets/index-5dc43541.js"></script>
|
<script type="module" crossorigin src="/assets/index-8a00fcee.js"></script>
|
||||||
<link rel="stylesheet" href="/assets/index-e5dc6b43.css">
|
<link rel="stylesheet" href="/assets/index-e5dc6b43.css">
|
||||||
<script id="vite-plugin-pwa:register-sw" src="/registerSW.js" defer></script></head>
|
<script id="vite-plugin-pwa:register-sw" src="/registerSW.js" defer></script></head>
|
||||||
<style>
|
<style>
|
||||||
|
|||||||
BIN
index.html.gz
BIN
index.html.gz
Binary file not shown.
2
sw.js
2
sw.js
@ -1 +1 @@
|
|||||||
if(!self.define){let s,e={};const n=(n,o)=>(n=new URL(n+".js",o).href,e[n]||new Promise((e=>{if("document"in self){const s=document.createElement("script");s.src=n,s.onload=e,document.head.appendChild(s)}else s=n,importScripts(n),e()})).then((()=>{let s=e[n];if(!s)throw new Error(`Module ${n} didn’t register its module`);return s})));self.define=(o,i)=>{const l=s||("document"in self?document.currentScript.src:"")||location.href;if(e[l])return;let r={};const a=s=>n(s,l),f={module:{uri:l},exports:r,require:a};e[l]=Promise.all(o.map((s=>f[s]||a(s)))).then((s=>(i(...s),r)))}}define(["./workbox-c37eba35"],(function(s){"use strict";self.addEventListener("message",(s=>{s.data&&"SKIP_WAITING"===s.data.type&&self.skipWaiting()})),s.precacheAndRoute([{url:"assets/android-chrome-192x192-b602fe7a.png",revision:null},{url:"assets/android-chrome-512x512-0e707758.png",revision:null},{url:"assets/apple-touch-icon-77f1cce1.png",revision:null},{url:"assets/ComicMono-742af5ad.woff",revision:null},{url:"assets/ComicMono-bed2c2b5.woff2",revision:null},{url:"assets/ComicMono-Bold-2350c6c1.woff",revision:null},{url:"assets/favicon-695249ea.svg",revision:null},{url:"assets/favicon-8d604eb4.ico",revision:null},{url:"assets/IBMPlexMono-Bold-3152ee89.woff2",revision:null},{url:"assets/IBMPlexMono-Bold-6bb3fd98.woff",revision:null},{url:"assets/IBMPlexMono-BoldItalic-5cd662b9.woff",revision:null},{url:"assets/IBMPlexMono-BoldItalic-6f4d360c.woff2",revision:null},{url:"assets/IBMPlexMono-Italic-30cb963d.woff2",revision:null},{url:"assets/IBMPlexMono-Italic-fc3301da.woff",revision:null},{url:"assets/IBMPlexMono-Regular-06ba2f2e.woff",revision:null},{url:"assets/IBMPlexMono-Regular-82ad22f5.woff2",revision:null},{url:"assets/index-5dc43541.js",revision:null},{url:"assets/index-5dc43541.js.gz",revision:null},{url:"assets/index-e5dc6b43.css",revision:null},{url:"assets/JetBrainsMono-Bold-c503cc5e.woff2",revision:null},{url:"assets/JetBrainsMono-Regular-a9cb1cd8.woff2",revision:null},{url:"assets/jgs_vecto-e7fb4a88.woff2",revision:null},{url:"assets/jgs5-0e03e537.woff2",revision:null},{url:"assets/jgs5-9f26a38a.woff",revision:null},{url:"assets/jgs7-a69a9a5d.woff2",revision:null},{url:"assets/jgs7-d3f51478.woff",revision:null},{url:"assets/jgs9-0c41ef37.woff",revision:null},{url:"assets/jgs9-dc75d6ab.woff2",revision:null},{url:"assets/many_universes-d74e86dc.svg",revision:null},{url:"assets/mstile-150x150-fcf527e3.png",revision:null},{url:"assets/pulses-30df7a48.svg",revision:null},{url:"assets/safari-pinned-tab-61a1253d.svg",revision:null},{url:"assets/Steps-Mono-aff9e933.woff2",revision:null},{url:"assets/Steps-Mono-Thin-b82a0d7e.woff2",revision:null},{url:"assets/times-1426387b.svg",revision:null},{url:"assets/topos_arch-db355d32.svg",revision:null},{url:"assets/topos_code-6c32eb83.png",revision:null},{url:"assets/topos_frog-abe2d135.png",revision:null},{url:"assets/topos_frog-e8ab87d1.svg",revision:null},{url:"assets/topos_gif-15a95761.gif",revision:null},{url:"assets/TransportProcessor-d5d50b30.js",revision:null},{url:"assets/TransportProcessor-d5d50b30.js.gz",revision:null},{url:"favicon/android-chrome-192x192.png",revision:"2429dad582348ae2739bc93bfe05d7ac"},{url:"favicon/android-chrome-512x512.png",revision:"12f44bfb54998f5a07768c8a4f2bdba7"},{url:"favicon/apple-touch-icon.png",revision:"dc10d973f9af63470369c2d4264c009d"},{url:"favicon/favicon-16x16.png",revision:"b69d914139eaa7d352d99a50750f60db"},{url:"favicon/favicon-32x32.png",revision:"486abfdda056b5c51bb03cd7d59e82b7"},{url:"favicon/favicon.ico",revision:"765804f7055a1418f7197838fc24220d"},{url:"favicon/favicon.svg",revision:"b63dbb14d38b3700ef25ff165e3dfd9c"},{url:"favicon/mstile-150x150.png",revision:"51c3e55d1105efa5e7da8e2ce1ce7617"},{url:"favicon/safari-pinned-tab.svg",revision:"c538bc47f907da4e4bab9f23afc30887"},{url:"favicon/screenshot_miniature.png",revision:"418a8c434aacf92bf8c164f1075e4f05"},{url:"favicon/topos_code.png",revision:"418a8c434aacf92bf8c164f1075e4f05"},{url:"index.html",revision:"43f8b4083f6de22acc930f03b1228857"},{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"}],{}),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html"))),s.registerRoute((({url:s})=>[/^https:\/\/raw\.githubusercontent\.com\/.*/i,/^https:\/\/shabda\.ndre\.gr\/.*/i].some((e=>e.test(s)))),new s.CacheFirst({cacheName:"external-samples",plugins:[new s.ExpirationPlugin({maxEntries:5e3,maxAgeSeconds:2592e3}),new s.CacheableResponsePlugin({statuses:[0,200]})]}),"GET")}));
|
if(!self.define){let s,e={};const n=(n,o)=>(n=new URL(n+".js",o).href,e[n]||new Promise((e=>{if("document"in self){const s=document.createElement("script");s.src=n,s.onload=e,document.head.appendChild(s)}else s=n,importScripts(n),e()})).then((()=>{let s=e[n];if(!s)throw new Error(`Module ${n} didn’t register its module`);return s})));self.define=(o,i)=>{const l=s||("document"in self?document.currentScript.src:"")||location.href;if(e[l])return;let r={};const a=s=>n(s,l),f={module:{uri:l},exports:r,require:a};e[l]=Promise.all(o.map((s=>f[s]||a(s)))).then((s=>(i(...s),r)))}}define(["./workbox-c37eba35"],(function(s){"use strict";self.addEventListener("message",(s=>{s.data&&"SKIP_WAITING"===s.data.type&&self.skipWaiting()})),s.precacheAndRoute([{url:"assets/android-chrome-192x192-b602fe7a.png",revision:null},{url:"assets/android-chrome-512x512-0e707758.png",revision:null},{url:"assets/apple-touch-icon-77f1cce1.png",revision:null},{url:"assets/ComicMono-742af5ad.woff",revision:null},{url:"assets/ComicMono-bed2c2b5.woff2",revision:null},{url:"assets/ComicMono-Bold-2350c6c1.woff",revision:null},{url:"assets/favicon-695249ea.svg",revision:null},{url:"assets/favicon-8d604eb4.ico",revision:null},{url:"assets/IBMPlexMono-Bold-3152ee89.woff2",revision:null},{url:"assets/IBMPlexMono-Bold-6bb3fd98.woff",revision:null},{url:"assets/IBMPlexMono-BoldItalic-5cd662b9.woff",revision:null},{url:"assets/IBMPlexMono-BoldItalic-6f4d360c.woff2",revision:null},{url:"assets/IBMPlexMono-Italic-30cb963d.woff2",revision:null},{url:"assets/IBMPlexMono-Italic-fc3301da.woff",revision:null},{url:"assets/IBMPlexMono-Regular-06ba2f2e.woff",revision:null},{url:"assets/IBMPlexMono-Regular-82ad22f5.woff2",revision:null},{url:"assets/index-8a00fcee.js",revision:null},{url:"assets/index-8a00fcee.js.gz",revision:null},{url:"assets/index-e5dc6b43.css",revision:null},{url:"assets/JetBrainsMono-Bold-c503cc5e.woff2",revision:null},{url:"assets/JetBrainsMono-Regular-a9cb1cd8.woff2",revision:null},{url:"assets/jgs_vecto-e7fb4a88.woff2",revision:null},{url:"assets/jgs5-0e03e537.woff2",revision:null},{url:"assets/jgs5-9f26a38a.woff",revision:null},{url:"assets/jgs7-a69a9a5d.woff2",revision:null},{url:"assets/jgs7-d3f51478.woff",revision:null},{url:"assets/jgs9-0c41ef37.woff",revision:null},{url:"assets/jgs9-dc75d6ab.woff2",revision:null},{url:"assets/many_universes-d74e86dc.svg",revision:null},{url:"assets/mstile-150x150-fcf527e3.png",revision:null},{url:"assets/pulses-30df7a48.svg",revision:null},{url:"assets/safari-pinned-tab-61a1253d.svg",revision:null},{url:"assets/Steps-Mono-aff9e933.woff2",revision:null},{url:"assets/Steps-Mono-Thin-b82a0d7e.woff2",revision:null},{url:"assets/times-1426387b.svg",revision:null},{url:"assets/topos_arch-db355d32.svg",revision:null},{url:"assets/topos_code-6c32eb83.png",revision:null},{url:"assets/topos_frog-abe2d135.png",revision:null},{url:"assets/topos_frog-e8ab87d1.svg",revision:null},{url:"assets/topos_gif-15a95761.gif",revision:null},{url:"assets/TransportProcessor-d5d50b30.js",revision:null},{url:"assets/TransportProcessor-d5d50b30.js.gz",revision:null},{url:"favicon/android-chrome-192x192.png",revision:"2429dad582348ae2739bc93bfe05d7ac"},{url:"favicon/android-chrome-512x512.png",revision:"12f44bfb54998f5a07768c8a4f2bdba7"},{url:"favicon/apple-touch-icon.png",revision:"dc10d973f9af63470369c2d4264c009d"},{url:"favicon/favicon-16x16.png",revision:"b69d914139eaa7d352d99a50750f60db"},{url:"favicon/favicon-32x32.png",revision:"486abfdda056b5c51bb03cd7d59e82b7"},{url:"favicon/favicon.ico",revision:"765804f7055a1418f7197838fc24220d"},{url:"favicon/favicon.svg",revision:"b63dbb14d38b3700ef25ff165e3dfd9c"},{url:"favicon/mstile-150x150.png",revision:"51c3e55d1105efa5e7da8e2ce1ce7617"},{url:"favicon/safari-pinned-tab.svg",revision:"c538bc47f907da4e4bab9f23afc30887"},{url:"favicon/screenshot_miniature.png",revision:"418a8c434aacf92bf8c164f1075e4f05"},{url:"favicon/topos_code.png",revision:"418a8c434aacf92bf8c164f1075e4f05"},{url:"index.html",revision:"3e48542293baac9cc76d781d835319a2"},{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"}],{}),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html"))),s.registerRoute((({url:s})=>[/^https:\/\/raw\.githubusercontent\.com\/.*/i,/^https:\/\/shabda\.ndre\.gr\/.*/i].some((e=>e.test(s)))),new s.CacheFirst({cacheName:"external-samples",plugins:[new s.ExpirationPlugin({maxEntries:5e3,maxAgeSeconds:2592e3}),new s.CacheableResponsePlugin({statuses:[0,200]})]}),"GET")}));
|
||||||
|
|||||||
Reference in New Issue
Block a user