From 8941ee13bc21b68d50d9eab69690eb4042c3e0d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Forment?= Date: Fri, 14 Nov 2025 01:53:18 +0100 Subject: [PATCH] oof --- package.json | 3 +- pnpm-lock.yaml | 721 +++++++++++- project.csd | 27 + public/system-files/Documentation.orc.bak | 477 ++++++++ public/system-files/archives.orc | 6 +- public/system-files/archives.orc.bak | 162 +++ public/system-files/examples.orc.bak | 9 + public/system-files/globals.orc | 32 +- public/system-files/globals.orc.bak | 159 +++ public/system-files/lib.orc | 58 +- public/system-files/lib.orc.bak | 414 +++++++ public/system-files/livecode.orc | 2 +- public/system-files/livecode.orc.bak | 3 + public/system-files/project.csd | 27 + public/system-files/scale.orc | 20 +- public/system-files/scale.orc.bak | 207 ++++ public/system-files/synth.orc | 62 +- public/system-files/synth.orc.bak | 1039 +++++++++++++++++ src/App.svelte | 4 +- .../components/editor/EditorSettings.svelte | 11 + .../settings/CsoundVersionToggle.svelte | 77 ++ src/lib/contexts/app-context.ts | 11 +- src/lib/csound/engine.ts | 192 ++- src/lib/csound/execution-context.ts | 23 +- src/lib/csound/execution-strategies.ts | 3 +- src/lib/csound/store.ts | 84 +- src/lib/csound/types.ts | 22 + src/lib/project-system/system-files.ts | 1 + src/lib/utils/preferences.ts | 18 + 29 files changed, 3752 insertions(+), 122 deletions(-) create mode 100644 project.csd create mode 100644 public/system-files/Documentation.orc.bak create mode 100644 public/system-files/archives.orc.bak create mode 100644 public/system-files/examples.orc.bak create mode 100644 public/system-files/globals.orc.bak create mode 100644 public/system-files/lib.orc.bak create mode 100644 public/system-files/livecode.orc.bak create mode 100644 public/system-files/project.csd create mode 100644 public/system-files/scale.orc.bak create mode 100644 public/system-files/synth.orc.bak create mode 100644 src/lib/components/settings/CsoundVersionToggle.svelte create mode 100644 src/lib/csound/types.ts create mode 100644 src/lib/utils/preferences.ts diff --git a/package.json b/package.json index 8cbf012..bedea95 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,8 @@ "@codemirror/search": "^6.5.11", "@codemirror/state": "^6.5.2", "@codemirror/view": "^6.38.6", - "@csound/browser": "7.0.0-beta11", + "@csound/browser": "^6.18.7", + "csound7": "npm:@csound/browser@7.0.0-beta11", "@hlolli/codemirror-lang-csound": "1.0.0-alpha10", "@lezer/highlight": "^1.2.1", "@replit/codemirror-vim": "^6.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 39ea39c..af8e1c3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -33,8 +33,8 @@ importers: specifier: ^6.38.6 version: 6.38.6 '@csound/browser': - specifier: 7.0.0-beta11 - version: 7.0.0-beta11 + specifier: ^6.18.7 + version: 6.18.7(eslint@9.39.1) '@hlolli/codemirror-lang-csound': specifier: 1.0.0-alpha10 version: 1.0.0-alpha10(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.6)(codemirror@6.0.2) @@ -47,6 +47,9 @@ importers: codemirror: specifier: ^6.0.2 version: 6.0.2 + csound7: + specifier: npm:@csound/browser@7.0.0-beta11 + version: '@csound/browser@7.0.0-beta11' fuse.js: specifier: ^7.1.0 version: 7.1.0 @@ -113,6 +116,9 @@ packages: '@codemirror/view@6.38.6': resolution: {integrity: sha512-qiS0z1bKs5WOvHIAC0Cybmv4AJSkAXgX5aD6Mqd2epSLlVJsQl8NG23jCVouIgkh4All/mrbdsf2UOLFnJw0tw==} + '@csound/browser@6.18.7': + resolution: {integrity: sha512-pHC83n1fzV9xp7hkFNBTWYsqkBnOS3qNAA9AJNnu3ZCG35a4rMZ5ydOuFi3qqfkLwRTd+frazabxM/lu0+u0qw==} + '@csound/browser@7.0.0-beta11': resolution: {integrity: sha512-BGFTMXUdOJA1Xz1ETzbE/y8B/X6dpnrKThiqxDqj45K+ctOWtMqefgH6MojzJjWFwRs8UqhrJmVUq78SbMwGlw==} @@ -125,6 +131,44 @@ packages: '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@eslint-community/eslint-utils@4.9.0': + resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.21.1': + resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.39.1': + resolution: {integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@hlolli/codemirror-lang-csound@1.0.0-alpha10': resolution: {integrity: sha512-pcI++pcME4oShgy6teaGzHNWoW9Cp3zdFGH/W5L2EYTkyRA4x+0DK5E7hWRmDDIhdlJE0xqaCrU4GH3oeD1GAA==} peerDependencies: @@ -133,6 +177,22 @@ packages: '@codemirror/view': 6.x codemirror: 6.x + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.7': + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -295,17 +355,28 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/node@24.7.2': resolution: {integrity: sha512-/NbVmcGTP+lj5oa4yiYxxeBjRivKQ5Ns1eSZeB99ExsEQ6rX5XYU1Zy/gGxY/ilqtD4Etx9mKyrPxZRetiahhA==} '@types/pako@2.0.4': resolution: {integrity: sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==} + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} hasBin: true + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -314,6 +385,9 @@ packages: resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} engines: {node: '>=14'} + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + aria-query@5.3.2: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} @@ -332,6 +406,13 @@ packages: brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + builtins@5.1.0: + resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -368,6 +449,9 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + comlink@4.4.2: + resolution: {integrity: sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -377,6 +461,10 @@ packages: crelt@1.0.6: resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -386,6 +474,9 @@ packages: supports-color: optional: true + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} @@ -394,15 +485,100 @@ packages: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-plugin-es@4.1.0: + resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=4.19.1' + + eslint-plugin-n@15.7.0: + resolution: {integrity: sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==} + engines: {node: '>=12.22.0'} + peerDependencies: + eslint: '>=7.0.0' + + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-utils@2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + + eslint-utils@3.0.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + + eslint-visitor-keys@1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + + eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.39.1: + resolution: {integrity: sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + esm-env@1.2.2: resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + esrap@2.1.0: resolution: {integrity: sha512-yzmPNpl7TBbMRC5Lj2JlJZNPml0tzqoqP5B1JXycNUwtqma9AKCO0M2wHrdgsHcy1WRW7S9rJknAMtByg3usgA==} + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -412,6 +588,21 @@ packages: picomatch: optional: true + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -420,14 +611,25 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + fuse.js@7.1.0: resolution: {integrity: sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==} engines: {node: '>=10'} + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + google-closure-compiler-java@20221102.0.1: resolution: {integrity: sha512-rMKLEma3uSe/6MGHtivDezTv4u5iaDEyxoy9No+1WruPSZ5h1gBZLONcfCA8JaoGojFPdHZI1qbwT0EveEWnAg==} @@ -458,6 +660,22 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -465,19 +683,54 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + is-reference@3.0.3: resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + jazz-midi@1.7.9: resolution: {integrity: sha512-c8c4BBgwxdsIr1iVm53nadCrtH7BUlnX3V95ciK/gbvXN/ndE5+POskBalXgqlc/r9p2XUbdLTrgrC6fou5p9w==} engines: {node: '>=10.0.0'} + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + jzz@1.9.6: resolution: {integrity: sha512-J7ENLhXwfm2BNDKRUrL8eKtPhUS/CtMBpiafxQHDBcOWSocLhearDKEdh+ylnZFcr5OXWTed0gj6l/txeQA9vg==} + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + lightningcss-android-arm64@1.30.2: resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} engines: {node: '>= 12.0.0'} @@ -551,6 +804,13 @@ packages: locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lucide-svelte@0.545.0: resolution: {integrity: sha512-lVza6hIAf1abADTU1ThyNp+M3bQZtzTGQ9EQZ2xo3n9ftkd4QcWbDB2ekP2MqRLTJpeLXX5gaFEgFZtbWCnyqg==} peerDependencies: @@ -577,16 +837,49 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + pako@2.1.0: resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -598,9 +891,20 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + rambda@7.5.0: + resolution: {integrity: sha512-y/M9weqWAH4iopRd7EHDEQQvpFPHj1AA3oHozE9tfITHUtTR7Z9PSlIRRG2l1GuW7sefC1cXFfIcF+cgnShdBA==} + ramda@0.28.0: resolution: {integrity: sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==} @@ -614,6 +918,10 @@ packages: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} + regexpp@3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + remove-trailing-separator@1.1.0: resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} @@ -621,6 +929,15 @@ packages: resolution: {integrity: sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==} engines: {node: '>= 0.10'} + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + engines: {node: '>= 0.4'} + hasBin: true + rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} deprecated: Rimraf versions prior to v4 are no longer supported @@ -678,6 +995,19 @@ packages: safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -692,6 +1022,10 @@ packages: string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + style-mod@4.1.2: resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==} @@ -699,6 +1033,10 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + svelte-check@4.3.3: resolution: {integrity: sha512-RYP0bEwenDXzfv0P1sKAwjZSlaRyqBn0Fz1TVni58lqyEiqgwztTpmodJrGzP6ZT2aHl4MbTvWP6gbmQ3FOnBg==} engines: {node: '>= 18.0.0'} @@ -721,6 +1059,10 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} @@ -732,6 +1074,9 @@ packages: unmute-ios-audio@3.3.0: resolution: {integrity: sha512-MmoCOrsS2gn3wLT2tT+hF56Q4V4kksIKn2LHrwAtX6umzQwQHDWSh1slMzH+0WuxTZ62s3w8/wsfIII1FQ7ACg==} + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -756,9 +1101,22 @@ packages: web-midi-api@2.4.0: resolution: {integrity: sha512-tTfLdxa5LpOP1NgWByV458iYKgSLhlsIwqCpfbcJuyjProNtuf5UnX97K4JNyuQCqkR+6thQAIsk2BOMSrKaCA==} + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + zimmerframe@1.1.4: resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==} @@ -814,6 +1172,23 @@ snapshots: style-mod: 4.1.2 w3c-keyname: 2.2.8 + '@csound/browser@6.18.7(eslint@9.39.1)': + dependencies: + comlink: 4.4.2 + eslint-plugin-n: 15.7.0(eslint@9.39.1) + eventemitter3: 4.0.7 + google-closure-compiler: 20221102.0.1 + google-closure-library: 20221102.0.0 + path-browserify: 1.0.1 + rambda: 7.5.0 + rimraf: 3.0.2 + standardized-audio-context: 25.3.77 + text-encoding-shim: 1.0.5 + unmute-ios-audio: 3.3.0 + web-midi-api: 2.4.0 + transitivePeerDependencies: + - eslint + '@csound/browser@7.0.0-beta11': dependencies: eventemitter3: 4.0.7 @@ -843,6 +1218,52 @@ snapshots: tslib: 2.8.1 optional: true + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1)': + dependencies: + eslint: 9.39.1 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/config-array@0.21.1': + dependencies: + '@eslint/object-schema': 2.1.7 + debug: 4.4.3 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.4.2': + dependencies: + '@eslint/core': 0.17.0 + + '@eslint/core@0.17.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.3 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.39.1': {} + + '@eslint/object-schema@2.1.7': {} + + '@eslint/plugin-kit@0.4.1': + dependencies: + '@eslint/core': 0.17.0 + levn: 0.4.1 + '@hlolli/codemirror-lang-csound@1.0.0-alpha10(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.6)(codemirror@6.0.2)': dependencies: '@codemirror/language': 6.11.3 @@ -853,6 +1274,17 @@ snapshots: ramda: 0.30.1 style-mod: 4.1.2 + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.7': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.4.3 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -983,20 +1415,35 @@ snapshots: '@types/estree@1.0.8': {} + '@types/json-schema@7.0.15': {} + '@types/node@24.7.2': dependencies: undici-types: 7.14.0 '@types/pako@2.0.4': {} + acorn-jsx@5.3.2(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + acorn@8.15.0: {} + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 ansis@4.2.0: {} + argparse@2.0.1: {} + aria-query@5.3.2: {} automation-events@7.1.13: @@ -1013,6 +1460,12 @@ snapshots: balanced-match: 1.0.2 concat-map: 0.0.1 + builtins@5.1.0: + dependencies: + semver: 7.7.3 + + callsites@3.1.0: {} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -1052,39 +1505,176 @@ snapshots: color-name@1.1.4: {} + comlink@4.4.2: {} + concat-map@0.0.1: {} core-util-is@1.0.3: {} crelt@1.0.6: {} + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + debug@4.4.3: dependencies: ms: 2.1.3 + deep-is@0.1.4: {} + deepmerge@4.3.1: {} detect-libc@2.1.2: {} + escape-string-regexp@4.0.0: {} + + eslint-plugin-es@4.1.0(eslint@9.39.1): + dependencies: + eslint: 9.39.1 + eslint-utils: 2.1.0 + regexpp: 3.2.0 + + eslint-plugin-n@15.7.0(eslint@9.39.1): + dependencies: + builtins: 5.1.0 + eslint: 9.39.1 + eslint-plugin-es: 4.1.0(eslint@9.39.1) + eslint-utils: 3.0.0(eslint@9.39.1) + ignore: 5.3.2 + is-core-module: 2.16.1 + minimatch: 3.1.2 + resolve: 1.22.11 + semver: 7.7.3 + + eslint-scope@8.4.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-utils@2.1.0: + dependencies: + eslint-visitor-keys: 1.3.0 + + eslint-utils@3.0.0(eslint@9.39.1): + dependencies: + eslint: 9.39.1 + eslint-visitor-keys: 2.1.0 + + eslint-visitor-keys@1.3.0: {} + + eslint-visitor-keys@2.1.0: {} + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint@9.39.1: + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.21.1 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.39.1 + '@eslint/plugin-kit': 0.4.1 + '@humanfs/node': 0.16.7 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + transitivePeerDependencies: + - supports-color + esm-env@1.2.2: {} + espree@10.4.0: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 4.2.1 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + esrap@2.1.0: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + eventemitter3@4.0.7: {} + fast-deep-equal@3.1.3: {} + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flatted@3.3.3: {} + fs.realpath@1.0.0: {} fsevents@2.3.3: optional: true + function-bind@1.1.2: {} + fuse.js@7.1.0: {} + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -1094,6 +1684,8 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 + globals@14.0.0: {} + google-closure-compiler-java@20221102.0.1: {} google-closure-compiler-linux@20221102.0.1: @@ -1121,6 +1713,19 @@ snapshots: has-flag@4.0.0: {} + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + ignore@5.3.2: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + inflight@1.0.6: dependencies: once: 1.4.0 @@ -1128,18 +1733,49 @@ snapshots: inherits@2.0.4: {} + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + is-reference@3.0.3: dependencies: '@types/estree': 1.0.8 isarray@1.0.0: {} + isexe@2.0.0: {} + jazz-midi@1.7.9: {} + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + jzz@1.9.6: dependencies: jazz-midi: 1.7.9 + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + lightningcss-android-arm64@1.30.2: optional: true @@ -1191,6 +1827,12 @@ snapshots: locate-character@3.0.0: {} + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + lucide-svelte@0.545.0(svelte@5.39.13): dependencies: svelte: 5.39.13 @@ -1211,14 +1853,45 @@ snapshots: nanoid@3.3.11: {} + natural-compare@1.4.0: {} + once@1.4.0: dependencies: wrappy: 1.0.2 + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + pako@2.1.0: {} + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + path-browserify@1.0.1: {} + + path-exists@4.0.0: {} + path-is-absolute@1.0.1: {} + path-key@3.1.1: {} + + path-parse@1.0.7: {} + picocolors@1.1.1: {} picomatch@4.0.3: {} @@ -1229,8 +1902,14 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + prelude-ls@1.2.1: {} + process-nextick-args@2.0.1: {} + punycode@2.3.1: {} + + rambda@7.5.0: {} + ramda@0.28.0: {} ramda@0.30.1: {} @@ -1247,10 +1926,20 @@ snapshots: readdirp@4.1.2: {} + regexpp@3.2.0: {} + remove-trailing-separator@1.1.0: {} replace-ext@1.0.1: {} + resolve-from@4.0.0: {} + + resolve@1.22.11: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + rimraf@3.0.2: dependencies: glob: 7.2.3 @@ -1295,6 +1984,14 @@ snapshots: safe-buffer@5.1.2: {} + semver@7.7.3: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + source-map-js@1.2.1: {} source-map@0.5.7: {} @@ -1309,12 +2006,16 @@ snapshots: dependencies: safe-buffer: 5.1.2 + strip-json-comments@3.1.1: {} + style-mod@4.1.2: {} supports-color@7.2.0: dependencies: has-flag: 4.0.0 + supports-preserve-symlinks-flag@1.0.0: {} + svelte-check@4.3.3(picomatch@4.0.3)(svelte@5.39.13)(typescript@5.9.3): dependencies: '@jridgewell/trace-mapping': 0.3.31 @@ -1353,12 +2054,20 @@ snapshots: tslib@2.8.1: {} + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + typescript@5.9.3: {} undici-types@7.14.0: {} unmute-ios-audio@3.3.0: {} + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + util-deprecate@1.0.2: {} vinyl-sourcemaps-apply@0.2.1: @@ -1384,6 +2093,14 @@ snapshots: dependencies: jzz: 1.9.6 + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + wrappy@1.0.2: {} + yocto-queue@0.1.0: {} + zimmerframe@1.1.4: {} diff --git a/project.csd b/project.csd new file mode 100644 index 0000000..08a6fbb --- /dev/null +++ b/project.csd @@ -0,0 +1,27 @@ + + +-m0 + + +0dbfs=1 +nchnls=2 +ksmps = 64 +sr = 44100 +seed 0 +#include "globals.orc" +#include "lib.orc" +#include "synth.orc" +#include "scale.orc" +#include "livecode.orc" + + + +f 0 z +f 1 0 2049 -16 0 204 -5.6072 1 1843 -10 0 ; kind of karplustrong + + + + + + + diff --git a/public/system-files/Documentation.orc.bak b/public/system-files/Documentation.orc.bak new file mode 100644 index 0000000..6d8021a --- /dev/null +++ b/public/system-files/Documentation.orc.bak @@ -0,0 +1,477 @@ + + + + _ _ _ _ _____ _____ _ _ _____ _ +| | (_) | (_) / __ \/ __ \| \ | | / __ \ | | +| | ___ _____ ___ ___ __| |_ _ __ __ _ | / \/| / \/| \| | | / \/ ___ __| | ___ +| | | \ \ / / _ \ / __/ _ \ / _` | | '_ \ / _` | | | | | | . ` | | | / _ \ / _` |/ _ \ +| |___| |\ V / __/ | (_| (_) | (_| | | | | | (_| | | \__/\| \__/\| |\ | | \__/\ (_) | (_| | __/ +\_____/_| \_/ \___| \___\___/ \__,_|_|_| |_|\__, | \____/ \____/\_| \_/ \____/\___/ \__,_|\___| + __/ | + |___/ + + + ; Ce document contient toutes les informations sur les fonctions (mots) utilisables + ; dans la plateforme de livecoding. + ; Vous pouvez copier-coller les exemples dans le fichier "livecode.orc". + + + _ +| | +| |_ ___ _ __ ___ _ __ ___ +| __/ _ \ '_ ` _ \| '_ \ / _ \ +| || __/ | | | | | |_) | (_) | + \__\___|_| |_| |_| .__/ \___/ + | | + |_| + + + ; Pour modifier le tempo, il faut utiliser la fonction de tempo + ; Par défaut, le tempo est de 1, ce qui signifie 1 pulsation par seconde + ; Si on met 2, la pulsation est donc de ... 2 pulsations par secondes + tempo(2) ; [0.001 - 10] + ; La modification du tempo modifiera la vitesse du rythme de TOUS les sons en train d'être joués + + ; Un attracteur chaotique gère d'autres paramètres du temps, on peut changer sa vitesse en écrivant + ; Il influence notamment la vitesse d'évolution des modes "sauvages" (voir les Sons) + chaos_speed(4) ; [0.1 - 100] + + ; Pour entendre le tempo, on peut utiliser le metronome (sans accent ici pour éviter l'erreur) + metronome + + + _____ +/ ___| +\ `--. ___ _ __ ___ + `--. \/ _ \| '_ \/ __| +/\__/ / (_) | | | \__ \ +\____/ \___/|_| |_|___/ + + ; "ping" - son artificiel percussif brillant + ; Paramètres : + ; - Rythme + ; - Volume [0-1] + ; - Hauteur (note) [0-100] + ; - Durée [>0] + ping(beat(4), 0.3, 50, 1/4) + + ; "buzzy" - Un son plus doux que Ping et dont le rythme interne peut être imprévisible + ; Paramètres : + ; - Rythme + ; - Volume [0-1] + ; - Hauteur (note de base de l'accord) [0-100] + ; - Durée [>0] + buzzy(beat(1/4), 0.5, 50, 4) + + ; "glidy" - un son qui glisse vers la note choisie + ; - Rythme + ; - Volume [0-1] + ; - Hauteur (note de base de l'accord) [0-100] + ; - Durée [>0] + glidy(beat(1), 0.5, 60, 1) + + ; "darkwave" - une vague sombre, qui gronde quand elle devient forte + ; - Rythme + ; - Volume [0-1] + ; - Hauteur (note de base de l'accord) [0-100] + ; - Durée [>0] + darkwave(beat(1/4), 0.6, 30, 4) + + ; "brightwave" - une vague brillante et lumineuse + ; - Rythme + ; - Volume [0-1] + ; - Hauteur (note de base de l'accord) [0-100] + ; - Durée [>0] + brightwave(beat(1/4), 0.6, 30, 4) + + ; "buzzwave" - une vague qui fait bzzz + ; - Rythme + ; - Volume [0-1] + ; - Hauteur (note de base de l'accord) [0-100] + ; - Durée [>0] + buzzwave(beat(1/4), 0.6, 30, 4) + + ; "noisywave" - une vague avec un bruit de fond, comme l'écume de la mer + ; - Rythme + ; - Volume [0-1] + ; - Hauteur (note de base de l'accord) [0-100] + ; - Durée [>0] + noisywave(beat(1/4), 0.6, 30, 4) + + ; "crunchy" - un son percussif qui croustille + ; - Rythme + ; - Volume [0-1] + ; - Hauteur (note de base de l'accord) [0-100] + ; - Durée [>0] + crunchy(beat(4), 0.6, 20, 1/4) + + ; Strike : un son percussif et très saturé (distordu, sauvage) + ; Paramètres : + ; - Rythme + ; - Volume [0-1] + ; - Hauteur (note) [0-100] + ; - Durée [>0] + strike(beat(1), 0.9, 8, 1) + + ; Smooth : un son doux, assez rond + ; Paramètres : + ; - Rythme + ; - Volume [0-1] + ; - Hauteur (note) [0-100] + ; - Durée [>0] + smooth(beat(1/3), 0.5, 20, 4) + + ; Bounce : un son qui rebondit et qui brille ! + ; Paramètres : + ; - Rythme + ; - Volume [0-1] + ; - Hauteur (note) [0-100] + ; - Durée [>0] + bounce(beat(1/2), 0.5, 30, 3) + +______ _ _ _ _ _ +| ___| | | (_) | | | | | | +| |_ ___ _ __ ___| |_ _ ___ _ __ ___ __| | ___ _ __ _ _| |_| |__ _ __ ___ ___ +| _/ _ \| '_ \ / __| __| |/ _ \| '_ \/ __| / _` |/ _ \ | '__| | | | __| '_ \| '_ ` _ \ / _ \ +| || (_) | | | | (__| |_| | (_) | | | \__ \ | (_| | __/ | | | |_| | |_| | | | | | | | | __/ +\_| \___/|_| |_|\___|\__|_|\___/|_| |_|___/ \__,_|\___| |_| \__, |\__|_| |_|_| |_| |_|\___| + __/ | + |___/ + + + ; "beat" - pulsation régulière + ;Paramètres : + ; - Vitesse (par rapport au tempo) [> 0] + beat(2) // 2 pulsations par temps + + ; "swing" - pulsation régulière + une pulsation swing + ; Paramètres : + ; - Vitesse (par rapport au tempo) [> 0] + ; - Swing [0 - 1] + swing(2, 0.75) + swing(2, 3/4) + + ; "rhythm" - rythme écrit sous la forme d'une liste + ; Paramètres : + ; - liste de 1 et 0 sous forme d'un "array" + ; - Vitesse (par rapport au tempo) [> 0] + rhythm(array(1, 0, 0, 1, 0, 0, 1, 1 ), 1) + ; Peut aussi s'écrire + rhythm( + array(1, 0, 0, 1), + 1) + + ; "drunk" - rythme aléatoire mais quand même lié au tempo + ; Paramètres : + ; - Vitesse (par rapport au tempo) [> 0] + ; - Taux d'aléatoire [0 - 1] + drunk(2, 0.8) + + ; "euclidian" - rythmes basés sur la division euclidienne + ; (voir https://dbkaplun.github.io/euclidean-rhythm/) + ; Paramètres : + ; - Vitesse [> 0] + ; - Nombre de "steps" [> 0] + ; - Division du cercle [> 0] + ; - Rotation [0 - 1] + euclidian(2, 3, 7, 0) + + ; "chaos_rhythm" - rythmes basés sur l'horloge chaotique principale + ; Paramètres + ; - Choix de l'horloge [1, 2 ou 3] + ; - Seuil de détection [0 - 1] + chaos_rhythm(1, 0.6) + + +______ _ _ _ _ _ +| ___| | | (_) | | | | | | +| |_ ___ _ __ ___| |_ _ ___ _ __ ___ __| | ___ ___ ___ _ __ | |_ _ __ ___ | | ___ +| _/ _ \| '_ \ / __| __| |/ _ \| '_ \/ __| / _` |/ _ \ / __/ _ \| '_ \| __| '__/ _ \| |/ _ \ +| || (_) | | | | (__| |_| | (_) | | | \__ \ | (_| | __/ | (_| (_) | | | | |_| | | (_) | | __/ +\_| \___/|_| |_|\___|\__|_|\___/|_| |_|___/ \__,_|\___| \___\___/|_| |_|\__|_| \___/|_|\___| + + + + ; "chance" - fait évoluer un paramètre aléatoirement - comme un lancer de dé + ; Paramètres : + ; - Minimum - valeur minimum possible [< Maximum] + ; - Maximum - valeur maximum possible [> Minimum] + chance(1, 5) // Donnera à chaque fois un nombre (décimal) entre 1 et 5 différent + + ; "trajectory" - part d'une valeur et évolue progressivement vers une autre + ; Paramètres : + ; - Départ - valeur de départ + ; - Durée - Durée totale de l'évolution (en nombre de temps) [> 0] + ; - Arrivée - Valeur finale + trajectory(0, 10, 1) // évolue de 0 à 1 progressivement en 10 temps + + ; "oscillation" - va et vient entre deux valeurs + ; Paramètres : + ; - Minimum : valeur minimum [< Maximum] + ; - Maximum : valeur maximum [> Minimum] + ; - Vitesse (par rapport au tempo) [> 0] + oscillation(10, 30, 1/2) // évolue progressivement entre 10 et 30 avec un cycle de 2 temps + + ; "alternate" - alterne entre deux valeurs à une certaine vitesse et avec une proportion + ; Paramètres : + ; - Valeur 1 + ; - Valeur 2 + ; - Vitesse (par rapport au tempo) [> 0] + ; - Proportion de la valeur 1 [0 - 1] - + ; par exemple une proportion de 0.75 fait qu'on restera 3/4 du temps sur la valeur 1, et 1/4 du temps sur la valeur 2 + alternate(50, 55, 1, 0.75) // alterne entre 50 et 55 tous les temps (75% du temps sur valeur 1) + + ; "sequence" - lit une suite de valeurs (utile pour les notes et mélodies) + ; Paramètres : + ; - liste de valeurs + ; - Vitesse (par rapport au tempo) [> 0] + sequence(array(30, 33, 35), 1) + + ; "chaos_control" - génère une valeur qui change en permanence en fonction de l'attracteur + ; chaotique principal + ; Paramètres : + ; - Choix de l'attracteur [1, 2 ou 3] + ; - Valeur minimum + ; - Valeur maximum + chaos_control(1, 0.5, 1) ; Pour du volume + chaos_control(2, 40, 60) ; Pour une note + + + _ + | | + _____ _____ _ __ ___ _ __ | | ___ ___ + / _ \ \/ / _ \ '_ ` _ \| '_ \| |/ _ \/ __| +| __/> < __/ | | | | | |_) | | __/\__ \ + \___/_/\_\___|_| |_| |_| .__/|_|\___||___/ + | | + |_| + + crunchy(beat(4), 0.5, 10, 1) + tempo(0.5) + darkwave(beat(1/2), 0.5, 30, 2) + darkwave(beat(1/2), 0.5, 33, 2) + darkwave(beat(1/4), 0.5, 40, 4) + + chaos_speed(1) + + noisywave(beat(1/4), 0.5, 50, 4) + noisywave(beat(1/4), 0.5, 55, 4) + + brightwave(beat(1/2), 0.7, 70, 1) + buzzwave(beat(1/2), 0.8, 60, 2, 2) + _ _ _ _ _ _ _ + /\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\ + \ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' / +|_ _|_ _|_ _|_ _|_ _|_ _|_ _| + / , . \ / , . \ / , . \ / , . \ / , . \ / , . \ / , . \ + \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ + + /* + crunchy(beat(4), 0.6, 10, 1, 2) + crunchy(beat(8), 0.6, 50, 1, 2) + crunchy(beat(8), 0.6, 55, 1) + */ + ;crunchy(beat(8), 0.8, sequence(array(60, 57, 57, 63, 58), 8), 1) + + tempo(.5) + chaos_speed(7) +/* + brightwave(beat(1/8), 0.5, 50, 3, 3) + brightwave(beat(1/8), 0.5, 53, 3) + brightwave(beat(1/8), 0.5, 57, 3, 3) + */ + + /* + glidy(beat(1/2), 0.7, 60, 2) + glidy(beat(1/3), 0.7, 64, 2) + glidy(beat(1/4), 0.7, 65, 2) + */ + + /* + darkwave(beat(1/4), 0.6, 30, 5, 1) + darkwave(beat(1/4), 0.6, 32, 5, 1) + darkwave(beat(1/4), 0.6, 27, 5) + darkwave(beat(1/4), 0.6, 20, 5) + */ + + _ _ _ _ _ _ _ + /\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\ + \ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' / +|_ _|_ _|_ _|_ _|_ _|_ _|_ _| + / , . \ / , . \ / , . \ / , . \ / , . \ / , . \ / , . \ + \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ + + /* + darkwave(beat(1/4), .7, 60, 4) + darkwave(beat(1/6), .7, 42, 4) + darkwave(beat(1/4), .7, 67, 4) + darkwave(beat(1/6), .7, 10, 4) + + + crunchy(beat(4), 0.9, 10, 1, 2) + crunchy(beat(8), 0.7, 50, 1, 2) + crunchy(beat(8), 0.7, 55, 1) + + crunchy(beat(8), 0.7, sequence(array(60, 57, 57, 63, 58), 8), 1) + + tempo(.125) + chaos_speed(8) + + ping(beat(4), 1, sequence(array(50, 55, 50, 57, 50, 58), 1), 1) + */ + /* + brightwave(beat(1/8), 0.5, 50, 3, 3) + brightwave(beat(1/8), 0.5, 53, 3) + brightwave(beat(1/8), 0.5, 57, 3, 3) + */ +/* + brightwave(beat(1/8), 0.5, 50, 3, 3) + brightwave(beat(1/8), 0.5, 53, 3) + brightwave(beat(1/8), 0.5, 57, 3, 3) + */ + /* + tempo(1) + glidy(beat(1/2), 0.3, 60, 2) + glidy(beat(1/3), 0.3, 64, 3) + glidy(beat(1/4), 0.4, 65, 4) + glidy(beat(1/7), 0.5, 40, 5) + glidy(beat(1/5), 0.4, 44, 6) + glidy(beat(1/6), 0.5, 45, 7) + */ + /* + noisywave(beat(1/4), 0.9, 20, 6) + noisywave(beat(1/4), 0.9, 48, 6) + noisywave(beat(1/8), 0.9, 34, 6) + noisywave(beat(1/8), 0.9, 39, 6) +*/ + + + + + + + + _ _ _ _ _ _ _ + /\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\ + \ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' / +|_ _|_ _|_ _|_ _|_ _|_ _|_ _| + / , . \ / , . \ / , . \ / , . \ / , . \ / , . \ / , . \ + \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ + + + + tempo(1) + chaos_speed(1) + darkwave(beat(1/4), .5, 60, 4) + darkwave(beat(1/6), .65, 36, 6) + darkwave(beat(1/8), .65, 38, 8) + darkwave(beat(1/4), .65, 67, 4) + darkwave(beat(1/6), .65, 24, 6) + darkwave(beat(1/3), .65, 40, 4) + darkwave(beat(1/5), .65, 31, 5) + + crunchy(beat(4), 1, 12, 1/2, 2) + crunchy(beat(1), 1, 22, 1) + crunchy(beat(8), 0.6, 50, 1/2, 2) + crunchy(beat(8), 0.6, 55, 1/2) + + crunchy(beat(8), 0.7, sequence(array(60, 57, 57, 63, 58), 8), 1/2) + crunchy(beat(8), 0.8, sequence(array(72, 48, 74, 75, 46, 50, 78), 8), 1/2) + + + /* + tempo(.125) + chaos_speed(8) + + ping(beat(4), 1, sequence(array(50, 55, 50, 57, 50, 58), 1), 1) + */ + /* + brightwave(beat(1/8), 0.5, 50, 3, 3) + brightwave(beat(1/8), 0.5, 53, 3) + brightwave(beat(1/8), 0.5, 57, 3, 3) + */ +/* + brightwave(beat(1/8), 0.5, 50, 3, 3) + brightwave(beat(1/8), 0.5, 53, 3) + brightwave(beat(1/8), 0.5, 57, 3, 3) + */ + /* + tempo(1) + glidy(beat(1/2), 0.3, 60, 2) + glidy(beat(1/3), 0.3, 64, 3) + glidy(beat(1/4), 0.4, 65, 4) + glidy(beat(1/7), 0.5, 40, 5) + glidy(beat(1/5), 0.4, 44, 6) + glidy(beat(1/6), 0.5, 45, 7) + */ + /* + noisywave(beat(1/4), 0.9, 20, 6) + noisywave(beat(1/4), 0.9, 48, 6) + noisywave(beat(1/8), 0.9, 34, 6) + noisywave(beat(1/8), 0.9, 39, 6) +*/ + + + +/* +Exemple réalisé en première séance à l'école du Centre + crunchy(beat(2), 0.9, chance(15, 80), 0.5) + buzzy(beat(1/4), 0.8, 10, 4) + tempo(4) + glidy(beat(1), 0.6, 60, 1) + darkwave(beat(1/4), 0.9, 30, 4) +*/ + + + + +/* + + ping(beat(8), 1, 10, 1/8) + ping(beat(8), 1, sequence(array(20, 22), 1/4), 1/8) + crunchy(beat(4), 0.9, chance(30, 80), 1/6) + crunchy(beat(4), 0.8, chance(30, 80), 1/6) + kick(beat(2), 0.5) + snare(beat(1), 0.8, 100, 1/10) + +*/ + +/* + noisywave(beat(1/4), 0.6, 80, 4) + noisywave(beat(1/8), 0.6, 60, 8) + noisywave(beat(1/6), 0.6, 40, 6) + snare(rhythm(array(1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1), 8), 0.5) + kick(rhythm(array(0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0), 8), 0.7) +*/ + +/* + ; MELODY + ping(beat(2), oscillation(.5, 1, 1/2), sequence(array(52, 55, 50, 48, 50)+sequence(array(2, 0), 2), 2), oscillation(.5, 2, 1/2)) + + ; CHORD + buzzwave(beat(4), oscillation(0, .5, 1/6), sequence(array(52, 55, 50, 48, 50)-24, 1/2), 1) + buzzwave(beat(4), oscillation(0, .5, 1/3), sequence(array(52, 55, 50, 48, 50)-7, 1/2), 2) + + ; BUZZ + noisywave(beat(1/4), .5, sequence(array(52, 55), 2), 8) +*/ + + + + _ _ _ _ _ _ _ + /\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\ + \ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' / +|_ _|_ _|_ _|_ _|_ _|_ _|_ _| + / , . \ / , . \ / , . \ / , . \ / , . \ / , . \ / , . \ + \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ + + ; Rythme 1 + kick(swing(1, 0.75), 0.5) + snare(swing(0.5, 0.25), 0.7) + hihat( rhythm(array(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1), 4), 0.5, 95, 0.1) + + + + +; Ping à corriger +; Noisywave avec mode sauvage ou son grave avec mode sauvage aussi diff --git a/public/system-files/archives.orc b/public/system-files/archives.orc index 6fc82fb..6ca27ff 100644 --- a/public/system-files/archives.orc +++ b/public/system-files/archives.orc @@ -140,14 +140,14 @@ kmet = drunk(0.125, 0.25) ktog init 0 krhythm_mult init 1 - if(kmet == 1 ) then + if (kmet == 1 ) then ktog = 1 - ktog - if(rint:k(1, 6) == 1) then + if (rint:k(1, 6) == 1) then krhythm_mult = rint:k(1, 3) endif endif - if(ktog == 1) then + if (ktog == 1) then strike( rhythm(array(1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1), 4 * krhythm_mult), oscillation(0.1, 0.6, 10), sequence(array(60, 64, 66, 67, 69), 8) + diff --git a/public/system-files/archives.orc.bak b/public/system-files/archives.orc.bak new file mode 100644 index 0000000..6fc82fb --- /dev/null +++ b/public/system-files/archives.orc.bak @@ -0,0 +1,162 @@ + + kick(swing(1, 0.75), 0.5) + snare(swing(0.5, 0.25), 0.7) + hihat( rhythm(array(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1), 4), 0.3, 95, 0.05) + + tempo(0.5) + chaos_speed(0.5) + ; Base rythmique + crunchy(beat(8), 1, 8, 1/4) + crunchy(beat(2), 1, 20, 1/2) + crunchy(beat(8), 1, trajectory(60, 15, 30), 1/4) + crunchy(beat(4), 1, 23, 1/4) + + ; Mélodie aléatoire + buzzy(beat(8), 0.8, chance(60, 90), 1/16) + buzzy(beat(8), 0.8, chance(70, 80), 1/16) + buzzy(beat(4), 0.8, trajectory(80, 10, 60), 1/8) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + ping(beat(1), 0.8, 50,1) + ping(beat(1/2), 0.2, 90,2) + ping(beat(4), 0.9, 41, 1/3) + ping(beat(4), 0.9, 46, 1/4) + ping(beat(1/2), 0.8, 37,3) + ping(beat(1/4), 0.8, 60,4) + ping(beat(1/2), 0.8, 62,2) + ping(beat(1/6), 0.8, 67,6) + + buzzwave(beat(1/3), 0.8, sequence(array(20, 25), 1), 3) + + tempo(1) + snare(swing(2, 0.25), 0.9) + kick(swing(0.5, 0.75), 0.5) + hihat( swing(4, 0.25), 0.6, chance(80, 100), 0.1) + hihat( beat(8), 0.8, 100, 0.05) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Lunégroove + noisywave(beat(1/4), 0.9, sequence(array(20, 30, 23, 27), 1/4), 4) + noisywave(beat(1/8), 0.9, sequence(array(60, 60, 65, 53), 1/8), 8) + noisywave(beat(1/6), 0.9, sequence(array(40, 43, 46), 1/6), 6) + glidy(rhythm(array(1, 1, 1, 0, 0, 1), 2), 0.5, sequence(array(70, 75, 53, 51), 3), 1/4) + glidy(rhythm(array(0, 1, 0, 1, 1, 1), 2), 0.5, sequence(array(73, 65, 60), 3), 1/2) + brightwave(beat(1/4), 1, sequence(array(15, 18, 23), 1/4), 7) + + snare(rhythm(array(1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1), 4), 0.5) + kick(rhythm(array(0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0), 2), 0.7) + tempo(1) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ; LA VOITURE EN PANNE !!!!!! + + tempo(1.5) + kick(rhythm(array(1, 0, 0, 0, 0, 1, 0, 0), 2), 0.45) + snare(rhythm(array(0, 0, 1, 0, 0, 0, 1, 0), 2), 0.25) + hihat(beat(4), 0.15, 95, 1/12) + + ping(beat(2), 0.45, sequence(array(20, 21), 1/8), .5) + ping(beat(1/4), .95, sequence(array(20, 21)-12, 1/8), 4) + + crunchy(beat(1), .95, sequence(array(20, 18, 28, 21), 1/7)+12*sequence(array(1, 2, 3), 1), 1+sequence(array(1, 2, 3), 1)) + + brightwave(swing(1/8, .95), 0.55, sequence(array(21, 20, 25, 30)+24, 1/8), 6) + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ; on va faire fortune dans le reggae + + tempo(1) + crunchy(rhythm(array(1, 1, 1, 1, 1, 1, 0, 0), 8), 0.8, sequence(array(11, 17), 1/2), 1/4) + + ping(rhythm(array(0, 1), 2), 0.9, sequence(array(43, 41), 1/2), 0.25 ) + ping(rhythm(array(0, 1), 2), 0.9, sequence(array(47, 45), 1/2), 0.25) + ping(rhythm(array(0, 1), 2), 0.9, sequence(array(50, 48), 1/2), 0.25) + + glidy(beat(1/4), 0.2, sequence(array(49, 55, 52, 67, 46, 70), 1/4), 6) + + kick(rhythm(array(1, 0), 2), 0.8) + snare(beat(1), 0.6) + hihat(rhythm(array(1, 1, 1, 0, 1, 0), 6), 0.7, 90, 0.1) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ; Ardoise + tempo(1.25) + kick(rhythm(array(1, 1, 0, 0, 0, 1), 4), .5) + snare(beat(1/2), .5) + hihat(rhythm(array(0, 1, 1, 0, 1, 1, 1), 4), .25, 95-4*swing(1, .25), 1/8) + + ping(beat(6), .35, sequence(array(48, 51, 55, 60, 48, 51, 55, 60, 47, 51, 55, 60, 44, 51, 55, 60), oscillation(6, 12, 1/32)), oscillation(.25, 3, 1/8)) + ping(beat(6), .35, sequence(array(48, 51, 55, 60, 48, 51, 55, 60, 47, 51, 55, 60, 44, 51, 55, 60), oscillation(2, 16, 1/24)), oscillation(.25, 3, 1/3)) + darkwave(beat(3), .85, sequence(array(48, 51, 55, 60, 47, 51, 55, 60, 44, 51, 55, 60)-24, oscillation(3, 9, 1/48)), oscillation(1, 3, 1/3)) + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;KS + chaos_speed(1) + $tempo = .5 + ;ks(beat(1), 0.8, 44, .5) + ks(beat(.25), 0.8, 16, .5) + ks(beat(1), 0.9, 52, .5) + ks(beat(3), 0.9, 64, 1) + ks(beat(4), 0.9, 83, 2) + ;ks(beat(8), 0.5, sequence(array(75, 83, 80, 85, 83), 1), .25) + ;ks(beat( alternate(.5, 2, .5, 0.5) ), 0.8, 30, 1) + + ;ping(beat(4), 0.8, 72, .8) + ;crunchy(beat(16), 0.6, trajectory(16, 4, 32), .5) + + + + + + + + + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;MOBILE 1 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + $tempo = 0.25 + klf = abs(lfo:k(1, 0.05)) + kilf = 1 - klf + strike(beat(1/16), 0.9 * klf , alternate(40, 28, 1/4, 0.5), 16) + strike(beat(1/16), 0.9 * klf , alternate(6, 18, 1/4, 0.5), 16) + strike(beat(1/12), 0.9 * kilf , alternate(30, 18, 1/8, 0.5), 12) + + kmet = drunk(0.125, 0.25) + ktog init 0 + krhythm_mult init 1 + if(kmet == 1 ) then + ktog = 1 - ktog + if(rint:k(1, 6) == 1) then + krhythm_mult = rint:k(1, 3) + endif + endif + + if(ktog == 1) then + strike( rhythm(array(1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1), 4 * krhythm_mult), + oscillation(0.1, 0.6, 10), + sequence(array(60, 64, 66, 67, 69), 8) + + sequence(array(2, 3, 8, 1, 5, 10), 3.3), 1/2) + else + buzzy(beat(krhythm_mult * 2), 0.9, oscillation(40, 70, 10), 1) + buzzy(beat(1/2), 0.8 * klf , alternate(44, 33, 1/4, 0.5), 2) + buzzy(beat(1/3), 0.8 * kilf , alternate(24, 21, 1/8, 0.5), 2) + endif + + smooth(drunk(1/10, 0.3), 0.5, sequence(array(60, 30, 64, 67), 1), 8) + smooth(drunk(1/9, 0.3), 0.5, sequence(array(48, 18, 66, 70, 65), 1/2), 8) \ No newline at end of file diff --git a/public/system-files/examples.orc.bak b/public/system-files/examples.orc.bak new file mode 100644 index 0000000..0cfa6be --- /dev/null +++ b/public/system-files/examples.orc.bak @@ -0,0 +1,9 @@ +░▒▓████████▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓██████▓▒░░▒▓██████████████▓▒░░▒▓███████▓▒░░▒▓█▓▒░ ░▒▓████████▓▒░░▒▓███████▓▒░ +░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░ +░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░ +░▒▓██████▓▒░ ░▒▓██████▓▒░░▒▓████████▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓███████▓▒░░▒▓█▓▒░ ░▒▓██████▓▒░ ░▒▓██████▓▒░ +░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░ +░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░ +░▒▓████████▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓████████▓▒░▒▓████████▓▒░▒▓███████▓▒░ + + \ No newline at end of file diff --git a/public/system-files/globals.orc b/public/system-files/globals.orc index 6d70c2d..36afc26 100644 --- a/public/system-files/globals.orc +++ b/public/system-files/globals.orc @@ -14,7 +14,7 @@ endin opcode metronome, 0, 0 kmet = gkbeat - if(kmet == 1) then + if (kmet == 1) then schedulek("metronome_instr", 0, 0.1) endif endop @@ -101,15 +101,15 @@ schedule("lorenz_sched", 0, $LORENZ_TIME) ifq mtof inote ksavage init 0 - if(isavage_mode == 1) then + if (isavage_mode == 1) then ksavage = savage_1() - elseif(isavage_mode == 2) then + elseif (isavage_mode == 2) then ksavage = savage_2() - elseif(isavage_mode == 3) then + elseif (isavage_mode == 3) then ksavage = savage_3() - elseif(isavage_mode == 4) then + elseif (isavage_mode == 4) then ksavage = savage_4() - elseif(isavage_mode == 5) then + elseif (isavage_mode == 5) then ksavage = savage_5() endif @@ -119,30 +119,30 @@ schedule("lorenz_sched", 0, $LORENZ_TIME) #define FQPERC # isavage_mode = rint:i(1, 5) ksavage init 0 - if(isavage_mode == 1) then + if (isavage_mode == 1) then ksavage = savage_1() - elseif(isavage_mode == 2) then + elseif (isavage_mode == 2) then ksavage = savage_2() - elseif(isavage_mode == 3) then + elseif (isavage_mode == 3) then ksavage = savage_3() - elseif(isavage_mode == 4) then + elseif (isavage_mode == 4) then ksavage = savage_4() - elseif(isavage_mode == 5) then + elseif (isavage_mode == 5) then ksavage = savage_5() endif # #define SAVAGE(isavage_mode') # ksavage init 0 - if(isavage_mode == 1) then + if (isavage_mode == 1) then ksavage = savage_1() - elseif(isavage_mode == 2) then + elseif (isavage_mode == 2) then ksavage = savage_2() - elseif(isavage_mode == 3) then + elseif (isavage_mode == 3) then ksavage = savage_3() - elseif(isavage_mode == 4) then + elseif (isavage_mode == 4) then ksavage = savage_4() - elseif(isavage_mode == 5) then + elseif (isavage_mode == 5) then ksavage = savage_5() endif # diff --git a/public/system-files/globals.orc.bak b/public/system-files/globals.orc.bak new file mode 100644 index 0000000..6d70c2d --- /dev/null +++ b/public/system-files/globals.orc.bak @@ -0,0 +1,159 @@ +gktempo init 1 +gkphasor init 0 +gkslowph init 0 +gkbeat init 0 +gkgain init 0.05 +#define tempo #gktempo# + +instr metronome_instr + kenv = expseg(1.01, p3, 0.01) - 0.01 + asig = oscili(0.3, 3000) * kenv + chnmix(asig, "out1") + chnmix(asig, "out2") +endin + +opcode metronome, 0, 0 + kmet = gkbeat + if(kmet == 1) then + schedulek("metronome_instr", 0, 0.1) + endif +endop + +instr gclock + gkphasor = phasor:k(gktempo) + gkslowph = phasor:k(gktempo / 100) + gkbeat = metro:k(gktempo) +endin +schedule("gclock", 0, -1) + +opcode reset_clock, 0, 0 + turnoff2( nstrnum("gclock"), 0, 0) + schedule("gclock", 0.01, -1) +endop + +instr audio_out + + a1 = clip:a(chnget:a("out1"), 0, 0.99);limit:a(chnget:a("out1"), -1, 1) ;* gkgain + a2 = clip:a(chnget:a("out2"), 0, 0.99);limit:a(chnget:a("out2"), -1, 1) ;* gkgain + chnclear("out1") + chnclear("out2") + outs a1, a2 +endin +schedule("audio_out", 0, -1) + + +gklorenz_speed init 0.00001 + +gklorenz_x init 0 +gklorenz_y init 0 +gklorenz_z init 0 +gkmirlorenz_x init 0 +gkmirlorenz_y init 0 +gkmirlorenz_z init 0 +galorenz_x init 0 +galorenz_y init 0 +galorenz_z init 0 + +opcode lorenz_ctl, aaa, kppp + kspeed, ix, iy, iz xin + kspeed = limit:k(kspeed, 0.0000001, 0.09) + ksv init 10 + krv init 28 + kbv init 2.6 +; kh init 0.001 + kh = kspeed + ix = (ix != 0) ? ix : 0.6 + iy = (iy != 0) ? iy : 0.6 + iz = (iz != 0) ? iz : 0.6 + iskip = 1 + ax1, ay1, az1 lorenz ksv, krv, kbv, kh, ix, iy, iz, iskip + + ax1 /= krv + ay1 /= krv + az1 /= krv + + xout ax1, ay1, az1 +endop + +#define LORENZ_TIME #720# + +instr lorenz_sched + ix = random:i(0, 1) + iy = random:i(0, 1) + iz = random:i(0, 1) + ax, ay, az lorenz_ctl gklorenz_speed, ix, iy, iz + gklorenz_x = lag(k(ax), 0.01) + gklorenz_y = lag(k(ay), 0.01) + gklorenz_z = lag(k(az), 0.01) + gkmirlorenz_x = mirror:k(gklorenz_x, 0, 1) + gkmirlorenz_y = mirror:k(gklorenz_y, 0, 1) + gkmirlorenz_z = mirror:k(gklorenz_z, 0, 1) + galorenz_x = ax + galorenz_y = ay + galorenz_z = az + schedule("lorenz_sched", $LORENZ_TIME, $LORENZ_TIME) +endin + +schedule("lorenz_sched", 0, $LORENZ_TIME) + +#define FQ # + isavage_mode init p6 + ifq mtof inote + + ksavage init 0 + if(isavage_mode == 1) then + ksavage = savage_1() + elseif(isavage_mode == 2) then + ksavage = savage_2() + elseif(isavage_mode == 3) then + ksavage = savage_3() + elseif(isavage_mode == 4) then + ksavage = savage_4() + elseif(isavage_mode == 5) then + ksavage = savage_5() + endif + + kfq = limit:k(ifq + (ksavage * ifq), 20, 20000) +# + +#define FQPERC # + isavage_mode = rint:i(1, 5) + ksavage init 0 + if(isavage_mode == 1) then + ksavage = savage_1() + elseif(isavage_mode == 2) then + ksavage = savage_2() + elseif(isavage_mode == 3) then + ksavage = savage_3() + elseif(isavage_mode == 4) then + ksavage = savage_4() + elseif(isavage_mode == 5) then + ksavage = savage_5() + endif +# + +#define SAVAGE(isavage_mode') # + ksavage init 0 + if(isavage_mode == 1) then + ksavage = savage_1() + elseif(isavage_mode == 2) then + ksavage = savage_2() + elseif(isavage_mode == 3) then + ksavage = savage_3() + elseif(isavage_mode == 4) then + ksavage = savage_4() + elseif(isavage_mode == 5) then + ksavage = savage_5() + endif +# + +opcode tempo, 0, k + kval xin + $tempo = limit:k(kval, 0.001, 10) +endop + +opcode chaos_speed, 0, k + kval xin + gklorenz_speed = 0.0000001 * (limit:k(kval, 0.01, 100) * 10) +endop + diff --git a/public/system-files/lib.orc b/public/system-files/lib.orc index 4a979db..50f70bf 100644 --- a/public/system-files/lib.orc +++ b/public/system-files/lib.orc @@ -57,7 +57,7 @@ opcode array_rhythm, k, k[] kcnt init 0 ilen = lenarray(karr) ktrig = 0 - if( kmet > 0 ) then + if ( kmet > 0 ) then kval = karr[kcnt] ktrig = kval kcnt = (kcnt + 1) % ilen @@ -82,7 +82,7 @@ opcode phase_trig, k, k kold init 1 ktrigger init 0 ktrigger = 0 - if(kold > kphase) then + if (kold > kphase) then ktrigger = 1 endif kold = kphase @@ -92,7 +92,7 @@ endop opcode downprint, 0, kki kprint, kdown, imargin xin kcnt init 0 - if(kcnt == 0) then + if (kcnt == 0) then printk2(kprint, imargin) endif kcnt = (kcnt + 1) % kdown @@ -101,13 +101,13 @@ endop opcode phasor_fqmult, k, kk kphase, kmult xin - if(kmult <= 0) then + if (kmult <= 0) then kmult = 1 endif kfphase init 0 - if(kmult <= 1) then + if (kmult <= 1) then kfphase = mfmod(gkslowph * (kmult * 100), 1) - elseif(kmult > 1) then + elseif (kmult > 1) then kfphase = mfmod(gkslowph * (kmult * 100), 1) ;kfphase= mfmod(gkphasor * kmult, 1) endif @@ -117,7 +117,7 @@ endop opcode rh_subd, k, k[]P karr[], kpdiv xin ilen = lenarray(karr) - if(kpdiv <= 0) then + if (kpdiv <= 0) then kpdiv = ilen endif kdiv = kpdiv @@ -125,7 +125,7 @@ opcode rh_subd, k, k[]P ktr = phase_trig(kph) kidx init 0 ktrigger = 0 - if(ktr == 1) then + if (ktr == 1) then ktrigger = karr[kidx] kidx = (kidx+1) % ilen endif @@ -135,7 +135,7 @@ endop opcode rhythm, k, k[]P karr[], kpdiv xin ilen = lenarray(karr) - if(kpdiv <= 0) then + if (kpdiv <= 0) then kpdiv = ilen endif kdiv = kpdiv @@ -143,7 +143,7 @@ opcode rhythm, k, k[]P ktr = phase_trig(kph) kidx init 0 ktrigger = 0 - if(ktr == 1) then + if (ktr == 1) then ktrigger = karr[kidx] kidx = (kidx+1) % ilen endif @@ -166,7 +166,7 @@ opcode swing, k, kk kph = phasor_fqmult(gkphasor, kspeed) ktr1 = phase_trig(kph) ktr2 = 0 - if(kold < ksw && kph >= ksw) then + if (kold < ksw && kph >= ksw) then ktr2 = 0.6 endif kold = kph @@ -219,16 +219,16 @@ endop opcode alternate, k, kkkO kone, ktwo, kspeed, kduty xin - if(kduty == 0) then + if (kduty == 0) then kduty = 0.5 endif - if(kspeed <= 0) then + if (kspeed <= 0) then kspeed = 1 endif kspeed = limit:k(to_tempo_dur(kspeed), 0.0001, 1000) kph = phasor_fqmult(gkphasor, kspeed) kres init i(kone) - if(kph < kduty) then + if (kph < kduty) then kres = kone else kres = ktwo @@ -245,7 +245,7 @@ endop opcode oscillation, k, kkk kmin, kmax, kspeed xin - if(kmin > kmax) then + if (kmin > kmax) then ktmp = kmin kmin = kmax kmax = ktmp @@ -262,14 +262,14 @@ endop opcode sequence, k, k[]P karr[], kpdiv xin ilen = lenarray(karr) - if(kpdiv <= 0) then + if (kpdiv <= 0) then kpdiv = ilen endif kdiv = kpdiv kph = phasor_fqmult(gkphasor, kdiv ) ktr = phase_trig(kph) kidx init 0 - if(ktr == 1) then + if (ktr == 1) then kidx = (kidx+1) % ilen endif ktrigger = karr[kidx] @@ -313,15 +313,15 @@ opcode savage_1, k, 0 ksel init 0 ksel_sig init 0 - if(trigger:k(kmod, 0.5, 0) == 1) then + if (trigger:k(kmod, 0.5, 0) == 1) then ksel = rint:k(0, 2) endif - if(ksel == 0) then + if (ksel == 0) then ksel_sig = k1 - elseif(ksel == 1) then + elseif (ksel == 1) then ksel_sig = k2 - elseif(ksel == 2) then + elseif (ksel == 2) then ksel_sig = k3 endif @@ -341,7 +341,7 @@ opcode savage_3, k, 0 kduty = gkmirlorenz_y kph = phasor:k(gkmirlorenz_x * 5 ) kres init 0 - if(kph < kduty) then + if (kph < kduty) then kres = 1 else kres = 0 @@ -358,7 +358,7 @@ opcode savage_4, k, 0 kchange init 1 kchange = changed:k(round(abs(gklorenz_x ))) kmod init 1 - if(kchange == 1) then + if (kchange == 1) then iarr[0] = random:i(0, 1) iarr[1] = random:i(0, 1) iarr[2] = random:i(0, 1) @@ -381,11 +381,11 @@ opcode chaos_rhythm, k, kk kthresh = limit:k(kthresh, 0, 1) kchoice = int(limit:k(kchoice, 1, 3.99)) kval init 0 - if(kchoice == 1) then + if (kchoice == 1) then kval = gkmirlorenz_x - elseif(kchoice == 2) then + elseif (kchoice == 2) then kval = gkmirlorenz_y - elseif(kchoice == 3) then + elseif (kchoice == 3) then kval = gkmirlorenz_z endif @@ -399,11 +399,11 @@ opcode chaos_control, k, kkk kmin = min:k(kmin, kmax) kchoice = int(limit:k(kchoice, 1, 3.99)) kval init 0 - if(kchoice == 1) then + if (kchoice == 1) then kval = gkmirlorenz_x - elseif(kchoice == 2) then + elseif (kchoice == 2) then kval = gkmirlorenz_y - elseif(kchoice == 3) then + elseif (kchoice == 3) then kval = gkmirlorenz_z endif kdiff = kmax - kmin diff --git a/public/system-files/lib.orc.bak b/public/system-files/lib.orc.bak new file mode 100644 index 0000000..50f70bf --- /dev/null +++ b/public/system-files/lib.orc.bak @@ -0,0 +1,414 @@ +; instruments management +instr KillImpl + Sinstr = p4 + if (nstrnum(Sinstr) > 0) then + turnoff2(Sinstr, 0, 0) + endif + turnoff +endin + +opcode kill, 0, S + Sinstr xin + schedule("KillImpl", 0, .05, Sinstr) +endop + +opcode refresh, 0, S + Sinstr xin + if (nstrnum(Sinstr) > 0) then + kill(Sinstr) + schedule(Sinstr, ksmps / sr, -1) + endif +endop + +#define _endin # +endin +refresh("livecoding") +# + +opcode rint, i, ii + imin, imax xin + irnd = int(random:i(imin, int(imax) + 0.99)) + xout irnd +endop + +opcode rint, k, kk + kmin, kmax xin + krnd = int(random:k(kmin, int(kmax) + 0.99)) + xout krnd +endop + +opcode euclidian, k, kkkk + konset, kdiv, kpulses, krot xin + kphasor = gkphasor + kph = int( ( ( (kphasor + krot) * kdiv) / 1) * kpulses) + keucval = int((konset / kpulses) * kph) + kold_euc init i(keucval) + kold_ph init i(kph) + kres = ((kold_euc != keucval) && (kold_ph != kph)) ? 1 : 0 + kold_euc = keucval + kold_ph = kph + xout kres +endop + +// Simple rhythm array +opcode array_rhythm, k, k[] + karr[] xin + kmet = gkbeat + kcnt init 0 + ilen = lenarray(karr) + ktrig = 0 + if ( kmet > 0 ) then + kval = karr[kcnt] + ktrig = kval + kcnt = (kcnt + 1) % ilen + endif + + xout ktrig +endop + +opcode trunc, k, k + kx xin + ky = (kx < 0) ? -(floor(-kx)) : floor(kx) + xout ky +endop +opcode mfmod, k, kk + kone, ktwo xin + kres = kone - trunc(kone/ktwo) * ktwo + xout kres +endop + +opcode phase_trig, k, k + kphase xin + kold init 1 + ktrigger init 0 + ktrigger = 0 + if (kold > kphase) then + ktrigger = 1 + endif + kold = kphase + xout ktrigger +endop + +opcode downprint, 0, kki + kprint, kdown, imargin xin + kcnt init 0 + if (kcnt == 0) then + printk2(kprint, imargin) + endif + kcnt = (kcnt + 1) % kdown +endop + + +opcode phasor_fqmult, k, kk + kphase, kmult xin + if (kmult <= 0) then + kmult = 1 + endif + kfphase init 0 + if (kmult <= 1) then + kfphase = mfmod(gkslowph * (kmult * 100), 1) + elseif (kmult > 1) then + kfphase = mfmod(gkslowph * (kmult * 100), 1) + ;kfphase= mfmod(gkphasor * kmult, 1) + endif + xout kfphase +endop + +opcode rh_subd, k, k[]P + karr[], kpdiv xin + ilen = lenarray(karr) + if (kpdiv <= 0) then + kpdiv = ilen + endif + kdiv = kpdiv + kph = phasor_fqmult(gkphasor, kdiv ) + ktr = phase_trig(kph) + kidx init 0 + ktrigger = 0 + if (ktr == 1) then + ktrigger = karr[kidx] + kidx = (kidx+1) % ilen + endif + xout ktrigger +endop + +opcode rhythm, k, k[]P + karr[], kpdiv xin + ilen = lenarray(karr) + if (kpdiv <= 0) then + kpdiv = ilen + endif + kdiv = kpdiv + kph = phasor_fqmult(gkphasor, kdiv) + ktr = phase_trig(kph) + kidx init 0 + ktrigger = 0 + if (ktr == 1) then + ktrigger = karr[kidx] + kidx = (kidx+1) % ilen + endif + xout ktrigger +endop + +opcode beat, k, k + kmult xin + kmult = limit:k(kmult, 0.001, 1000) + km = rhythm(array(1), kmult) + ;kph = phasor:k(kmult * gktempo) + ;km = phase_trig(kph) + xout km +endop + +opcode swing, k, kk + kspeed, ksw xin + ktrig init 0 + kold init 0 + kph = phasor_fqmult(gkphasor, kspeed) + ktr1 = phase_trig(kph) + ktr2 = 0 + if (kold < ksw && kph >= ksw) then + ktr2 = 0.6 + endif + kold = kph + ktrig = limit:k(ktr1 + ktr2, 0, 1) + xout ktrig +endop + +opcode drunk, k, kk + kspeed, kdrunk xin + kold init 0 + kspeed = limit:k(kspeed, 0.001, 1000) + knoi = random:k(0, kdrunk) + + kph = phasor_fqmult(gkphasor, kspeed) + ;kph = phase_incr_mod(gkphasor, 1/ kspeed) + ktrig = limit:k(phase_trig(kph) + ((kold < knoi && kph > knoi) ? 1 : 0), 0, 1) + + kold = kph + xout ktrig +endop + + +opcode filter_first_trig, k, k + ktrig xin + ksub init 1 + ktrig -= ksub + ksub = 0 + xout ktrig +endop + +opcode check_trig, k, k + ktrig xin + kf = filter_first_trig(ktrig) + kres = (changed:k(kf) > 0 && kf > 0) ? 1 : 0 + xout kres +endop + +opcode to_tempo_dur, k, k + kdur xin + ktdur = kdur / gktempo + xout ktdur +endop + +opcode chance, k, kk + kmin, kmax xin + kres = random:k(kmin, kmax) + xout kres +endop + +opcode alternate, k, kkkO + kone, ktwo, kspeed, kduty xin + + if (kduty == 0) then + kduty = 0.5 + endif + if (kspeed <= 0) then + kspeed = 1 + endif + kspeed = limit:k(to_tempo_dur(kspeed), 0.0001, 1000) + kph = phasor_fqmult(gkphasor, kspeed) + kres init i(kone) + if (kph < kduty) then + kres = kone + else + kres = ktwo + endif + xout kres +endop + +opcode trajectory, k, kkk + kfrom, kdur, kto xin + kdur = to_tempo_dur(kdur) + kres = linseg:k( i(kfrom), i(kdur), i(kto) ) + xout kres +endop + +opcode oscillation, k, kkk + kmin, kmax, kspeed xin + if (kmin > kmax) then + ktmp = kmin + kmin = kmax + kmax = ktmp + endif + kspeed = limit:k(gktempo / kspeed, 0.001, 1000) + + kfq = kspeed ; / gktempo + iphs init i(gkphasor) + kosc = oscili(0.5, kfq, -1, iphs) + 0.5 + kres = kosc * (kmax - kmin) + kmin + xout kres +endop + +opcode sequence, k, k[]P + karr[], kpdiv xin + ilen = lenarray(karr) + if (kpdiv <= 0) then + kpdiv = ilen + endif + kdiv = kpdiv + kph = phasor_fqmult(gkphasor, kdiv ) + ktr = phase_trig(kph) + kidx init 0 + if (ktr == 1) then + kidx = (kidx+1) % ilen + endif + ktrigger = karr[kidx] + xout ktrigger +endop + +opcode random_array_int, i[], iii + isize, imin, imax xin + iarr[] init isize + + icnt init 0 + while icnt < isize do + iarr[icnt] = int(random:i(imin, imax+0.99)) + icnt += 1 + od + xout iarr +endop + +opcode random_array_int, k[], iii + isize, imin, imax xin + kArr[] init isize + icnt init 0 + iArr[] = random_array_int(isize, imin, imax) + while icnt < isize do + kArr[icnt] = iArr[icnt] + icnt += 1 + od + xout kArr +endop + +#define arr #fillarray(# + +; kind of random based savage +opcode savage_1, k, 0 + k1 = gkmirlorenz_x + k2 = abs(oscili:k(1, gkmirlorenz_y * 6 + 0.01)) + k3 = rspline:k(0, gkmirlorenz_z, 1, 5) + + kfq = gkmirlorenz_x * rspline:k(1, 3, 1, 5) + 0.001 + kmod = beat(kfq) ;lfo:k(1, kfq, 3) + + ksel init 0 + ksel_sig init 0 + if (trigger:k(kmod, 0.5, 0) == 1) then + ksel = rint:k(0, 2) + endif + + if (ksel == 0) then + ksel_sig = k1 + elseif (ksel == 1) then + ksel_sig = k2 + elseif (ksel == 2) then + ksel_sig = k3 + endif + + kres = (kmod > 0) ? ksel_sig : 0 + xout kres +endop + +; direct lorenz savage mode +opcode savage_2, k, 0 + kmult = pow(abs(lfo:k(1, rspline:k(0, gklorenz_x, 0.1, 3), 1)),3) + kmod = abs(poscil:k( pow(gkmirlorenz_z, 3) * kmult, gkmirlorenz_x * gkmirlorenz_y * 40)) + xout kmod +endop + +; pwm based savage mode +opcode savage_3, k, 0 + kduty = gkmirlorenz_y + kph = phasor:k(gkmirlorenz_x * 5 ) + kres init 0 + if (kph < kduty) then + kres = 1 + else + kres = 0 + endif + + kmult = mirror:k(gklorenz_z, 0, 1) + kres *= kmult + xout kres +endop + +opcode savage_4, k, 0 + iarr[] = fillarray(random:i(0, 1), random:i(0, 1), random:i(0, 1), random:i(0, 1)) + + kchange init 1 + kchange = changed:k(round(abs(gklorenz_x ))) + kmod init 1 + if (kchange == 1) then + iarr[0] = random:i(0, 1) + iarr[1] = random:i(0, 1) + iarr[2] = random:i(0, 1) + iarr[3] = random:i(0, 1) + endif + ksel = int(abs(gklorenz_x) * 4.99) % 4 + kres = limit:k (lineto(iarr[ksel], mirror:k(abs(gklorenz_y), 0, 1) ), 0, 1) + xout kres +endop + +opcode savage_5, k, 0 + kamp = pow(abs(gklorenz_x), 2) + kfq = 8 - (0.01 + abs(gklorenz_y) * 8) + kmod = oscili:k(kamp, kfq) + xout kmod +endop + +opcode chaos_rhythm, k, kk + kchoice, kthresh xin + kthresh = limit:k(kthresh, 0, 1) + kchoice = int(limit:k(kchoice, 1, 3.99)) + kval init 0 + if (kchoice == 1) then + kval = gkmirlorenz_x + elseif (kchoice == 2) then + kval = gkmirlorenz_y + elseif (kchoice == 3) then + kval = gkmirlorenz_z + endif + + kres = trigger:k(kval, kthresh, 2) + xout kres +endop + +opcode chaos_control, k, kkk + kchoice, kmin, kmax xin + kmax = max:k(kmin, kmax) + kmin = min:k(kmin, kmax) + kchoice = int(limit:k(kchoice, 1, 3.99)) + kval init 0 + if (kchoice == 1) then + kval = gkmirlorenz_x + elseif (kchoice == 2) then + kval = gkmirlorenz_y + elseif (kchoice == 3) then + kval = gkmirlorenz_z + endif + kdiff = kmax - kmin + kres = kval * kdiff + kmin + xout kres +endop + + diff --git a/public/system-files/livecode.orc b/public/system-files/livecode.orc index cc45500..4a711cc 100644 --- a/public/system-files/livecode.orc +++ b/public/system-files/livecode.orc @@ -1,3 +1,3 @@ -instr livecoding +instr livecoding $_endin diff --git a/public/system-files/livecode.orc.bak b/public/system-files/livecode.orc.bak new file mode 100644 index 0000000..cc45500 --- /dev/null +++ b/public/system-files/livecode.orc.bak @@ -0,0 +1,3 @@ +instr livecoding + +$_endin diff --git a/public/system-files/project.csd b/public/system-files/project.csd new file mode 100644 index 0000000..f7a36a9 --- /dev/null +++ b/public/system-files/project.csd @@ -0,0 +1,27 @@ + + +-m0 -d + + +0dbfs=1 +nchnls=2 +ksmps = 64 +sr = 44100 +seed 0 +#include "globals.orc" +#include "lib.orc" +#include "synth.orc" +#include "scale.orc" +#include "livecode.orc" + + + +f 0 z +f 1 0 2049 -16 0 204 -5.6072 1 1843 -10 0 ; kind of karplustrong + + + + + + + diff --git a/public/system-files/scale.orc b/public/system-files/scale.orc index 1083907..3e9857f 100644 --- a/public/system-files/scale.orc +++ b/public/system-files/scale.orc @@ -125,16 +125,16 @@ opcode scale_up, k, ikkk knote init ibase kitv init 0 ilen = ftlen(iscale) - if(ktrig == 1) then + if (ktrig == 1) then kpick = (kpick + 1) ;% ilen - if(kpick == ilen) then + if (kpick == ilen) then kpick = 0 kitv = 0 endif kitv = table(kpick, iscale) - kitv printk2 kitv knote = knote + kitv - if(knote > kmax) then + if (knote > kmax) then knote = kmin + (knote - kmax) endif endif @@ -150,11 +150,11 @@ opcode scale_up, k, ikkk kpick init 0 knote init ibase ilen = ftlen(iscale) - if(ktrig == 1) then + if (ktrig == 1) then kpick = (kpick + 1) % ilen kitv = table(kpick, iscale) knote = knote + kitv - if(knote > kmax) then + if (knote > kmax) then knote = kmin + (knote - kmax) endif endif @@ -172,11 +172,11 @@ opcode scale_down, k, ikkk kpick init 0 knote init ibase ilen = ftlen(iscale) - if(ktrig == 1) then + if (ktrig == 1) then kpick = (kpick + 1) % ilen kitv = table(kpick, iscale) knote = knote - kitv - if(knote < kmin) then + if (knote < kmin) then knote = kmax ;- (kmin - knote) endif endif @@ -191,15 +191,15 @@ opcode scale_random, k, ikkk kpick init 0 knote init ibase ilen = ftlen(iscale) - if(ktrig == 1) then + if (ktrig == 1) then ksign = (rint:k(0, 1) == 0) ? -1 : 1 kpick = (kpick + 1) % ilen kitv = table(kpick, iscale) knote = knote + (kitv * ksign) - if(knote < kmin) then + if (knote < kmin) then knote = kmax ;- (kmin - knote) endif - if(knote > kmax) then + if (knote > kmax) then knote = kmin ;+ (knote - kmax) endif endif diff --git a/public/system-files/scale.orc.bak b/public/system-files/scale.orc.bak new file mode 100644 index 0000000..1083907 --- /dev/null +++ b/public/system-files/scale.orc.bak @@ -0,0 +1,207 @@ +gi3semitone ftgen 0, 0, 5, -2, 0, 3, 6, 9, 12 +gi4semitone ftgen 0, 0, 4, -2, 0, 4, 8, 12 +giaeolian ftgen 0, 0, 7, -2, 0, 2, 3, 5, 7, 8, 10 +giaeolian ftgen 0, 0, 8, -2, 0, 2, 3, 5, 7, 8, 10, 12 +gialgerian ftgen 0, 0, 8, -2, 0, 2, 3, 6, 7, 8, 11, 12 +gialgerian1 ftgen 0, 0, 8, -2, 0, 2, 3, 6, 7, 8, 11, 12 +gialgerian2 ftgen 0, 0, 8, -2, 0, 2, 3, 5, 7, 8, 10, 12 +gialtered ftgen 0, 0, 8, -2, 0, 1, 3, 4, 6, 8, 10, 12 +giarabian ftgen 0, 0, 8, -2, 0, 1, 4, 5, 7, 8, 11, 12 +giaugmented ftgen 0, 0, 7, -2, 0, 3, 4, 7, 8, 11, 12 +gibalinese ftgen 0, 0, 6, -2, 0, 1, 3, 7, 8, 12 +gibebopdominant ftgen 0, 0, 9, -2, 0, 2, 4, 5, 7, 9, 10, 11, 12 +gibebopdominantflatnine ftgen 0, 0, 9, -2, 0, 1, 4, 5, 7, 9, 10, 11, 12 +gibebopmajor ftgen 0, 0, 9, -2, 0, 2, 4, 5, 7, 8, 9, 11, 12 +gibebopminor ftgen 0, 0, 9, -2, 0, 2, 3, 5, 7, 8, 9, 10, 12 +gibeboptonicminor ftgen 0, 0, 9, -2, 0, 2, 3, 5, 7, 8, 9, 11, 12 +giblues ftgen 0, 0, 7, -2, 0, 3, 5, 6, 7, 10, 12 +gibyzantine ftgen 0, 0, 8, -2, 0, 1, 4, 5, 7, 8, 11, 12 +gichahargah ftgen 0, 0, 8, -2, 0, 1, 4, 5, 7, 8, 11, 12 +gichinese ftgen 0, 0, 6, -2, 0, 2, 4, 7, 9, 12 +gichinese2 ftgen 0, 0, 6, -2, 0, 4, 6, 7, 11, 12 +gichroma ftgen 0, 0, 12, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 +gichromatic ftgen 0, 0, 13, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 +gidim ftgen 0, 0, 4, -2, 0, 3, 6, 9 +gidiminished ftgen 0, 0, 9, -2, 0, 2, 3, 5, 6, 8, 9, 11, 12 +gidorian ftgen 0, 0, 7, -2, 0, 2, 3, 5, 7, 9, 10 +gidorian ftgen 0, 0, 8, -2, 0, 2, 3, 5, 7, 9, 10, 12 +gidoubleharmonic ftgen 0, 0, 8, -2, 0, 1, 4, 5, 7, 8, 11, 12 +giegyptian ftgen 0, 0, 8, -2, 0, 2, 3, 6, 7, 8, 11, 12 +gienigmatic ftgen 0, 0, 8, -2, 0, 1, 4, 6, 8, 10, 11, 12 +giethiopian ftgen 0, 0, 8, -2, 0, 2, 4, 5, 7, 8, 11, 12 +giflamenco ftgen 0, 0, 9, -2, 0, 1, 3, 4, 5, 7, 8, 10, 12 +gigypsy ftgen 0, 0, 8, -2, 0, 1, 4, 5, 7, 8, 11, 12 +giharmonic ftgen 0, 0, 7, -2, 0, 2, 4, 5, 7, 9, 11 +giharmonicmajor ftgen 0, 0, 8, -2, 0, 2, 4, 5, 8, 9, 11, 12 +giharmonicminor ftgen 0, 0, 7, -2, 0, 2, 3, 5, 7, 8, 11 +giharmonicminor ftgen 0, 0, 8, -2, 0, 2, 3, 5, 7, 8, 11, 12 +gihindu ftgen 0, 0, 8, -2, 0, 2, 4, 5, 7, 8, 10, 12 +gihirajoshi ftgen 0, 0, 6, -2, 0, 2, 3, 7, 8, 12 +gihungariangypsy ftgen 0, 0, 8, -2, 0, 2, 3, 6, 7, 8, 11, 12 +gihungarianmajor ftgen 0, 0, 8, -2, 0, 3, 4, 6, 7, 9, 10, 12 +gihungarianminor ftgen 0, 0, 8, -2, 0, 2, 3, 6, 7, 8, 11, 12 +giindian ftgen 0, 0, 8, -2, 0, 1, 3, 4, 7, 8, 10, 12 +giinverteddiminished ftgen 0, 0, 9, -2, 0, 1, 3, 4, 6, 7, 9, 10, 12 +giionian ftgen 0, 0, 7, -2, 0, 2, 4, 5, 7, 9, 11 +giionian ftgen 0, 0, 8, -2, 0, 2, 4, 5, 7, 9, 11, 12 +giiwato ftgen 0, 0, 6, -2, 0, 1, 5, 6, 10, 12 +gijapanese ftgen 0, 0, 6, -2, 0, 1, 5, 7, 8, 12 +gijavanese ftgen 0, 0, 8, -2, 0, 1, 3, 5, 7, 9, 10, 12 +gijewish ftgen 0, 0, 8, -2, 0, 1, 4, 5, 7, 8, 10, 12 +gikumoi ftgen 0, 0, 6, -2, 0, 1, 5, 7, 8, 12 +gileadingwholetone ftgen 0, 0, 8, -2, 0, 2, 4, 6, 8, 10, 11, 12 +gilocrian ftgen 0, 0, 7, -2, 0, 1, 3, 5, 6, 8, 10 +gilocrian ftgen 0, 0, 8, -2, 0, 1, 3, 5, 6, 8, 10, 12 +gilocrianmajor ftgen 0, 0, 8, -2, 0, 2, 4, 5, 6, 8, 10, 12 +gilocriannatural ftgen 0, 0, 8, -2, 0, 2, 3, 5, 6, 8, 10, 12 +gilocriansuper ftgen 0, 0, 8, -2, 0, 1, 3, 4, 6, 8, 10, 12 +gilocrianultra ftgen 0, 0, 8, -2, 0, 1, 3, 4, 6, 8, 9, 12 +gilydian ftgen 0, 0, 7, -2, 0, 2, 4, 6, 7, 9, 11 +gilydian ftgen 0, 0, 8, -2, 0, 2, 4, 6, 7, 9, 11, 12 +gilydianaugmented ftgen 0, 0, 8, -2, 0, 2, 4, 6, 8, 9, 10, 12 +gilydiandominant ftgen 0, 0, 8, -2, 0, 2, 4, 6, 7, 9, 10, 12 +gilydianminor ftgen 0, 0, 8, -2, 0, 2, 4, 6, 7, 8, 10, 12 +gim7 ftgen 0, 0, 19, -2, 0, 3, 7, 10, 14, 17, 21, 24, 27, 31, 34, 38, 41, 45, 48, 51, 55, 58, 62 +gimajor ftgen 0, 0, 7, -2, 0, 2, 4, 5, 7, 9, 11 +gimarva ftgen 0, 0, 8, -2, 0, 1, 4, 6, 7, 9, 11, 12 +gimelodicminor ftgen 0, 0, 8, -2, 0, 2, 3, 5, 7, 9, 11, 12 +gimelodicminorascending ftgen 0, 0, 7, -2, 0, 2, 3, 5, 7, 9, 11 +gimelodicminordescending ftgen 0, 0, 7, -2, 0, 2, 3, 5, 7, 8, 10 +giminor ftgen 0, 0, 7, -2, 0, 2, 3, 5, 7, 8, 10 +giminor3 ftgen 0, 0, 7, -2, 0, 2, 2.75, 5, 7.15, 8, 10 +gimjnor ftgen 0, 0, 7, -2, 0, 1.75, 2.75, 5.35, 7.35, 8, 10 +giminor2v5 ftgen 0, 0, 7, -2, 0, 2, 2.5, 5, 7, 8, 10 +gimixolydian ftgen 0, 0, 7, -2, 0, 2, 4, 5, 7, 9, 10 +gimixolydian ftgen 0, 0, 8, -2, 0, 2, 4, 5, 7, 9, 10, 12 +gimixolydianaugmented ftgen 0, 0, 8, -2, 0, 2, 4, 5, 8, 9, 10, 12 +gimohammedan ftgen 0, 0, 8, -2, 0, 2, 3, 5, 7, 8, 11, 12 +gimongolian ftgen 0, 0, 6, -2, 0, 2, 4, 7, 9, 12 +gimonotone ftgen 0, 0, 1, -2, 0 +ginaturalminor ftgen 0, 0, 7, -2, 9, 11, 0, 2, 4, 5, 7 +ginaturalminor ftgen 0, 0, 8, -2, 0, 2, 3, 5, 7, 8, 10, 12 +gineapolitanmajor ftgen 0, 0, 8, -2, 0, 1, 3, 5, 7, 9, 11, 12 +gineapolitanminor ftgen 0, 0, 8, -2, 0, 1, 3, 5, 7, 8, 11, 12 +giocta_1_2 ftgen 0, 0, 8, -2, 0, 1, 3, 4, 6, 7, 9, 10 +giocta_2_1 ftgen 0, 0, 8, -2, 0, 2, 3, 5, 6, 8, 9, 11 +gioriental ftgen 0, 0, 8, -2, 0, 1, 4, 5, 6, 9, 10, 12 +giovertone ftgen 0, 0, 8, -2, 0, 2, 4, 6, 7, 9, 10, 12 +gipa ftgen 0, 0, 6, -2, 0, 2, 3, 7, 8, 12 +gipb ftgen 0, 0, 6, -2, 0, 1, 3, 6, 8, 12 +gipd ftgen 0, 0, 6, -2, 0, 2, 3, 7, 9, 12 +gipe ftgen 0, 0, 6, -2, 0, 1, 3, 7, 8, 12 +gipelog ftgen 0, 0, 6, -2, 0, 1, 3, 7, 10, 12 +gipentamaj ftgen 0, 0, 5, -2, 0, 2, 4, 7, 9 +gipentamin ftgen 0, 0, 5, -2, 0, 3, 5, 7, 10 +gipentatonicmajor ftgen 0, 0, 6, -2, 0, 2, 4, 7, 9, 12 +gipentatonicminor ftgen 0, 0, 6, -2, 0, 3, 5, 7, 10, 12 +gipersian ftgen 0, 0, 8, -2, 0, 1, 4, 5, 6, 8, 11, 12 +gipfcg ftgen 0, 0, 6, -2, 0, 2, 4, 7, 9, 12 +giphrygian ftgen 0, 0, 7, -2, 0, 1, 3, 5, 7, 8, 10 +giphrygian ftgen 0, 0, 8, -2, 0, 1, 3, 5, 7, 8, 10, 12 +giphrygianmajor ftgen 0, 0, 8, -2, 0, 1, 4, 5, 7, 8, 10, 12 +giquarter ftgen 0, 0, 22, -2, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5 +giromanian ftgen 0, 0, 8, -2, 0, 2, 3, 6, 7, 9, 10, 12 +gispanish ftgen 0, 0, 8, -2, 0, 1, 4, 5, 7, 8, 10, 12 +gispanish8tone ftgen 0, 0, 9, -2, 0, 1, 3, 4, 5, 6, 8, 10, 12 +gisymmetrical ftgen 0, 0, 9, -2, 0, 1, 3, 4, 6, 7, 9, 10, 12 +gitodi ftgen 0, 0, 8, -2, 0, 1, 3, 6, 7, 8, 11, 12 +giwhole ftgen 0, 0, 6, -2, 0, 2, 4, 6, 8, 10 +giwhole ftgen 0, 0, 7, -2, 0, 2, 4, 6, 8, 10, 12 +gibp ftgen 0, 0, 12, -2, 0, 1.3324, 3.0185, 4.3508, 5.8251, 7.3693, 8.8436, 10.1760, 11.6502, 13.1944, 14.6687, 16.0011, 17.6872, 19.0196 + +#define chinese #gichinese# +#define persian #gipersian# +#define indian #giindian# +#define arabian #giarabian# +#define minor #giminor# +#define major #gimajor# + +opcode scale_up, k, ikkk + iscale, kmin, kmax, kspeed xin + ktrig = metro:k(kspeed) + idiff = abs( i(kmax) - i(kmin) ) + ibase = i(kmin) + kpick init 0 + knote init ibase + kitv init 0 + ilen = ftlen(iscale) + if(ktrig == 1) then + kpick = (kpick + 1) ;% ilen + if(kpick == ilen) then + kpick = 0 + kitv = 0 + endif + kitv = table(kpick, iscale) - kitv + printk2 kitv + knote = knote + kitv + if(knote > kmax) then + knote = kmin + (knote - kmax) + endif + endif + xout knote +endop + +/* +opcode scale_up, k, ikkk + iscale, kmin, kmax, kspeed xin + ktrig = metro:k(kspeed) + idiff = abs( i(kmax) - i(kmin) ) + ibase = i(kmin) + (idiff/2) + kpick init 0 + knote init ibase + ilen = ftlen(iscale) + if(ktrig == 1) then + kpick = (kpick + 1) % ilen + kitv = table(kpick, iscale) + knote = knote + kitv + if(knote > kmax) then + knote = kmin + (knote - kmax) + endif + endif + xout knote +endop + +*/ + +opcode scale_down, k, ikkk + iscale, kmin, kmax, kspeed xin + ktrig = metro:k(kspeed) + + idiff = abs( i(kmax) - i(kmin) ) + ibase = i(kmax) + kpick init 0 + knote init ibase + ilen = ftlen(iscale) + if(ktrig == 1) then + kpick = (kpick + 1) % ilen + kitv = table(kpick, iscale) + knote = knote - kitv + if(knote < kmin) then + knote = kmax ;- (kmin - knote) + endif + endif + xout knote +endop + +opcode scale_random, k, ikkk + iscale, kmin, kmax, kspeed xin + ktrig = metro:k(kspeed) + idiff = abs( i(kmax) - i(kmin) ) + ibase = i(kmin) + (idiff/2) + kpick init 0 + knote init ibase + ilen = ftlen(iscale) + if(ktrig == 1) then + ksign = (rint:k(0, 1) == 0) ? -1 : 1 + kpick = (kpick + 1) % ilen + kitv = table(kpick, iscale) + knote = knote + (kitv * ksign) + if(knote < kmin) then + knote = kmax ;- (kmin - knote) + endif + if(knote > kmax) then + knote = kmin ;+ (knote - kmax) + endif + endif + xout knote +endop diff --git a/public/system-files/synth.orc b/public/system-files/synth.orc index 5c58d84..6859376 100644 --- a/public/system-files/synth.orc +++ b/public/system-files/synth.orc @@ -12,7 +12,7 @@ opcode basic_sine_gen, 0, kk ktrig, kamp xin kamp = limit:k(kamp, 0, 1) ktrig = limit:k(ktrig, 0, 1) - if(check_trig(ktrig) == 1) then + if (check_trig(ktrig) == 1) then schedulek("basic_sine", 0, random:k(0.03, 0.1), random:k(50, 80), kamp * ktrig) endif endop @@ -35,7 +35,7 @@ opcode pop, 0, kkkk knote = limit:k(knote, 0, 100) + 27 kdur = to_tempo_dur(limit:k(kdur, 0.01, 1)) ktrig = limit:k(ktrig, 0, 1) - if(check_trig(ktrig) == 1) then + if (check_trig(ktrig) == 1) then schedulek("pop_impl", 0, kdur, knote, kamp * ktrig) endif endop @@ -78,7 +78,7 @@ opcode kick, 0, kkO ktrig = limit:k(ktrig, 0, 1) ksav = rint:i(1, 5) - if(check_trig(ktrig) == 1) then + if (check_trig(ktrig) == 1) then schedulek("basic_kick", 0, 0.1, kamp * ktrig, 0) endif endop @@ -112,7 +112,7 @@ opcode hihat, 0, kkkkO kdur = to_tempo_dur(limit:k(kdur, 0.001, 100)) kfq = mtof(limit:k(knote, 0, 100) + 27) ktrig = limit:k(ktrig, 0, 1) - if(check_trig(ktrig) == 1) then + if (check_trig(ktrig) == 1) then schedulek("noisy_hat", 0, kdur, kfq, kamp * ktrig, ksav) endif endop @@ -125,7 +125,7 @@ instr bass_impl aenv = expsegr:a(0.01, 0.05, 1.01, p3 - 0.05, 1.01, p3/16, 0.01) - a(0.01) imult = rint:i(1, 8) - if(imodspeed >= 0) then + if (imodspeed >= 0) then imult = imodspeed endif kmodfq = gktempo * imult @@ -146,7 +146,7 @@ opcode wah, 0, kkkkJ kfq = mtof(limit:k(knote, 0, 100) + 20) ktrigger = limit:k(ktrigger, 0, 1) kmodspeed = limit:k(kmodspeed, -1, 100) - if(check_trig(ktrigger) == 1) then + if (check_trig(ktrigger) == 1) then schedulek("bass_impl", 0, kdur, kamp * ktrigger, kfq, kmodspeed) endif endop @@ -175,7 +175,7 @@ opcode glide, 0, kkkkO kamp = limit:k(kamp, 0, 1) kfq = mtof(limit:k(knote, 0, 100) + 20) ktrig = limit:k(ktrig, 0, 1) - if(check_trig(ktrig) == 1) then + if (check_trig(ktrig) == 1) then kcnt = 0 while kcnt < kdensity do schedulek("glide_impl", 0, to_tempo_dur(kdur), kamp * ktrig, kfq, ksav) @@ -212,7 +212,7 @@ opcode ping, 0, kkkkO kamp = limit:k(kamp, 0, 1) kfq = mtof(limit:k(knote, 0, 100) + 20) kdur = limit:k(kdur, 0.001, 1000) - if(check_trig(ktrig) == 1) then + if (check_trig(ktrig) == 1) then schedulek("trumpet_impl", 0, to_tempo_dur(kdur), kfq, kamp, rint:k(1, 3), random:k(1, 4), ksav) endif endop @@ -258,7 +258,7 @@ opcode wave, 0, kkkkO kamp = limit:k(kamp, 0, 1) ktrig = limit:k(ktrig, 0, 1) kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) - if(check_trig(ktrig) == 1) then + if (check_trig(ktrig) == 1) then schedulek("wave_impl", 0, kdur, kamp, kfq, ksav) endif endop @@ -271,7 +271,7 @@ instr pluck_impl imult init p6 iamp init p4 inote init p5 - if(imult <= 0) then + if (imult <= 0) then imult = rint:i(1, 10) endif @@ -309,7 +309,7 @@ opcode chord, 0, kkkkJO knote = limit:k(knote, 0, 100) + 20 kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) kmult = limit:k(kmult, -1, 10) - if(check_trig(ktrig) == 1) then + if (check_trig(ktrig) == 1) then schedulek("pluck_impl", 0, kdur, kamp, knote, kmult, ksav) endif endop @@ -325,9 +325,9 @@ opcode funkymod, k, kkk ; 5 saw down ; 6 pwm iwave = rint:i(1, 6) - if(iwave == 3) then + if (iwave == 3) then iwave = 4 - elseif(iwave == 6) then + elseif (iwave == 6) then iwave = 5 endif @@ -335,7 +335,7 @@ opcode funkymod, k, kkk kpwm_amp = 1 - klf_amp klfo = lfo:k(kamp, kfq) - if(iwave < 3) then + if (iwave < 3) then klfo += kamp klfo /= 2 endif @@ -391,7 +391,7 @@ opcode buzzy, 0, kkkkO kamp = limit:k(kamp ,0, 1) knote = limit:k(knote, 0, 100) + 20 kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) - if(check_trig(ktrig) == 1) then + if (check_trig(ktrig) == 1) then schedulek("buzzy_impl", 0, kdur, mtof:k(knote), kamp, ksav) endif endop @@ -422,7 +422,7 @@ opcode noisy, 0, kkkk kamp = limit:k(kamp ,0, 1) knote = limit:k(knote, 0, 100) + 20 kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) - if(check_trig(ktrig) == 1) then + if (check_trig(ktrig) == 1) then schedulek("fnoise_impl", 0, kdur, mtof:k(knote), kamp) endif endop @@ -471,7 +471,7 @@ opcode pulsar, 0, kkkkkk kformant_fq = limit:k(kformant_fq, 0, 10) * 150 + 300 ksine_cycles = int(limit:k(ksine_cycles, 1, 10)) - if(check_trig(ktrig) == 1) then + if (check_trig(ktrig) == 1) then schedulek("pulsar_impl", 0, kdur, kamp, mtof:k(knote), kformant_fq, ksine_cycles) endif endop @@ -524,7 +524,7 @@ opcode piou, 0, kkkkk kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) kQ = limit:k(kQ, 1, 10) - if(check_trig(ktrig) == 1) then + if (check_trig(ktrig) == 1) then schedulek("graou_impl", 0, kdur, kamp, mtof:k(knote), kQ) endif endop @@ -554,7 +554,7 @@ opcode buzzwave, 0, kkkkO kamp = limit:k(kamp ,0, 1) knote = limit:k(knote, 0, 100) + 20 kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) - if(trigger:k(ktrig, 0.5, 0) == 1) then + if (trigger:k(ktrig, 0.5, 0) == 1) then schedulek("smooth_wave_instr", 0, kdur, knote, kamp, ksav) endif endop @@ -594,7 +594,7 @@ opcode noisywave, 0, kkkkO kamp = limit:k(kamp ,0, 1) knote = limit:k(knote, 0, 100) + 20 kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) - if(trigger:k(ktrig, 0.5, 0) == 1) then + if (trigger:k(ktrig, 0.5, 0) == 1) then schedulek("smooth_noise_instr", 0, kdur, knote, kamp, ksav) endif endop @@ -628,7 +628,7 @@ opcode crunchy, 0, kkkkO kamp = limit:k(kamp ,0, 1) knote = limit:k(knote, 0, 100) + 20 kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) - if(check_trig(ktrig) == 1) then + if (check_trig(ktrig) == 1) then schedulek("crunchy_instr", 0, kdur, knote, kamp, ksav) endif endop @@ -652,7 +652,7 @@ instr crunchyslow_instr adist *= aenv * iamp ipan_base = rint:i(0, 1) kpan = gkmirlorenz_y - if(ipan_base > 0) then + if (ipan_base > 0) then kpan = 1 - kpan endif aL, aR pan2 adist * gkgain, kpan @@ -666,7 +666,7 @@ opcode crunchy_wav, 0, kkkkO kamp = limit:k(kamp ,0, 1) knote = limit:k(knote, 0, 100) + 20 kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) - if(check_trig(ktrig) == 1) then + if (check_trig(ktrig) == 1) then schedulek("crunchyslow_instr", 0, kdur, knote, kamp, ksav) endif endop @@ -693,7 +693,7 @@ instr shinywave_instr adist *= aenv * iamp * 0.7 ipan_base = rint:i(0, 1) kpan = gkmirlorenz_y - if(ipan_base > 0) then + if (ipan_base > 0) then kpan = 1 - kpan endif aL, aR pan2 adist * gkgain, kpan @@ -707,7 +707,7 @@ opcode brightwave, 0, kkkkO kamp = limit:k(kamp ,0, 1) knote = limit:k(knote, 0, 100) + 20 kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) - if(check_trig(ktrig) == 1) then + if (check_trig(ktrig) == 1) then schedulek("shinywave_instr", 0, kdur, knote, kamp, ksav) endif endop @@ -744,7 +744,7 @@ opcode glidy, 0, kkkkO kamp = limit:k(kamp ,0, 1) knote = limit:k(knote, 0, 100) + 20 kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) - if(check_trig(ktrig) == 1) then + if (check_trig(ktrig) == 1) then schedulek("glide_instr", 0, kdur, knote, kamp, ksav) endif endop @@ -811,7 +811,7 @@ opcode snare, 0, kkO ktrig, kamp, ksav xin ktrig = limit:k(ktrig, 0, 1) kamp = limit:k(kamp ,0, 1) - if(check_trig(ktrig) == 1) then + if (check_trig(ktrig) == 1) then ;i34 0.0 .5 30000 7.00 .5 .7 1 1 1 1 1.5 .1 idur random 1/12, 1/8 ; Duration kdyn = kamp ; random 1/9, 1/2 ; Amplitude @@ -890,7 +890,7 @@ opcode water_drop, 0, kkk kspeed = limit:k(kspeed, 0.001, 1)*15 kmet = drunk(kspeed, 0.7) - if(kmet == 1) then + if (kmet == 1) then kfq1 = random:k(380, 500) ;430 kfq2 = random:k(900, 1200) ; 1000 kfq3 = random:k(700, 880) ;800 @@ -937,7 +937,7 @@ opcode strike, 0, kkkk kamp = limit:k(kamp ,0, 1) knote = limit:k(knote, 0, 100) + 20 kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) - if(check_trig(ktrig) == 1) then + if (check_trig(ktrig) == 1) then schedulek("ks_impl", 0, kdur, knote, kamp) endif endop @@ -981,7 +981,7 @@ opcode smooth, 0, kkkk kamp = limit:k(kamp ,0, 1) knote = limit:k(knote, 0, 100) + 20 kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) - if(check_trig(ktrig) == 1) then + if (check_trig(ktrig) == 1) then schedulek("vibish_impl", 0, kdur, knote, kamp) endif endop @@ -1032,7 +1032,7 @@ opcode bounce, 0, kkkk kamp = limit:k(kamp ,0, 1) knote = limit:k(knote, 0, 100) + 20 kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) - if(check_trig(ktrig) == 1) then + if (check_trig(ktrig) == 1) then schedulek("bounce_impl", 0, kdur, knote, kamp) endif endop diff --git a/public/system-files/synth.orc.bak b/public/system-files/synth.orc.bak new file mode 100644 index 0000000..5c58d84 --- /dev/null +++ b/public/system-files/synth.orc.bak @@ -0,0 +1,1039 @@ +instr basic_sine + inote init p4 + ifq = mtof:i(inote) + iamp = p5 + kenv = expsegr(1.01, p3, 0.01) - 0.01 + ao = oscili(iamp, ifq) * kenv * 0.4 + chnmix(ao, "out1") + chnmix(ao, "out2") +endin + +opcode basic_sine_gen, 0, kk + ktrig, kamp xin + kamp = limit:k(kamp, 0, 1) + ktrig = limit:k(ktrig, 0, 1) + if(check_trig(ktrig) == 1) then + schedulek("basic_sine", 0, random:k(0.03, 0.1), random:k(50, 80), kamp * ktrig) + endif +endop + +instr pop_impl + inote init p4 + ifq = mtof:i(inote) + iamp = p5 + kenv = expsegr(1.01, p3, 0.01) - 0.01 + kmod = oscili:k(ifq / 100, 40) + ao = vco2(iamp, ifq + kmod) * kenv + af = K35_lpf(ao, ifq*4, 8) * 0.3 + chnmix(af, "out1") + chnmix(af, "out2") +endin + +opcode pop, 0, kkkk + ktrig, kamp, knote, kdur xin + kamp = limit:k(kamp, 0, 1) + knote = limit:k(knote, 0, 100) + 27 + kdur = to_tempo_dur(limit:k(kdur, 0.01, 1)) + ktrig = limit:k(ktrig, 0, 1) + if(check_trig(ktrig) == 1) then + schedulek("pop_impl", 0, kdur, knote, kamp * ktrig) + endif +endop + + +instr basic_kick + iamp init p4 + $FQPERC + + ihi = random:i(100, 600) ; 600 + ilo = random:i(100, 800) ; 20 + kfq = expseg(ihi, p3, ilo) + ao = vco2(1, kfq) + af = K35_lpf(ao, 100, 3) + amod = oscili(100, 2) + acar = oscili(1, abs(amod) + 250) + abnd = butterhp(acar, 400) + klofq = expseg(2000, p3/4, 20) + alo = K35_lpf(abnd, klofq, 5) * 0.5 + aenv = expseg:a(1.01, p3/4*3, 1.01, p3/4, 0.01) - 0.01 + akick = (alo + af) * aenv * iamp + + adist = distort1(akick, ksavage*3, 1, 1 / (abs(gklorenz_x*3) + 1), 1 - abs(gklorenz_z)) + kdist_mult = isavage_mode > 0 ? 1 : 0 + + adelayed init 0 + kfb = mirror:k(abs(gklorenz_y) + 0.5, 0, 0.9) + adel = interp( ( mirror:k( lineto(abs(ksavage), 0.1) , 0.2, 0.999 ) * 1000)) + adelayed = vdelay(akick + (adelayed * kfb), adel, 1500) + krel = linsegr:k(1, 1, 1, 1, 0) + + akick += (adelayed * kdist_mult) * krel + chnmix(akick, "out1") + chnmix(akick, "out2") +endin + +opcode kick, 0, kkO + ktrig, kamp, ksav xin + kamp = limit:k(kamp, 0, 1) + ktrig = limit:k(ktrig, 0, 1) + + ksav = rint:i(1, 5) + if(check_trig(ktrig) == 1) then + schedulek("basic_kick", 0, 0.1, kamp * ktrig, 0) + endif +endop + +instr noisy_hat + asig = pinker() + aenv = expseg(1.01, p3, 0.01) - a(0.01) + ifq init p4 + iamp init p5 + isavage_mode init p6 + $SAVAGE(isavage_mode') + kfq = ifq + (ifq * ksavage) + af = K35_hpf(asig, kfq, 9) * aenv * iamp + + adelayed init 0 + kfb = mirror:k(abs(gklorenz_y) + 0.5, 0, 0.9) + adel = interp( ( mirror:k( lineto(abs(ksavage), 0.1) , 0.2, 0.999 ) * 1000)) + adelayed = vdelay3(af + (adelayed * kfb), adel, 1000) + krel = linsegr:k(1, 1, 1, 1, 0) + + ksav_mult = (isavage_mode > 0) ? 1 : 0 + amix = af + (adelayed * ksav_mult) + + chnmix(amix, "out1") + chnmix(amix, "out2") +endin + +opcode hihat, 0, kkkkO + ktrig, kamp, knote, kdur, ksav xin + kamp = limit:k(kamp, 0, 1) + kdur = to_tempo_dur(limit:k(kdur, 0.001, 100)) + kfq = mtof(limit:k(knote, 0, 100) + 27) + ktrig = limit:k(ktrig, 0, 1) + if(check_trig(ktrig) == 1) then + schedulek("noisy_hat", 0, kdur, kfq, kamp * ktrig, ksav) + endif +endop + +instr bass_impl + iamp init p4 + ifq init p5 + imodspeed init p6 + ao = vco2(0.8, ifq) + aenv = expsegr:a(0.01, 0.05, 1.01, p3 - 0.05, 1.01, p3/16, 0.01) - a(0.01) + + imult = rint:i(1, 8) + if(imodspeed >= 0) then + imult = imodspeed + endif + kmodfq = gktempo * imult + kcut = poscil(0.5, kmodfq) + 0.5 + afilt = K35_lpf(ao, limit:k(kcut * (ifq * 20) + 20, 0, 12000), 6) + asynt = afilt * aenv * iamp * 0.2 + + ipan = random:i(0.25, 0.75) + a1, a2 pan2 asynt, ipan + chnmix(a1, "out1") + chnmix(a2, "out2") +endin + +opcode wah, 0, kkkkJ + ktrigger, kamp, knote, kdur, kmodspeed xin + kamp = limit:k(kamp, 0, 1) + kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) + kfq = mtof(limit:k(knote, 0, 100) + 20) + ktrigger = limit:k(ktrigger, 0, 1) + kmodspeed = limit:k(kmodspeed, -1, 100) + if(check_trig(ktrigger) == 1) then + schedulek("bass_impl", 0, kdur, kamp * ktrigger, kfq, kmodspeed) + endif +endop + +instr glide_impl + iamp init p4 + ifqcenter init p5 + isavage_mode init p6 + $SAVAGE(isavage_mode') + ifqstart = random:i(ifqcenter - (ifqcenter/2), ifqcenter + (ifqcenter / 2)) + ifqend = random:i(ifqcenter - (ifqcenter/2), ifqcenter + (ifqcenter / 2)) + kfq = expseg(ifqstart, p3, ifqend) + kfq = kfq + (ksavage * kfq) + ;aenv = expsegr:a(0.01, p3/8, 1.01, p3/8*7, 1.01, p3/4, 0.01) - a(0.01) + aenv = expsegr:a(0.01, p3, 1.01, p3/4, 0.01) - a(0.01) + ao = vco2(1, kfq) + afilt = K35_lpf(ao*aenv, kfq * 2, 7) * iamp * 0.3 + chnmix(afilt, "out1") + chnmix(afilt, "out2") +endin +maxalloc("glide", 12) + +opcode glide, 0, kkkkO + ktrig, kamp, knote, kdur, ksav xin + kdensity = 4 + kamp = limit:k(kamp, 0, 1) + kfq = mtof(limit:k(knote, 0, 100) + 20) + ktrig = limit:k(ktrig, 0, 1) + if(check_trig(ktrig) == 1) then + kcnt = 0 + while kcnt < kdensity do + schedulek("glide_impl", 0, to_tempo_dur(kdur), kamp * ktrig, kfq, ksav) + kcnt += 1 + od + endif +endop + +instr trumpet_impl + aenv = expseg:a(1.01, p3, 0.01) - a(0.01) + ;kff init p4 + kff = p4 + isavage_mode init p8 + $SAVAGE(isavage_mode') + kff = kff + (ksavage * kff) + ao = vco2(p5, kff + oscili:k(3, 0.1) ) * aenv + ;ao2 = vco2(p5 * 0.7, kff + oscili:k(20, 0.15) ) * aenv + ;ao3 = vco2(p5, kff * 1.9 + oscili:k(20, 0.15) ) * aenv + anul = a(0) + irnd = random:i(0.01, 0.2) + kml = (p6 == 1) ? 1 : 0 + kmb = (p6 == 2) ? 1 : 0 + kmh = (p6 == 3) ? 1 : 0 + af = spf(ao * kml, ao * kmb, ao * kmh, aenv * 500 + 400 + abs(oscili:k(1000, irnd)), p7) + af *= 0.2 + kpan = rspline(0, 1, 0.1, 2) + a1, a2 pan2 af, kpan + chnmix(a1, "out1") + chnmix(a2, "out2") +endin + +opcode ping, 0, kkkkO + ktrig, kamp, knote, kdur, ksav xin + kamp = limit:k(kamp, 0, 1) + kfq = mtof(limit:k(knote, 0, 100) + 20) + kdur = limit:k(kdur, 0.001, 1000) + if(check_trig(ktrig) == 1) then + schedulek("trumpet_impl", 0, to_tempo_dur(kdur), kfq, kamp, rint:k(1, 3), random:k(1, 4), ksav) + endif +endop + +instr wave_impl + ; pluck env + ;ares repluck iplk, kamp, icps, kpick, krefl, axcite + axcite init 1 + axcite = linseg:a(1, 0.01, 0) + krefl = 0.5 + kpick = 0.1 + icps = 400 + kamp = 1 + iplk = 0.8 + apluck = follow2(repluck(iplk, kamp, icps, kpick, krefl, axcite), 0.01, 0.05) + ; ares follow2 asig, katt, krel + isavage_mode init p6 + $SAVAGE(isavage_mode') + + ifq init p5 + iamp init p4 + + kfq1 = ifq + oscili:k(ifq / 100, rspline:k(0.01, 5, 1, 5)) + kfq1 = kfq1 + (kfq1 * ksavage) + kfq2 = (ifq * 0.99) + oscili:k(ifq / 100, rspline:k(0.01, 5, 1, 5)) + kfq2 = kfq2 + (kfq2 * ksavage) + ao = vco2(1/2, kfq1) + ao += vco2(1/2, kfq2, 12) + aenv = expsegr:a(0.01, p3/2, 1.01, p3/2, 1.01, p3, 0.01) - a(0.01) + kfb = 0.5 + adel = a(0.02) + ;adel = rspline:a(0.01, 0.2, 0.01, 0.2) + af = flanger(ao * aenv, adel, kfb) * iamp * 0.2 + kpan = rspline:k(0, 1, 0.1, 3) + a1, a2 pan2 af, kpan + chnmix(a1, "out1") + chnmix(a2, "out2") +endin + +opcode wave, 0, kkkkO + ktrig, kamp, knote, kdur, ksav xin + kfq = mtof(limit:k(knote, 0, 100) + 20) + kamp = limit:k(kamp, 0, 1) + ktrig = limit:k(ktrig, 0, 1) + kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) + if(check_trig(ktrig) == 1) then + schedulek("wave_impl", 0, kdur, kamp, kfq, ksav) + endif +endop + +instr pluck_impl + ; pluck env + ;ares repluck iplk, kamp, icps, kpick, krefl, axcite + aseg = linsegr:a(0, 0.01, 0.1, p3 - 0.01, 0.3, p3/4, 1) + aenv = tablei:a(aseg, 1, 1) + imult init p6 + iamp init p4 + inote init p5 + if(imult <= 0) then + imult = rint:i(1, 10) + endif + + isavage_mode init p7 + $SAVAGE(isavage_mode') + + ifq1 = mtof:i(inote + (imult * 0)); / ((1) * 2) + ifq2 = mtof:i(inote + (imult * 1)); / ((2) * 2) + ifq3 = mtof:i(inote + (imult * 2)); / ((3) * 2) + ifq4 = mtof:i(inote + (imult * 3)); / ((4) * 2) + + kfq1 = ifq1 + (ksavage * ifq1) + kfq2 = ifq2 + (ksavage * ifq2) + kfq3 = ifq3 + (ksavage * ifq3) + kfq4 = ifq4 + (ksavage * ifq4) + + + imult = 1 - (inote / 100) + imult *= (imult * imult) + imult = (imult * 15) + 5 + + aosc = vco2(1/4, kfq1) + vco2(1/4, kfq2) + vco2(1/2, kfq3) + vco2(1/4, kfq4) + aosc *= aenv + af = K35_lpf(aosc, limit:a(aenv * ifq1 * imult, 0, 10000), 7) * iamp * 0.5 + chnmix(af, "out1") + chnmix(af, "out2") +endin + + ; faire une table karplustrong + ; trouver une solution pour le "mult" (random ? init ? harmonie ? ) +opcode chord, 0, kkkkJO + ktrig, kamp, knote, kdur, kmult, ksav xin + ktrig = limit:k(ktrig, 0, 1) + kamp = limit:k(kamp ,0, 1) + knote = limit:k(knote, 0, 100) + 20 + kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) + kmult = limit:k(kmult, -1, 10) + if(check_trig(ktrig) == 1) then + schedulek("pluck_impl", 0, kdur, kamp, knote, kmult, ksav) + endif +endop + + +opcode funkymod, k, kkk + kamp, kfq, kduty xin + + ; 1 sine + ; 2 tri + ; 3 square + ; 4 saw up + ; 5 saw down + ; 6 pwm + iwave = rint:i(1, 6) + if(iwave == 3) then + iwave = 4 + elseif(iwave == 6) then + iwave = 5 + endif + + klf_amp = (iwave < 6) ? 1 : 0 + kpwm_amp = 1 - klf_amp + + klfo = lfo:k(kamp, kfq) + if(iwave < 3) then + klfo += kamp + klfo /= 2 + endif + + klfo *= klf_amp + + kpwm = vco2(kamp*0.5, kfq, 2, kduty) + (kamp * 0.5) + kpwm *= kpwm_amp + xout klfo + kpwm +endop + + +instr buzzy_impl + iwavet[] fillarray 0, 2, 4, 12 + iwavep = rint:i(0, lenarray(iwavet)-1) + iwave = iwavet[iwavep] + kpw = rspline(0, 1, 0.25, 4) + + ifq init p4 + kfq = ifq + rspline:k(-(ifq/1000), ifq/1000, 0.01, 0.3) + + isavage_mode init p6 + $SAVAGE(isavage_mode') + kfq = kfq + (kfq * ksavage) + + ao = vco2(0.3, kfq, iwave, kpw ) * (expseg(1.01, p3, 0.01) - 0.01) + + ahp,alp,abp,abr svn ao, kfq, 10, 0.5 + iamp init p5 + + ipick = rint:i(1, 4) + ihp = (ipick == 1) ? 1 : 0 + ilp = (ipick == 2) ? 1 : 0 + ibp = (ipick == 3) ? 1 : 0 + ibr = (ipick == 4) ? 1 : 0 + ares = (ahp * ihp) + (alp * ilp) + (abp * ibp) + (abr * ibr) + + imodfq = random:i(0.5, 4) + imodamp = random:i(0.2, 1) + kduty = rspline:k(0, 1, 0.2, 4) + kmod = funkymod(imodamp, imodfq, kduty) + ares = (ares * kmod) + (ares * (1 - imodamp)) + ares *= iamp + ipan = random:i(0, 1) + al, ar pan2 ares, ipan + outs al, ar +endin + + +opcode buzzy, 0, kkkkO + ktrig, kamp, knote, kdur, ksav xin + ktrig = limit:k(ktrig, 0, 1) + kamp = limit:k(kamp ,0, 1) + knote = limit:k(knote, 0, 100) + 20 + kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) + if(check_trig(ktrig) == 1) then + schedulek("buzzy_impl", 0, kdur, mtof:k(knote), kamp, ksav) + endif +endop + + +instr fnoise_impl + iamp init p5 + ifqmult init 4 + ifqoffset init p4 + + kcrv = expsegr:k(0.01, p3/4, 1.01, p3, 0.01) - 0.01 + + kres = kcrv * 0.7 + kcf = kcrv * ifqmult + ifqoffset + ao = noise(0.5, 0.5) * kcrv + ao *= kcrv + afilt = vclpf(ao, kcf, kres) + asig = afilt + + kpan = rspline:k(0, 1, 0.01, 0.4) + a1, a2 pan2 asig, kpan + outs a1, a2 +endin + +opcode noisy, 0, kkkk + ktrig, kamp, knote, kdur xin + ktrig = limit:k(ktrig, 0, 1) + kamp = limit:k(kamp ,0, 1) + knote = limit:k(knote, 0, 100) + 20 + kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) + if(check_trig(ktrig) == 1) then + schedulek("fnoise_impl", 0, kdur, mtof:k(knote), kamp) + endif +endop + +#define PI #3.141592653589793# + +opcode audio_ltone, a, a + ain xin + aout init 0 + kcnt = 0 + while kcnt < ksmps do + aout[kcnt] = (ain[kcnt] < 1) ? 1 : 0 + kcnt += 1 + od + xout aout +endop + +gipulsar_env = ftgen(0, 0, 16384, -16, 0, 682, -3.606, 0.99403, 4588, 3.8776, 0.47761, 11112, -6.1075, 0) + +instr pulsar_impl + ifq init p5 + iform_fq init p6 + isine_cycles init p7 + iamp init p4 + + aenv = tablei:a(linseg:a(0, p3, 1), gipulsar_env, 1) + + kform_fq = (iform_fq) + randomi:k(0, iform_fq / 10, 0.2) + + apulsaret_phase = phasor:a(ifq) * kform_fq / ifq + agate = audio_ltone(apulsaret_phase) ;(apulsaret_phase < 1) ? 1 : 0 + awin = pow(apulsaret_phase, 4) + asine = sin:a(apulsaret_phase * 2 * $PI * isine_cycles) * awin * agate + asine *= iamp * 0.7 * aenv + ipan = random:i(0.25, 0.75) + al, ar pan2 asine, ipan + outs al, ar +endin + +opcode pulsar, 0, kkkkkk + ktrig, kamp, knote, kdur, kformant_fq, ksine_cycles xin + ktrig = limit:k(ktrig, 0, 1) + kamp = limit:k(kamp ,0, 1) + knote = limit:k(knote, 0, 100) + 20 + kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) + + kformant_fq = limit:k(kformant_fq, 0, 10) * 150 + 300 + ksine_cycles = int(limit:k(ksine_cycles, 1, 10)) + if(check_trig(ktrig) == 1) then + schedulek("pulsar_impl", 0, kdur, kamp, mtof:k(knote), kformant_fq, ksine_cycles) + endif +endop + +gigraou_env = ftgen(0, 0, 16384, -16, 0, 185, -3.606, 1, 3125, 4.7463, 0.40746, 13072, -8.0925, 0) + +gaGraou[] init 2 +instr graou_out + afbl init 0 + afbr init 0 + al = gaGraou[0] + ar = gaGraou[1] + + imaxdel init 2000 + adL = randomi:a(100, 500, 0.1) + adR = randomi:a(125, 525, 0.1) + adelL = vdelay(al+afbl, adL, imaxdel) + adelR = vdelay(ar+afbr, adR, imaxdel) + ifb init 0.6 + afbl = adelL * ifb + afbr = adelR * ifb + gaGraou[0] = 0 + gaGraou[1] = 0 + outs al+adelL, ar+adelR +endin +schedule("graou_out", 0, -1) + +instr graou_impl + iamp init p4 + ifq init p5 + iQ init p6 + aosc = vco2:a(1, ifq) + kfilt_env = expseg:k(5000, p3, 50) + afilt = K35_lpf(aosc, kfilt_env, iQ) + aenv = tablei:a(linseg:a(0, p3, 1), gigraou_env, 1) + afilt *= aenv * iamp * 0.4 + + ipan = random:i(0.25, 0.75) + al, ar pan2 afilt, ipan + gaGraou[0] = gaGraou[0] + al + gaGraou[1] = gaGraou[1] + ar +endin + + +opcode piou, 0, kkkkk + ktrig, kamp, knote, kdur, kQ xin + ktrig = limit:k(ktrig, 0, 1) + kamp = limit:k(kamp ,0, 1) + knote = limit:k(knote, 0, 100) + 20 + kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) + kQ = limit:k(kQ, 1, 10) + + if(check_trig(ktrig) == 1) then + schedulek("graou_impl", 0, kdur, kamp, mtof:k(knote), kQ) + endif +endop + +instr smooth_wave_instr + inote init p4 + iamp init p5 + $FQ + acrv = transeg:a(0, p3/3, 3, 1, p3/3*2, -3, 0) + + ;acrv = tablei:a(linseg:a(0, p3, 1), icrv, 1) * linseg:a(0, p3/100, 1, p3/100*98, 1, p3/100, 0) + kvib = poscil:k( expseg:k(random:i(0, ifq/30), p3, random:i(0, ifq/30)), expseg:k(random:i(0.01, 10), p3, random:i(0.01, 10))) + asig = vco2(0.8, kfq + kvib, 10) + + abnd = bqrez:a(asig, kfq, 50, 3) + aout = balance(abnd, asig) * (acrv * iamp) + + ipan = random:i(0, 1) + aL, aR pan2 aout * gkgain, ipan + chnmix(aL, "out1") + chnmix(aR, "out2") +endin + +opcode buzzwave, 0, kkkkO + ktrig, kamp, knote, kdur, ksav xin + ktrig = limit:k(ktrig, 0, 1) + kamp = limit:k(kamp ,0, 1) + knote = limit:k(knote, 0, 100) + 20 + kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) + if(trigger:k(ktrig, 0.5, 0) == 1) then + schedulek("smooth_wave_instr", 0, kdur, knote, kamp, ksav) + endif +endop + +instr smooth_noise_instr + inote init p4 + iamp init p5 + + $FQ + + afb init 0 + + acrv = transeg:a(0, p3/3, 3, 1, p3/3*2, -3, 0) + kvib = oscili:k( expseg:k(random:i(0, ifq/30), p3, random:i(0, ifq/30)), expseg:k(random:i(0.1, 15), p3, random:i(0.1, 15))) + asig = pinker() + + kfreq = kfq + kvib + + abnd = bqrez:a( bqrez:a(asig, kfreq, 70, 2), kfreq * 2, 70, 2) + adist = distort1(abnd, 2, 1, 0.15, 0.15) + aout = balance(adist, asig) * (acrv * iamp) + + ;adel = abs(oscili:a(200, expseg:a(random:i(0.1, 15), p3, random:i(0.1, 15)))) + adelayed = vdelay3(aout + afb, a(100) , 1000) + afb = adelayed * 0.2 + + ares = (adelayed + aout) + ipan = random:i(0, 1) + aL, aR pan2 ares * 5 * gkgain, ipan + chnmix(aL, "out1") + chnmix(aR, "out2") +endin + +opcode noisywave, 0, kkkkO + ktrig, kamp, knote, kdur, ksav xin + ktrig = limit:k(ktrig, 0, 1) + kamp = limit:k(kamp ,0, 1) + knote = limit:k(knote, 0, 100) + 20 + kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) + if(trigger:k(ktrig, 0.5, 0) == 1) then + schedulek("smooth_noise_instr", 0, kdur, knote, kamp, ksav) + endif +endop + +; very chaotic nonlinear moving waveform & timber & modulation +instr crunchy_instr + inote init p4 + iamp init p5 + $FQ + + ao = vco2:a(iamp, kfq) + oscili:a(iamp * 0.5, kfq * 0.5) + afilt = K35_lpf(ao, abs(galorenz_x)*2000+100, abs(galorenz_z) * 5 + 1.05 ) + + kshape1 = 0.1;lag(abs( gklorenz_y) * 0.1, 1) + kshape2 = 0.1;lag(abs(gklorenz_z) * 0.1, 1) + kpregain = mirror:k(gklorenz_x * gklorenz_y, 0.03, 1) * 500 + kpostgain = 1 / limit:k(kpregain, .2, 25);0.1 + adist = lag(distort1(afilt, kpregain, kpostgain, kshape1, kshape2) , 0.003) + + aenv = (expseg:a(1.01, p3, 0.01) - a(0.01)) + adist *= aenv * iamp * 0.8 + kpan = gkmirlorenz_y + aL, aR pan2 adist * gkgain, kpan + chnmix(aL, "out1") + chnmix(aR, "out2") +endin + +opcode crunchy, 0, kkkkO + ktrig, kamp, knote, kdur, ksav xin + ktrig = limit:k(ktrig, 0, 1) + kamp = limit:k(kamp ,0, 1) + knote = limit:k(knote, 0, 100) + 20 + kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) + if(check_trig(ktrig) == 1) then + schedulek("crunchy_instr", 0, kdur, knote, kamp, ksav) + endif +endop + +instr crunchyslow_instr + inote init p4 + iamp init p5 + $FQ + ao = vco2:a(iamp, kfq) + oscili:a(iamp * 0.5, kfq * 0.5) + vco2(iamp*0.25, kfq * 3) + afilt = K35_lpf(ao, mirror:a(galorenz_x, 0, 1)*5000+100, abs(galorenz_z) * 5 + 1.05 ) + + kshape1 = 0.1;lag(abs( gklorenz_y) * 0.1, 1) + kshape2 = 0.1;lag(abs(gklorenz_z) * 0.1, 1) + kpregain = mirror:k(gklorenz_x * gklorenz_y, 0.03, 1) * 350 + ;kpostgain = 0.1 + kpostgain = 1 / limit:k(kpregain, .2, 25);0.1 + + adist = lag(distort1(afilt, kpregain, kpostgain, kshape1, kshape2) , 0.003) + + aenv = (expseg:a(0.01, p3/2, 1.01, p3/2, 0.01) - a(0.01)) + adist *= aenv * iamp + ipan_base = rint:i(0, 1) + kpan = gkmirlorenz_y + if(ipan_base > 0) then + kpan = 1 - kpan + endif + aL, aR pan2 adist * gkgain, kpan + chnmix(aL, "out1") + chnmix(aR, "out2") +endin + +opcode crunchy_wav, 0, kkkkO + ktrig, kamp, knote, kdur, ksav xin + ktrig = limit:k(ktrig, 0, 1) + kamp = limit:k(kamp ,0, 1) + knote = limit:k(knote, 0, 100) + 20 + kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) + if(check_trig(ktrig) == 1) then + schedulek("crunchyslow_instr", 0, kdur, knote, kamp, ksav) + endif +endop + +opcode darkwave, 0, kkkkO + ktrig, kamp, knote, kdur, ksav xin + crunchy_wav(ktrig, kamp, knote, kdur, ksav) +endop + +instr shinywave_instr + inote init p4 + iamp init p5 + $FQ + ao = vco2:a(iamp, kfq) + oscili:a(iamp * 0.5, kfq * 0.5) + vco2(iamp*0.45, kfq * 2) + vco2(iamp*0.3, kfq*3) + ;afilt = K35_lpf(ao, mirror:a(galorenz_x, 0, 1)*5000+100, abs(galorenz_z) * 5 + 1.05 ) + + kshape1 = 0;lag(abs( gklorenz_y) * 0.1, 1) + kshape2 = 0; lag(abs(gklorenz_z) * 0.1, 1) + kpregain = abs( lag( mirror:k(gklorenz_x * gklorenz_y, 0.03, 1) , 0.5) ) * 500 + kpostgain = 0.1 + adist = lag(distort1(ao, kpregain, kpostgain, kshape1, kshape2) , 0.003) + + aenv = (expsegr:a(0.01, p3, 1.01, 0.05, 0.01) - a(0.01)) + adist *= aenv * iamp * 0.7 + ipan_base = rint:i(0, 1) + kpan = gkmirlorenz_y + if(ipan_base > 0) then + kpan = 1 - kpan + endif + aL, aR pan2 adist * gkgain, kpan + chnmix(aL, "out1") + chnmix(aR, "out2") +endin + +opcode brightwave, 0, kkkkO + ktrig, kamp, knote, kdur, ksav xin + ktrig = limit:k(ktrig, 0, 1) + kamp = limit:k(kamp ,0, 1) + knote = limit:k(knote, 0, 100) + 20 + kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) + if(check_trig(ktrig) == 1) then + schedulek("shinywave_instr", 0, kdur, knote, kamp, ksav) + endif +endop + +; very chaotic nonlinear moving waveform & timber & modulation +instr glide_instr + inote init p4 + iamp init p5 + $FQ + + ibase = random:i(0.01, 0.4) * ifq + kglide = transeg:k(ibase, p3/4, -6, ifq) + (ksavage * ifq) + + ao = vco2:a(iamp, kglide) + oscili:a(iamp * 0.5, kglide * 0.5) + vco2(iamp * 0.3, kglide * 2, 10) + ;afilt = K35_lpf(ao, abs(galorenz_x)* 10000+500, abs(galorenz_z) * 3 + 1.05 ) + + kshape1 = lag(abs( gklorenz_y) * 0.1, 1) + kshape2 = lag(abs(gklorenz_z) * 0.1, 1) + kpregain = abs( lag( mirror:k(gklorenz_y * gklorenz_z, 0.03, 1) , 1) ) * 500 + kpostgain = 0.1 + adist = lag(distort1(ao, kpregain, kpostgain, kshape1, kshape2) , 0.003) + + aenv = (expseg:a(0.01, 0.02, 1.01, p3 - 0.02, 0.01) - a(0.01)) + adist *= aenv * iamp * 0.3 + kpan = gkmirlorenz_z ;mirror:a(abs(galorenz_y), 0, 1) + aL, aR pan2 adist * gkgain, kpan + chnmix(aL, "out1") + chnmix(aR, "out2") +endin + +opcode glidy, 0, kkkkO + ktrig, kamp, knote, kdur, ksav xin + ktrig = limit:k(ktrig, 0, 1) + kamp = limit:k(kamp ,0, 1) + knote = limit:k(knote, 0, 100) + 20 + kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) + if(check_trig(ktrig) == 1) then + schedulek("glide_instr", 0, kdur, knote, kamp, ksav) + endif +endop + +instr snare_impl + + idur init p3 ; Duration + idyn init p4 ; Amplitude + ifqc init p5 ; Pitch to frequency + irez init p6 ; Tone + ispdec init p7 ; Spring decay + ispton init p8 ; Spring tone + ispmix init p9 ; Spring mix + ispq init p10 ; Spring Q + ipbnd init p11 ; Pitch bend + ipbtm init p12 ; Pitch bend time + + + kdclk linseg 1, idur-.002, 1, .002, 0 ; Declick envelope + adyn linseg 1, .2/ifqc, 1, .2/ifqc, 0, idur-.002, 0 ; An amplitude pulse + kptch linseg 1, ipbtm, ipbnd, ipbtm, 1, .1, 1 + + aosc1 vco 1, ifqc, 2, 1, 1, 1 ; Use a pulse of the vco to stimulate the filters + aosc = -aosc1*adyn ; Multiply by the envelope pulse + aosc2 butterlp aosc, 12000 ; Lowpass at 12K to take the edge off + + asig1 moogvcf aosc, ifqc*kptch, .9*irez ; Moof filter with high resonance for basic drum tone + asig2 moogvcf aosc*.5, ifqc*2.1*kptch, .75*irez ; Sweeten with an overtone + + adynr expseg .1, .002, 1, .2, .005 + + apink1 pinkish 2, 0, 20;, iseed ; Use multi-rate pink noise + apink2 pinkish 2, 0, 20;, iseed ; Use multi-rate pink noise + + apink1 = apink1*2*asig1 + arndr1 delay apink1-apink2*.6, .01 + + ahp1l rezzy apink1+arndr1, 2700*ispton*kptch, 5*ispq, 1 ; High pass rezzy based at 2700 + ahp2l butterbp apink1, 2000*ispton*kptch, 500/ispq ; Generate an undertone + ahp3l butterbp apink1, 5400*ispton*kptch, 500/ispq ; Generate an overtone + ahpl pareq ahp1l+ahp2l*.7+ahp3l*.3, 15000, .1, .707, 2 ; Attenuate the highs a bit + + ; Mix drum tones, pulse and noise signal & declick + aoutl = (asig1+asig2+aosc2*.1+ahpl*ispmix*4)*idyn*kdclk + + isavage_mode init p13 + $SAVAGE(isavage_mode') + adelayed init 0 + kfb = mirror:k(abs(gklorenz_y) + 0.5, 0, 0.9) + adel = limit:a( interp( ( mirror:k( lineto(abs(ksavage), 0.1) , 0.2, 0.999 ) * 1000)), 0.01, 1000) + + adelayed = vdelay(aoutl + (adelayed * kfb), adel, 1500) + krel = linsegr:k(1, 1, 1, 1, 0) + + ksav_mult = (isavage_mode > 0) ? 1 : 0 + amix = (aoutl + (adelayed * ksav_mult)) * krel + + ;outall aoutl + chnmix(amix, "out1") + chnmix(amix, "out2") +endin + +opcode snare, 0, kkO + ktrig, kamp, ksav xin + ktrig = limit:k(ktrig, 0, 1) + kamp = limit:k(kamp ,0, 1) + if(check_trig(ktrig) == 1) then + ;i34 0.0 .5 30000 7.00 .5 .7 1 1 1 1 1.5 .1 + idur random 1/12, 1/8 ; Duration + kdyn = kamp ; random 1/9, 1/2 ; Amplitude + kfqc random 500, 400 ; Pitch to frequency + krez random 1/2, .95 ; Tone + kspdec random 1, 2 ; Spring decay + kspton random 1, 2 ; Spring tone + kspmix random 1/9, 1 ; Spring mix + kspq random 1/4, 2 ; Spring Q + kpbnd random 1, 2 ; Pitch bend + kpbtm random 1/32, 1/8 ; Pitch bend time + schedulek "snare_impl", 0, idur, kdyn, kfqc, krez, kspdec, kspton, kspmix, kspq, kpbnd, kpbtm, ksav + endif +endop + + + + + + + + + + + + + + +gawater[] init 2 +instr water_verb + a1 = gawater[0] + a2 = gawater[1] + + aL, aR freeverb a1, a2, 0.8, 0.8, 48000 + aenv = linsegr:a(0, 1, 1, 1, 0) + aL *= aenv + aR *= aenv + aL = dcblock2(aL) + aR = dcblock2(aR) + outs aL*0.4, aR*0.4 + + gawater[0] = 0 + gawater[1] = 1 +endin +maxalloc("water_verb", 1) +schedule("water_verb", 0, -1) + +instr water_impl + + imaxshake = p4 + ifreq = p5 + ifreq1 = p6 + ifreq2 = p7 + + iamp init p8 + ipos init p9 + ;low amplitude + adrp dripwater .1, 0.09, 15, .9, imaxshake, ifreq, ifreq1, ifreq2 + asig clip adrp, 2, 0.9 ; avoid drips that drip too loud + ;asig = mirror(adrp, -0.9, 0.9) + asig *= (0.3 * iamp) + + a1, a2 pan2 asig, ipos + gawater[0] = gawater[0] + a1 + gawater[1] = gawater[1] + a2 + outs a1, a2 + +endin + +opcode water_drop, 0, kkk + kamp, kspeed, kshake xin + + kshake = limit:k(kshake, 0, 1) + ipos = random:i(0, 1) + kamp = limit:k(kamp, 0, 1) + kspeed = limit:k(kspeed, 0.001, 1)*15 + + kmet = drunk(kspeed, 0.7) + if(kmet == 1) then + kfq1 = random:k(380, 500) ;430 + kfq2 = random:k(900, 1200) ; 1000 + kfq3 = random:k(700, 880) ;800 + schedulek("water_impl", 0, 0.5, kshake, kfq1, kfq2, kfq3, kamp, ipos) + endif +endop + +instr ks_impl + ;ares pluck kamp, kcps, icps, ifn, imeth [, iparm1] [, iparm2] + inote init p4 + ;iamp init p5 + kamp init p5 + icps = mtof:i(inote) + kcps = icps + ifn init 0 + imeth init 1 + iparm1 = .001 + iparm2 = 10 + asig = pluck(kamp, kcps, icps, ifn, imeth, iparm1) + imod_div = rint:i(1, 4) * 2 + amod = pluck(1, kcps/imod_div, icps/imod_div, ifn, imeth, iparm1) + ares = asig * (a(0.5) - amod) + + kpregain = 2 + kpostgain = 0.25 + kshape1 = 0 + kshape2 = 0 + imode = 3 + ;adist distort1 ares, kpregain, kpostgain, kshape1, kshape2, imode + adist = pdclip(ares*10, .5, 0.6) + ablock = dcblock2(adist) + adist = balance(adist, ares) * kamp + + + ipan = random:i(0, 1) + al, ar pan2 ablock, ipan + chnmix(al, "out1") + chnmix(ar, "out2") +endin + +opcode strike, 0, kkkk + ktrig, kamp, knote, kdur xin + ktrig = limit:k(ktrig, 0, 1) + kamp = limit:k(kamp ,0, 1) + knote = limit:k(knote, 0, 100) + 20 + kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) + if(check_trig(ktrig) == 1) then + schedulek("ks_impl", 0, kdur, knote, kamp) + endif +endop + + +instr vibish_impl + inote init p4 + iamp init p5 + + kadd1 = rspline:k(-0.45, 0.28, 0.2, 1) + kfq1 = mtof:k(inote+kadd1) + kadd2 = rspline:k(-0.45, 0.35, 0.3, 1) + kfq2 = mtof:k(inote+kadd2) + + iadd1 = random:i(.1, 6) + iadd2 = random:i(.1, 8) + + iprop1 = random:i(0.1, 0.9) + iprop1_inv = 1 - iprop1 + idest1 = random:i(0.3, 0.75) + kclipenv1 = cosseg:k(0, iprop1 * p3, idest1, iprop1_inv * p3, 0) + + iprop2 = random:i(0.1, 0.9) + iprop2_inv = 1 - iprop1 + idest2 = random:i(0.3, 0.75) + kclipenv2 = cosseg:k(0, iprop2 * p3, idest2, iprop2_inv * p3, 0) + + ao1 = pdclip(oscili(iamp, kfq2) + oscili(iamp, kfq1 + iadd1), kclipenv1, -0.5) + ao2 = pdclip(oscili(iamp, kfq2) + oscili(iamp, kfq2 + iadd2), kclipenv2, -0.5) + aenv = cossegr:a(0, p3/2, 1, p3/2, 0.05, p3/4, 0) + + ao1 *= aenv * iamp + ao2 *= aenv * iamp + chnmix(ao1, "out1") + chnmix(ao2, "out2") +endin + +opcode smooth, 0, kkkk + ktrig, kamp, knote, kdur xin + ktrig = limit:k(ktrig, 0, 1) + kamp = limit:k(kamp ,0, 1) + knote = limit:k(knote, 0, 100) + 20 + kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) + if(check_trig(ktrig) == 1) then + schedulek("vibish_impl", 0, kdur, knote, kamp) + endif +endop + + +instr bounce_impl + inote init p4 + iamp init p5 + + ifq1 = mtof:i(inote) + random:i(-3, 2) + ifq2 = mtof:i(inote) + random:i(-3, 2) + ao1= vco2(iamp, ifq1) + ao2= vco2(iamp, ifq2) + + ao1 *= ao2 + ao2 *= ao1 + + kramp1 = expseg:k(random:i(0.1, 10), p3, random:i(0.1, 10)) + kramp2 = expseg:k(random:i(0.1, 10), p3, random:i(0.1, 10)) + kmod1 = pow(abs(lfo(0.3, kramp1, 5)), 5) + kmod2 = pow(abs(lfo(0.3, kramp2, 5)), 5) + + ao1 *= 1 - kmod1 + ao2 *= 1 - kmod2 + + aenv = cosseg:a(1, p3, 0) + + ao1 *= aenv + ao2 *= aenv + kphfq1 = rspline:k(100, 2000, .5, 3) + kphfq2 = rspline:k(200, 1800, .6, 3.3) + kphq = random:i(0.5, 0.9) + kmode init 1 + kord init 4 + ksep init 2 + kfb = 0.7 + + aph1 = phaser2(ao1, kphfq1, kphq, kord, kmode, ksep, kfb) * 0.4 + aph2 = phaser2(ao1, kphfq2, kphq, kord, kmode, ksep, kfb) * 0.4 + + chnmix(aph1*iamp, "out1") + chnmix(aph2*iamp, "out2") +endin + +opcode bounce, 0, kkkk + ktrig, kamp, knote, kdur xin + ktrig = limit:k(ktrig, 0, 1) + kamp = limit:k(kamp ,0, 1) + knote = limit:k(knote, 0, 100) + 20 + kdur = to_tempo_dur(limit:k(kdur, 0.001, 1000)) + if(check_trig(ktrig) == 1) then + schedulek("bounce_impl", 0, kdur, knote, kamp) + endif +endop + diff --git a/src/App.svelte b/src/App.svelte index be2db73..1b850ee 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -299,11 +299,11 @@ {/snippet} diff --git a/src/lib/components/editor/EditorSettings.svelte b/src/lib/components/editor/EditorSettings.svelte index dd19949..89d7a92 100644 --- a/src/lib/components/editor/EditorSettings.svelte +++ b/src/lib/components/editor/EditorSettings.svelte @@ -1,6 +1,7 @@
+
+ +
+