From beea5bf79eee93af073503eb1dcca78598852700 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 15 Jun 2024 12:54:12 +0200 Subject: [PATCH] add polyphonic midi synth example --- README.md | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 9fea102..15a493b 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,8 @@ compilation strategy / graph format based on - [acid machine + drum thing](https://felixroos.github.io/kabelsalat/#Ly8gbWF4aW1lY2IgLSB0aGUgbGl0dGxlIGFjaWQgbWFjaGluZSB0aGF0IGNvdWxkCi8vICsgbWF4aW1lY2IgZHJ1bSBtYWNoaW5lCi8vIGNvZGUgYnkgZnJvb3MKLy8gbm9pc2VjcmFmdCAtPiBrYWJlbHNhbGF0Ci8vIGh0dHBzOi8vbm9pc2VjcmFmdC5hcHAvNDcKCmxldCBraWNrID0gZ2F0ZSA9PiBnYXRlLmFkc3IoMCwuMTEsMCwuMTEpCiAgLmFwcGx5KGVudiA9PiBlbnYubXVsKGVudikKICAgIC5tdWwoMTU4KSAvLyBmcmVxdWVuY3kgcmFuZ2UKICAgIC5zaW5lKGVudikKICAgIC5kaXN0b3J0KC44NSkKICApCgpsZXQgc25hcmUgPSBnYXRlID0+IGdhdGUuYWRzcigwLC4xMSwuMSwuMSkKICAubXVsKG5vaXNlKCkpLmZpbHRlciguNzgsLjI5KQoKbGV0IGMgPSBjbG9jaygxNjApCmxldCBub3RlcyA9IGMuY2xvY2tkaXYoOCkKLnNlcSgyNywyNywzOSw1MSwwLDAsMjcsMjcsNDIsMjcsNDAsMCwzMSwzMSw1Niw1MSkKCmxldCBlbnYgPSBub3Rlcy5hZHNyKDAsLjMsLjM0LC41OSkKCm5vdGVzCi5hcHBseTIoaG9sZCkgLy8gaG9sZCBmcmVxIGFib3ZlIDBzCi5taWRpbm90ZSgpCi5zbGlkZSgKICBzaW5lKC4yMSkucmFuZ2UoMCwxKQopCi5wdWxzZSguNDgpCi5tdWwoZW52KQouZmlsdGVyKAogIGVudi5tdWwoc2luZSguMDkpLnJhbmdlKC41NSwxKSksIC8vIGN1dG9mZgogIHNpbmUoLjIyKS5yYW5nZSgwLC4zNSkgLy8gcmVzCikKLmRpc3RvcnQoCiAgc2luZSguMTgpLnJhbmdlKDAsLjg1KQopCi5tdWwoMC41KQoubXVsKGMuY2xvY2tkaXYoMTYpLnNlcSguMjUsMSkpIC8vIHNpZGVjaGFpbgouYWRkKGMuY2xvY2tkaXYoMzIpLnNlcSgxLDEpLmFwcGx5KGtpY2spKQouYWRkKGMuY2xvY2tkaXYoMzIpLnNlcSgwLDEpLmFwcGx5KHNuYXJlKSkKLm91dCgpCg==) - [plucky feedback delay](https://felixroos.github.io/kabelsalat/#Ly8gbGV0J3MgY3JlYXRlIHNvbWUgbm90ZXMKbGV0IG5vdGUgPSBjbG9jaygxNTApIC8vIGNsb2NrIGF0IDE1MGJwbQouY2xvY2tkaXYoMzIpIC8vIGRpdmlkZSBjbG9jayBieSAzMgouc2VxKDY0LDAsMCw2NywwLDAsNjIsMCkgLy8gdXNlIGNsb2NrIGZvciBzZXF1ZW5jZQoKLy8gdXNlIHRoZSBub3RlcyB0byB0cmlnZ2VyIGFuIGVudmVsb3BlCmxldCBlbnYgPSBub3RlCi5hZHNyKAogIC4wMSwgLy8gYXR0YWNrCiAgc2luZSguMSkucmFuZ2UoLjEsIC4zKSwgLy8gbW9kdWxhdGVkIGRlY2F5CiAgLjUgLy8gc3VzdGFpbgopCi5tdWwoLjc1KSAvLyBldmVsb3BlIGFtb3VudAoKbm90ZQouaG9sZChub3RlKSAvLyBob2xkIG5vdGVzIGFib3ZlIHplcm9lcwoubWlkaW5vdGUoKSAvLyBjb252ZXJ0IG1pZGkgbnVtYmVycyB0byBmcmVxCi5wdWxzZSguMikgLy8gcHVsc2Ugd2F2ZSB3aXRoIC4yIHdpZHRoCi5maWx0ZXIoCiAgc2luZSguMSkucmFuZ2UoLjcsLjgpLm11bChlbnYpLCAvLyBtb2R1bGF0ZWQgY3V0b2ZmCiAgZW52Lm11bCguNSkgLy8gcmVzb25hbmNlIHdpdGggZW52ZWxvcGUKKQoubXVsKGVudikgLy8gYW1wbGl0dWRlIGVudmVsb3BlCi5hZGQoCiAgLy8gZmVlZGJhY2sgZGVsYXkKICB4PT54LmRlbGF5KHNpbmUoLjAzKS5yYW5nZSguMSwuNSkpIC8vIG1vZHVsYXRlZCBkZWxheSB0aW1lCiAgICAgIC5tdWwoLjkpIC8vIGZlZWRiYWNrIGFtb3VudAopCi5tdWwoLjUpIC8vIG1hc3RlciBsZXZlbAoub3V0KCkgLy8gc2VuZCB0byBvdXRwdXQ=) - [drone](https://felixroos.github.io/kabelsalat/#Ly8gU3luYyBhbmQgVW5zeW5jIE15IEhhcm1vbmljcyAob3NjIG9ubHkpCi8vIGh0dHBzOi8vbm9pc2VjcmFmdC5hcHAvMTYxNQoKbGV0IGZyZXEgPSBwdWxzZSguMDIpLnNlcSg4MCkuc2xpZGUoMTAwKQpsZXQgb3NjID0gcHVsc2UoZnJlcSkKCmFkZCgKIHNpbmUoMC4wMSkucmFuZ2UoMSwxMikubXVsKGZyZXEpLnNpbmUob3NjKSwKIHNpbmUoMC4wMSkucmFuZ2UoMSwxMikubXVsKGZyZXEpLnNpbmUob3NjKSwKIHNpbmUoMC4wMikucmFuZ2UoMSwxMikubXVsKGZyZXEpLnNpbmUob3NjKSwKKQouc2xpZGUoLjAxKQouYWRkKHg9PnguZGVsYXkoLjI1KS5tdWwoLjYpKQoub3V0KCk=) -- [midi bass](https://felixroos.github.io/kabelsalat/#CmxldCBlbnYgPSBtaWRpZ2F0ZSgpLmFkc3IoLjAxLC4yLC43NSkubXVsKC43NSkKCm1pZGlmcmVxKCkuZGl2KDQpCi8vZnJlcS5hcHBseTIoaG9sZCkubWlkaW5vdGUoKQouc2F3KC40KQouZmlsdGVyKAogIHNpbmUoLjEpLnJhbmdlKC43LC44KS5tdWwoZW52KSwgCiAgZW52LmRpdigyKQopCi8vLmRpc3RvcnQoc2luZSguMDIpLnJhbmdlKDAsLjEpKS5tdWwoLjUpCi5tdWwoZW52KQovLy5hZGQoeD0+eC5kZWxheShzaW5lKC4wMykucmFuZ2UoLjEsLjUpKS5tdWwoLjkpKQoubXVsKC41KQoub3V0KCk=) +- [monophonic midi synth](https://felixroos.github.io/kabelsalat/#CmxldCBlbnYgPSBtaWRpZ2F0ZSgpLmFkc3IoLjAxLC4yLC43NSkubXVsKC43NSkKCm1pZGlmcmVxKCkuZGl2KDQpCi8vZnJlcS5hcHBseTIoaG9sZCkubWlkaW5vdGUoKQouc2F3KC40KQouZmlsdGVyKAogIHNpbmUoLjEpLnJhbmdlKC43LC44KS5tdWwoZW52KSwgCiAgZW52LmRpdigyKQopCi8vLmRpc3RvcnQoc2luZSguMDIpLnJhbmdlKDAsLjEpKS5tdWwoLjUpCi5tdWwoZW52KQovLy5hZGQoeD0+eC5kZWxheShzaW5lKC4wMykucmFuZ2UoLjEsLjUpKS5tdWwoLjkpKQoubXVsKC41KQoub3V0KCk=) +- [polyphonic midi synth](https://felixroos.github.io/kabelsalat/#bGV0IGVudiA9IG1pZGlnYXRlKCkuZm9yayg4KS5hZHNyKDAuMDEsIDAuNCwgMC43LCAwLjEpOwoKc2F3KG1pZGlmcmVxKCkuZm9yayg4KSkgLy8gOCBzYXcgdm9pY2VzCiAgLm11bChlbnYpIC8vIGFtcCBlbnZlbG9wZQogIC5maWx0ZXIoZW52LnJhbmdlKDAuMiwgMC44KS5tdWwoZW52KSkgLy8gZmlsdGVyIGVudmVsb3BlCiAgLm1peCgpIC8vIG1peCB0b2dldGhlcgogIC5hZGQoKHgpID0+IHguZGVsYXkoMC4yKS5tdWwoMC40KSkgLy8gZmVlZGJhY2sgZGVsYXkKICAub3V0KCk7) - [fm with feedback](https://felixroos.github.io/kabelsalat/#Ly8gYWRhcHRlZCBmcm9tIGh0dHBzOi8vd3d3LmNoYXJsaWUtcm9iZXJ0cy5jb20vZ2VuaXNoL3R1dG9yaWFsL2luZGV4Lmh0bWwjZm1tRmVlZGJhY2sKTm9kZS5wcm90b3R5cGUuZm0gPSBmdW5jdGlvbiAoYzJtID0gMSwgaW5kZXggPSAzLCBmYiA9IDAuMDUpIHsKICBsZXQgY2FycmllciwKICAgIGZyZXEgPSB0aGlzOwogIG11bCgoZmVlZGJhY2spID0+IHsKICAgIGNvbnN0IG1vZHVsYXRvciA9IGZlZWRiYWNrCiAgICAgIC5tdWwoZmIpCiAgICAgIC5hZGQobXVsKGZyZXEsIGMybSkpCiAgICAgIC5zaW5lKCkKICAgICAgLm11bChmcmVxLCBpbmRleCkKICAgICAgLmFkZChmZWVkYmFjaykKICAgICAgLm11bCgwLjUpOwogICAgY29uc3QgZW52ID0gZnJlcS5hZHNyKDAuMDAxLCAwLjUsIDAsIDApLmFwcGx5MihtdWwpLmFwcGx5MihtdWwpOwogICAgY2FycmllciA9IG1vZHVsYXRvci5hZGQoZnJlcSkuc2luZSgpLm11bChlbnYpOwogICAgcmV0dXJuIG1vZHVsYXRvci5tdWwoZW52KTsKICB9KTsKICByZXR1cm4gY2FycmllcjsKfTsKCnB1bHNlKDQpCiAgLnJhbmdlKDEsIDApCiAgLnNlcSg1NSwgMTEwLCAxNjUsIDIyMCwgMjc1LCAzMzAsIDM4NSwgNDQwKQogIC5mbSgxLCAzLCAwLjA1KQogIC5vdXQoKTsK) - [equalizer](https://felixroos.github.io/kabelsalat/#Tm9kZS5wcm90b3R5cGUuYmFuZCA9IGZ1bmN0aW9uIChtaW4sbWF4KSB7CiAgcmV0dXJuIHRoaXMuZmlsdGVyKG1heCkuc3ViKHRoaXMuZmlsdGVyKG1pbikpCn0KCk5vZGUucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gKGxvdz0xLG1pZD0xLGhpPTEpIHsKICByZXR1cm4gYWRkKAogICAgdGhpcy5iYW5kKC43NCwxKS5tdWwoaGkpLAogICAgdGhpcy5iYW5kKC4zMSwuODcpLm11bChtaWQpLAogICAgdGhpcy5iYW5kKDAsLjMyKS5tdWwobG93KQogICkKfQoKc2F3KDU1KS5lcSgKIHNpbmUoLjUpLnJhbmdlKDAsMSksCiBzaW5lKDEuMzEpLnJhbmdlKDAsMSksCiBzaW5lKDIuMTcpLnJhbmdlKDAsMSkKKS5vdXQoKQ==) - [insect buzzing by luiiuuuiiiii](https://felixroos.github.io/kabelsalat/#c2luZSgxMjExMSkKLmZvbGQoc2luZSguNTEpLnJhbmdlKDAsIC4zKSkKLm11bCgKICBzaW5lKAogICAgbig3KS5tdWwoCiAgICAgIHNpbmUoMC41KS5yYW5nZSgxLDMpCiAgICApCiAgKS5yYW5nZSguMCwuMSkKKQoub3V0KCk=) @@ -118,19 +119,6 @@ sine(220) noise().range(55, 880).hold(pulse(2)).sine().out(); ``` -### midi - -```js -let env = midigate().fork(8).adsr(0.01, 0.4, 0.5, 0.1); - -saw(midifreq().fork(8)) // 8 saw voices - .mul(env) // amp envelope - .filter(env.range(0.2, 0.8).mul(env)) // filter envelope - .mix() // mix together - .add((x) => x.delay(0.2).mul(0.4)) // feedback delay - .out(); -``` - ## feedback to get feedback, simply pass a function instead of a node. The input of the function is the return value of its previous iteration! The snake bites its tail: