@jpdutoit/squelchy 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -3
- package/{chunk-NDUSYSHF.js → chunk-MEZE4P3U.js} +5 -5
- package/chunk-MEZE4P3U.js.map +7 -0
- package/docs/GUIDE.md +29 -7
- package/docs/MODULES.md +6 -6
- package/docs/modules.json +10 -10
- package/index.d.ts +7 -241
- package/index.js +68 -260
- package/index.js.map +4 -4
- package/kits/compu-78/bd.flac +0 -0
- package/kits/compu-78/ch.flac +0 -0
- package/kits/compu-78/clap.flac +0 -0
- package/kits/compu-78/cym.flac +0 -0
- package/kits/compu-78/ht.flac +0 -0
- package/kits/compu-78/lt.flac +0 -0
- package/kits/compu-78/mt.flac +0 -0
- package/kits/compu-78/oh.flac +0 -0
- package/kits/compu-78/perc.flac +0 -0
- package/kits/compu-78/rim.flac +0 -0
- package/kits/compu-78/sd.flac +0 -0
- package/kits/compu-78.d.ts +7 -0
- package/kits/compu-78.js +22 -0
- package/kits/deep-analogue/bd.flac +0 -0
- package/kits/deep-analogue/ch.flac +0 -0
- package/kits/deep-analogue/clap.flac +0 -0
- package/kits/deep-analogue/cym.flac +0 -0
- package/kits/deep-analogue/ht.flac +0 -0
- package/kits/deep-analogue/lt.flac +0 -0
- package/kits/deep-analogue/mt.flac +0 -0
- package/kits/deep-analogue/oh.flac +0 -0
- package/kits/deep-analogue/perc.flac +0 -0
- package/kits/deep-analogue/rim.flac +0 -0
- package/kits/deep-analogue/sd.flac +0 -0
- package/kits/deep-analogue.d.ts +7 -0
- package/kits/deep-analogue.js +22 -0
- package/kits/dr5-studio/bd.flac +0 -0
- package/kits/dr5-studio/ch.flac +0 -0
- package/kits/dr5-studio/clap.flac +0 -0
- package/kits/dr5-studio/cym.flac +0 -0
- package/kits/dr5-studio/ht.flac +0 -0
- package/kits/dr5-studio/lt.flac +0 -0
- package/kits/dr5-studio/mt.flac +0 -0
- package/kits/dr5-studio/oh.flac +0 -0
- package/kits/dr5-studio/perc.flac +0 -0
- package/kits/dr5-studio/rim.flac +0 -0
- package/kits/dr5-studio/sd.flac +0 -0
- package/kits/dr5-studio.d.ts +7 -0
- package/kits/dr5-studio.js +22 -0
- package/kits/hard-cell/bd.flac +0 -0
- package/kits/hard-cell/ch.flac +0 -0
- package/kits/hard-cell/clap.flac +0 -0
- package/kits/hard-cell/cym.flac +0 -0
- package/kits/hard-cell/ht.flac +0 -0
- package/kits/hard-cell/lt.flac +0 -0
- package/kits/hard-cell/mt.flac +0 -0
- package/kits/hard-cell/oh.flac +0 -0
- package/kits/hard-cell/perc.flac +0 -0
- package/kits/hard-cell/rim.flac +0 -0
- package/kits/hard-cell/sd.flac +0 -0
- package/kits/hard-cell.d.ts +7 -0
- package/kits/hard-cell.js +22 -0
- package/kits/micro-click/bd.flac +0 -0
- package/kits/micro-click/ch.flac +0 -0
- package/kits/micro-click/clap.flac +0 -0
- package/kits/micro-click/cym.flac +0 -0
- package/kits/micro-click/ht.flac +0 -0
- package/kits/micro-click/lt.flac +0 -0
- package/kits/micro-click/mt.flac +0 -0
- package/kits/micro-click/oh.flac +0 -0
- package/kits/micro-click/perc.flac +0 -0
- package/kits/micro-click/rim.flac +0 -0
- package/kits/micro-click/sd.flac +0 -0
- package/kits/micro-click.d.ts +7 -0
- package/kits/micro-click.js +22 -0
- package/kits/roland-808/bd.flac +0 -0
- package/kits/roland-808/ch.flac +0 -0
- package/kits/roland-808/clap.flac +0 -0
- package/kits/roland-808/cym.flac +0 -0
- package/kits/roland-808/ht.flac +0 -0
- package/kits/roland-808/lt.flac +0 -0
- package/kits/roland-808/mt.flac +0 -0
- package/kits/roland-808/oh.flac +0 -0
- package/kits/roland-808/perc.flac +0 -0
- package/kits/roland-808/rim.flac +0 -0
- package/kits/roland-808/sd.flac +0 -0
- package/kits/roland-808.d.ts +7 -0
- package/kits/roland-808.js +22 -0
- package/kits/rx5-fm/bd.flac +0 -0
- package/kits/rx5-fm/ch.flac +0 -0
- package/kits/rx5-fm/clap.flac +0 -0
- package/kits/rx5-fm/cym.flac +0 -0
- package/kits/rx5-fm/ht.flac +0 -0
- package/kits/rx5-fm/lt.flac +0 -0
- package/kits/rx5-fm/mt.flac +0 -0
- package/kits/rx5-fm/oh.flac +0 -0
- package/kits/rx5-fm/perc.flac +0 -0
- package/kits/rx5-fm/rim.flac +0 -0
- package/kits/rx5-fm/sd.flac +0 -0
- package/kits/rx5-fm.d.ts +7 -0
- package/kits/rx5-fm.js +22 -0
- package/kits/tape-dust/bd.flac +0 -0
- package/kits/tape-dust/ch.flac +0 -0
- package/kits/tape-dust/clap.flac +0 -0
- package/kits/tape-dust/cym.flac +0 -0
- package/kits/tape-dust/ht.flac +0 -0
- package/kits/tape-dust/lt.flac +0 -0
- package/kits/tape-dust/mt.flac +0 -0
- package/kits/tape-dust/oh.flac +0 -0
- package/kits/tape-dust/perc.flac +0 -0
- package/kits/tape-dust/rim.flac +0 -0
- package/kits/tape-dust/sd.flac +0 -0
- package/kits/tape-dust.d.ts +7 -0
- package/kits/tape-dust.js +22 -0
- package/kits/tr-606/bd.flac +0 -0
- package/kits/tr-606/ch.flac +0 -0
- package/kits/tr-606/cym.flac +0 -0
- package/kits/tr-606/ht.flac +0 -0
- package/kits/tr-606/lt.flac +0 -0
- package/kits/tr-606/mt.flac +0 -0
- package/kits/tr-606/oh.flac +0 -0
- package/kits/tr-606/sd.flac +0 -0
- package/kits/tr-606.d.ts +7 -0
- package/kits/tr-606.js +19 -0
- package/kits/tr-707/bd.flac +0 -0
- package/kits/tr-707/ch.flac +0 -0
- package/kits/tr-707/clap.flac +0 -0
- package/kits/tr-707/cym.flac +0 -0
- package/kits/tr-707/ht.flac +0 -0
- package/kits/tr-707/lt.flac +0 -0
- package/kits/tr-707/mt.flac +0 -0
- package/kits/tr-707/oh.flac +0 -0
- package/kits/tr-707/perc.flac +0 -0
- package/kits/tr-707/rim.flac +0 -0
- package/kits/tr-707/sd.flac +0 -0
- package/kits/tr-707.d.ts +7 -0
- package/kits/tr-707.js +22 -0
- package/kits/tr-909/bd.flac +0 -0
- package/kits/tr-909/ch.flac +0 -0
- package/kits/tr-909/clap.flac +0 -0
- package/kits/tr-909/cym.flac +0 -0
- package/kits/tr-909/ht.flac +0 -0
- package/kits/tr-909/lt.flac +0 -0
- package/kits/tr-909/mt.flac +0 -0
- package/kits/tr-909/oh.flac +0 -0
- package/kits/tr-909/perc.flac +0 -0
- package/kits/tr-909/rim.flac +0 -0
- package/kits/tr-909/sd.flac +0 -0
- package/kits/tr-909.d.ts +7 -0
- package/kits/tr-909.js +22 -0
- package/meta.json +16 -16
- package/package.json +6 -1
- package/{worklets-inline-MUVFLGPY.js → worklets-inline-DFWINMCS.js} +2 -2
- package/chunk-NDUSYSHF.js.map +0 -7
- /package/{worklets-inline-MUVFLGPY.js.map → worklets-inline-DFWINMCS.js.map} +0 -0
package/index.js
CHANGED
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
tape_stop_default,
|
|
21
21
|
vca_default,
|
|
22
22
|
waveshaper_default
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-MEZE4P3U.js";
|
|
24
24
|
|
|
25
25
|
// src/lib-runtime/core.ts
|
|
26
26
|
var pendingSources = {};
|
|
@@ -28,7 +28,7 @@ var registrations = /* @__PURE__ */ new WeakMap();
|
|
|
28
28
|
function preload(ctx, opts) {
|
|
29
29
|
const existing = registrations.get(ctx);
|
|
30
30
|
if (existing) return existing;
|
|
31
|
-
const sources = opts?.allWorklets ? import("./worklets-inline-
|
|
31
|
+
const sources = opts?.allWorklets ? import("./worklets-inline-DFWINMCS.js").then((m) => m.WORKLET_SOURCES) : Promise.resolve(pendingSources);
|
|
32
32
|
const promise = sources.then(
|
|
33
33
|
(map) => Promise.all(Object.entries(map).map(async ([name, src]) => {
|
|
34
34
|
const url = URL.createObjectURL(new Blob([src], { type: "text/javascript" }));
|
|
@@ -566,17 +566,12 @@ var VOICE_FALLBACKS = {
|
|
|
566
566
|
};
|
|
567
567
|
|
|
568
568
|
// src/lib-runtime/samples.ts
|
|
569
|
-
var DEFAULT_SAMPLE_BASE_URL = "https://squelchy.studio";
|
|
570
|
-
function defineSampleSets(sets) {
|
|
571
|
-
return sets;
|
|
572
|
-
}
|
|
573
569
|
async function loadSampleSet(ctx, set, opts = {}) {
|
|
574
|
-
const base = opts.baseUrl ?? DEFAULT_SAMPLE_BASE_URL;
|
|
575
570
|
const f = opts.fetch ?? fetch;
|
|
576
571
|
const buffers = {};
|
|
577
572
|
await Promise.all(
|
|
578
|
-
Object.entries(set.voices).map(async ([key,
|
|
579
|
-
const res = await f(
|
|
573
|
+
Object.entries(set.voices).map(async ([key, url]) => {
|
|
574
|
+
const res = await f(url);
|
|
580
575
|
if (!res.ok) throw new Error(`loadSampleSet: ${key} ${res.status}`);
|
|
581
576
|
buffers[key] = await ctx.decodeAudioData(await res.arrayBuffer());
|
|
582
577
|
})
|
|
@@ -616,238 +611,6 @@ var SampleVoice = {
|
|
|
616
611
|
}
|
|
617
612
|
};
|
|
618
613
|
|
|
619
|
-
// src/lib-runtime/generated/sample-sets.ts
|
|
620
|
-
var SampleSets = /* @__PURE__ */ defineSampleSets({
|
|
621
|
-
"roland-808": {
|
|
622
|
-
"name": "Roland TR-808",
|
|
623
|
-
"blurb": "The original machine, sampled from hardware. Deep sub kick, ticking hats.",
|
|
624
|
-
"family": "Machines",
|
|
625
|
-
"credit": "Michael Fischer / Technopolis TR-808 sample set, released to the public domain",
|
|
626
|
-
"license": "CC0 1.0 / public domain \u2014 free to use, no attribution required",
|
|
627
|
-
"licenseUrl": "https://creativecommons.org/publicdomain/zero/1.0/",
|
|
628
|
-
"voices": {
|
|
629
|
-
"bd": "/__l5e/assets-v1/c4b2fc55-dcf1-4248-a7fb-2cd3653a659b/roland-808-bd.flac",
|
|
630
|
-
"ch": "/__l5e/assets-v1/c1ec3b3d-571f-46a6-9d05-12b2fe5f6fc5/roland-808-ch.flac",
|
|
631
|
-
"clap": "/__l5e/assets-v1/8bd15e4b-96b7-46b6-b26a-35283c816f1e/roland-808-clap.flac",
|
|
632
|
-
"cym": "/__l5e/assets-v1/033f0719-913a-4a7a-998e-92a7319d806f/roland-808-cym.flac",
|
|
633
|
-
"ht": "/__l5e/assets-v1/ca555782-7544-446a-a461-9b56b4d30072/roland-808-ht.flac",
|
|
634
|
-
"lt": "/__l5e/assets-v1/8e100e1c-3844-42aa-bbe7-9eb52b9d704e/roland-808-lt.flac",
|
|
635
|
-
"mt": "/__l5e/assets-v1/93dd309f-9347-4ea1-909f-56196b08dc88/roland-808-mt.flac",
|
|
636
|
-
"oh": "/__l5e/assets-v1/4881941c-b558-4159-babd-fe224b0f1543/roland-808-oh.flac",
|
|
637
|
-
"perc": "/__l5e/assets-v1/d13076b5-50ca-4675-9d4e-70afd6e6203d/roland-808-perc.flac",
|
|
638
|
-
"rim": "/__l5e/assets-v1/ce82e0e9-402d-4a5e-bf01-59dfb922d1ba/roland-808-rim.flac",
|
|
639
|
-
"sd": "/__l5e/assets-v1/67a799c9-e019-442b-8025-99d69bc493b9/roland-808-sd.flac"
|
|
640
|
-
}
|
|
641
|
-
},
|
|
642
|
-
"tr-909": {
|
|
643
|
-
"name": "Roland TR-909",
|
|
644
|
-
"blurb": "Punchy transistor kick, snappy sampled snare, sizzling metal hats. House and techno.",
|
|
645
|
-
"family": "Machines",
|
|
646
|
-
"credit": "MckAudio TR8 sample pack, dedicated to the public domain (CC0)",
|
|
647
|
-
"license": "CC0 1.0 / public domain \u2014 free to use, no attribution required",
|
|
648
|
-
"licenseUrl": "https://creativecommons.org/publicdomain/zero/1.0/",
|
|
649
|
-
"voices": {
|
|
650
|
-
"bd": "/__l5e/assets-v1/fd3911bb-6783-4db6-bee2-bb8c5a589f26/tr-909-bd.flac",
|
|
651
|
-
"ch": "/__l5e/assets-v1/6f795c20-fb89-4cd5-b696-3a505d487baa/tr-909-ch.flac",
|
|
652
|
-
"clap": "/__l5e/assets-v1/7b1ccf8e-0dd6-4189-82d7-03a910e895f2/tr-909-clap.flac",
|
|
653
|
-
"cym": "/__l5e/assets-v1/f0d5ce25-3238-4e89-bb09-f5b7118fa0a7/tr-909-cym.flac",
|
|
654
|
-
"ht": "/__l5e/assets-v1/5f9b4c37-25a7-492c-aaed-f7fe24fbfe2c/tr-909-ht.flac",
|
|
655
|
-
"lt": "/__l5e/assets-v1/8477dddd-b9ed-4957-9a48-b5501bc77056/tr-909-lt.flac",
|
|
656
|
-
"mt": "/__l5e/assets-v1/92d461e5-d74a-4ba2-a899-4dea1ad06d13/tr-909-mt.flac",
|
|
657
|
-
"oh": "/__l5e/assets-v1/20c51259-d8d1-4ee3-a1d6-e850c3227b1a/tr-909-oh.flac",
|
|
658
|
-
"perc": "/__l5e/assets-v1/147d346e-9ae7-4413-a50a-de4f03ef7342/tr-909-perc.flac",
|
|
659
|
-
"rim": "/__l5e/assets-v1/0c9f157d-1329-4804-aa12-6819651d69fb/tr-909-rim.flac",
|
|
660
|
-
"sd": "/__l5e/assets-v1/bd8069c2-e07c-4d5c-b05a-fb5b9a31eadb/tr-909-sd.flac"
|
|
661
|
-
}
|
|
662
|
-
},
|
|
663
|
-
"tr-707": {
|
|
664
|
-
"name": "Roland TR-707",
|
|
665
|
-
"blurb": "Twelve-bit sampled kit with early-digital crunch. Big eighties snare and claps.",
|
|
666
|
-
"family": "Machines",
|
|
667
|
-
"credit": "MckAudio TR8 sample pack, dedicated to the public domain (CC0)",
|
|
668
|
-
"license": "CC0 1.0 / public domain \u2014 free to use, no attribution required",
|
|
669
|
-
"licenseUrl": "https://creativecommons.org/publicdomain/zero/1.0/",
|
|
670
|
-
"voices": {
|
|
671
|
-
"bd": "/__l5e/assets-v1/825b2c7c-5c5f-411c-8191-306549ee26f2/tr-707-bd.flac",
|
|
672
|
-
"ch": "/__l5e/assets-v1/6b35b393-7e9c-462d-8d2f-dc834417062b/tr-707-ch.flac",
|
|
673
|
-
"clap": "/__l5e/assets-v1/efbe819a-b13e-4bf2-a6bd-9bc15a09ff3f/tr-707-clap.flac",
|
|
674
|
-
"cym": "/__l5e/assets-v1/4a34902b-8592-46d8-b339-05a0648cac4f/tr-707-cym.flac",
|
|
675
|
-
"ht": "/__l5e/assets-v1/e58beee9-45e5-4b65-af99-a05fcb96f55b/tr-707-ht.flac",
|
|
676
|
-
"lt": "/__l5e/assets-v1/a0d6f499-4af6-4d34-96de-5ad7c2397229/tr-707-lt.flac",
|
|
677
|
-
"mt": "/__l5e/assets-v1/6c4bd12b-78ff-4f70-863b-cd482f684eb6/tr-707-mt.flac",
|
|
678
|
-
"oh": "/__l5e/assets-v1/c07159f3-d763-4698-a786-aeae60d38ac9/tr-707-oh.flac",
|
|
679
|
-
"perc": "/__l5e/assets-v1/2f8cffcb-8e86-4f65-99db-a705727ed3ab/tr-707-perc.flac",
|
|
680
|
-
"rim": "/__l5e/assets-v1/3d6445b1-38bd-4e9f-b048-db8c079b3c03/tr-707-rim.flac",
|
|
681
|
-
"sd": "/__l5e/assets-v1/aaf70dd8-c740-4b05-9369-feb80f3e26be/tr-707-sd.flac"
|
|
682
|
-
}
|
|
683
|
-
},
|
|
684
|
-
"tr-606": {
|
|
685
|
-
"name": "Roland TR-606",
|
|
686
|
-
"blurb": "Tiny Drumatix voices \u2014 thin kick, spitty snare, ticking hats. Perfect with a 303.",
|
|
687
|
-
"family": "Machines",
|
|
688
|
-
"credit": "MckAudio TR8 sample pack, dedicated to the public domain (CC0)",
|
|
689
|
-
"license": "CC0 1.0 / public domain \u2014 free to use, no attribution required",
|
|
690
|
-
"licenseUrl": "https://creativecommons.org/publicdomain/zero/1.0/",
|
|
691
|
-
"voices": {
|
|
692
|
-
"bd": "/__l5e/assets-v1/f46ec897-9319-4c25-b63b-74df979de508/tr-606-bd.flac",
|
|
693
|
-
"ch": "/__l5e/assets-v1/f4c57254-c711-43b0-82c6-52b011e205ba/tr-606-ch.flac",
|
|
694
|
-
"cym": "/__l5e/assets-v1/db524ec1-36d3-43db-bfc4-fd84a1ddd2ac/tr-606-cym.flac",
|
|
695
|
-
"ht": "/__l5e/assets-v1/74b486cf-c1f1-45c7-bd2a-4fd0c3794e1a/tr-606-ht.flac",
|
|
696
|
-
"lt": "/__l5e/assets-v1/6b1a564f-6388-40c1-8028-3ea9b6824256/tr-606-lt.flac",
|
|
697
|
-
"mt": "/__l5e/assets-v1/d871a86a-fcc8-45a6-b5a4-83977a689593/tr-606-mt.flac",
|
|
698
|
-
"oh": "/__l5e/assets-v1/a4c607d2-d62c-49b5-ac99-549fd6262468/tr-606-oh.flac",
|
|
699
|
-
"sd": "/__l5e/assets-v1/2062f1d4-e34f-406f-911b-2eb2ec523a89/tr-606-sd.flac"
|
|
700
|
-
}
|
|
701
|
-
},
|
|
702
|
-
"compu-78": {
|
|
703
|
-
"name": "Compu-78",
|
|
704
|
-
"blurb": "Tiny, dry preset-box percussion. Bossa nova organ rhythm energy.",
|
|
705
|
-
"family": "Machines",
|
|
706
|
-
"credit": "Synthesised for Squelchy",
|
|
707
|
-
"license": "CC0 1.0 / public domain \u2014 free to use, no attribution required",
|
|
708
|
-
"licenseUrl": "https://creativecommons.org/publicdomain/zero/1.0/",
|
|
709
|
-
"voices": {
|
|
710
|
-
"bd": "/__l5e/assets-v1/150a91e2-8b92-40f2-80e0-10b30f10976b/compu-78-bd.flac",
|
|
711
|
-
"ch": "/__l5e/assets-v1/da9dcfc4-5f29-43b9-979f-9679edeb09ed/compu-78-ch.flac",
|
|
712
|
-
"clap": "/__l5e/assets-v1/f3b5d485-44bc-4b34-b2bc-d37f436dffc2/compu-78-clap.flac",
|
|
713
|
-
"cym": "/__l5e/assets-v1/627db2bf-08d5-4054-8de9-b8ec0ca4436a/compu-78-cym.flac",
|
|
714
|
-
"ht": "/__l5e/assets-v1/1323f20c-3c98-45fb-abd1-e4b1e4be158f/compu-78-ht.flac",
|
|
715
|
-
"lt": "/__l5e/assets-v1/ba67ce5c-3f01-4e1b-9fd8-a96bb5428cf4/compu-78-lt.flac",
|
|
716
|
-
"mt": "/__l5e/assets-v1/f8cd42d6-2f98-4e9d-9428-ba091ec125cf/compu-78-mt.flac",
|
|
717
|
-
"oh": "/__l5e/assets-v1/b4a1d5b2-0022-4f1b-ac52-1618ba03ea67/compu-78-oh.flac",
|
|
718
|
-
"perc": "/__l5e/assets-v1/55e15a92-ba17-48cb-aec0-47e5198f073f/compu-78-perc.flac",
|
|
719
|
-
"rim": "/__l5e/assets-v1/698aaf24-8e84-4b3b-8f13-dc95f2b3f157/compu-78-rim.flac",
|
|
720
|
-
"sd": "/__l5e/assets-v1/41357245-d767-410e-8415-08dbb9e7503e/compu-78-sd.flac"
|
|
721
|
-
}
|
|
722
|
-
},
|
|
723
|
-
"dr5-studio": {
|
|
724
|
-
"name": "Studio Kit",
|
|
725
|
-
"blurb": "Acoustic drums in a small dry room. Skin, air and a little ambience.",
|
|
726
|
-
"family": "Acoustic",
|
|
727
|
-
"credit": "MckAudio DR5 sample pack, dedicated to the public domain (CC0)",
|
|
728
|
-
"license": "CC0 1.0 / public domain \u2014 free to use, no attribution required",
|
|
729
|
-
"licenseUrl": "https://creativecommons.org/publicdomain/zero/1.0/",
|
|
730
|
-
"voices": {
|
|
731
|
-
"bd": "/__l5e/assets-v1/9bc4c40f-432c-4fd1-98f8-dc3343b5dd31/dr5-studio-bd.flac",
|
|
732
|
-
"ch": "/__l5e/assets-v1/862411a4-6d87-45e7-a3a2-2c4062f8e79b/dr5-studio-ch.flac",
|
|
733
|
-
"clap": "/__l5e/assets-v1/2feebc4f-49d2-4ea0-9b5a-890059c24a9c/dr5-studio-clap.flac",
|
|
734
|
-
"cym": "/__l5e/assets-v1/5abff1b5-b403-403b-b681-9ac37a394442/dr5-studio-cym.flac",
|
|
735
|
-
"ht": "/__l5e/assets-v1/4e6883a5-e310-4035-a6ae-ee4033c7a0a1/dr5-studio-ht.flac",
|
|
736
|
-
"lt": "/__l5e/assets-v1/faf35ae9-f89f-4ceb-ad5e-c562dd5d261a/dr5-studio-lt.flac",
|
|
737
|
-
"mt": "/__l5e/assets-v1/4b923b44-9e79-4aa0-a9ef-4178a9f0279b/dr5-studio-mt.flac",
|
|
738
|
-
"oh": "/__l5e/assets-v1/5a5e6d0c-4c8f-4dc5-9dea-55f90083a55a/dr5-studio-oh.flac",
|
|
739
|
-
"perc": "/__l5e/assets-v1/8d286dd0-4201-49f6-9738-0a39e3a3d860/dr5-studio-perc.flac",
|
|
740
|
-
"rim": "/__l5e/assets-v1/1d139e86-288e-48bd-baba-f7d2502271a5/dr5-studio-rim.flac",
|
|
741
|
-
"sd": "/__l5e/assets-v1/eb7b02d6-7063-4350-9515-40010dd583cb/dr5-studio-sd.flac"
|
|
742
|
-
}
|
|
743
|
-
},
|
|
744
|
-
"tape-dust": {
|
|
745
|
-
"name": "Tape Dust",
|
|
746
|
-
"blurb": "Wobbly, hissy and rolled-off. Everything through a tired cassette.",
|
|
747
|
-
"family": "Character",
|
|
748
|
-
"credit": "Synthesised for Squelchy",
|
|
749
|
-
"license": "CC0 1.0 / public domain \u2014 free to use, no attribution required",
|
|
750
|
-
"licenseUrl": "https://creativecommons.org/publicdomain/zero/1.0/",
|
|
751
|
-
"voices": {
|
|
752
|
-
"bd": "/__l5e/assets-v1/7e90ada0-1da8-4930-9c05-48c395e8a863/tape-dust-bd.flac",
|
|
753
|
-
"ch": "/__l5e/assets-v1/538fd73f-f7ee-408e-ab69-f8865506f4f5/tape-dust-ch.flac",
|
|
754
|
-
"clap": "/__l5e/assets-v1/21b5b5ea-6dce-495d-b740-e7162941c972/tape-dust-clap.flac",
|
|
755
|
-
"cym": "/__l5e/assets-v1/ac1a7f2d-9a96-4f61-b2ec-743854f15bbe/tape-dust-cym.flac",
|
|
756
|
-
"ht": "/__l5e/assets-v1/93dd3f9c-8267-4f4e-b292-807cf0022c9e/tape-dust-ht.flac",
|
|
757
|
-
"lt": "/__l5e/assets-v1/7a51ff67-62ec-408b-b6c3-4a0cae248eaf/tape-dust-lt.flac",
|
|
758
|
-
"mt": "/__l5e/assets-v1/ba3340c5-6ead-419a-836a-a041448f06da/tape-dust-mt.flac",
|
|
759
|
-
"oh": "/__l5e/assets-v1/e924553d-ac9a-427e-a69a-2939032ee618/tape-dust-oh.flac",
|
|
760
|
-
"perc": "/__l5e/assets-v1/abfad1e6-998b-47a8-8c98-6f511c151143/tape-dust-perc.flac",
|
|
761
|
-
"rim": "/__l5e/assets-v1/c86262d8-9711-41d4-b866-19a1ffcaf443/tape-dust-rim.flac",
|
|
762
|
-
"sd": "/__l5e/assets-v1/2d1090cf-0284-4c33-9ba2-430c5c7b4730/tape-dust-sd.flac"
|
|
763
|
-
}
|
|
764
|
-
},
|
|
765
|
-
"hard-cell": {
|
|
766
|
-
"name": "Hard Cell",
|
|
767
|
-
"blurb": "Overdriven and bit-crushed. Industrial techno with no headroom left.",
|
|
768
|
-
"family": "Character",
|
|
769
|
-
"credit": "Synthesised for Squelchy",
|
|
770
|
-
"license": "CC0 1.0 / public domain \u2014 free to use, no attribution required",
|
|
771
|
-
"licenseUrl": "https://creativecommons.org/publicdomain/zero/1.0/",
|
|
772
|
-
"voices": {
|
|
773
|
-
"bd": "/__l5e/assets-v1/d8f1c5cf-8e07-4a1e-a519-d7f69781329b/hard-cell-bd.flac",
|
|
774
|
-
"ch": "/__l5e/assets-v1/c3275e9a-dd79-4ac8-b4b9-84ebe25b5529/hard-cell-ch.flac",
|
|
775
|
-
"clap": "/__l5e/assets-v1/160a5d2c-01e0-49da-a998-149a0cf08317/hard-cell-clap.flac",
|
|
776
|
-
"cym": "/__l5e/assets-v1/910f3623-0209-439f-9e34-0c0f842bc78f/hard-cell-cym.flac",
|
|
777
|
-
"ht": "/__l5e/assets-v1/36f5b37b-9d44-49b8-a57b-bf5d2a1aa523/hard-cell-ht.flac",
|
|
778
|
-
"lt": "/__l5e/assets-v1/6065e512-578b-477f-88d9-49b3ccccacea/hard-cell-lt.flac",
|
|
779
|
-
"mt": "/__l5e/assets-v1/4e33c147-b8da-4b03-abca-4fd254d5006d/hard-cell-mt.flac",
|
|
780
|
-
"oh": "/__l5e/assets-v1/3e5b3bce-f21b-4ecb-8f28-375ce871427f/hard-cell-oh.flac",
|
|
781
|
-
"perc": "/__l5e/assets-v1/ab27e781-3d41-4e04-8f44-f7a568543586/hard-cell-perc.flac",
|
|
782
|
-
"rim": "/__l5e/assets-v1/ea2989c5-2354-4574-ae38-4786deeee151/hard-cell-rim.flac",
|
|
783
|
-
"sd": "/__l5e/assets-v1/5bd3dca9-bdb7-4618-8e0b-9ed1c0b062c7/hard-cell-sd.flac"
|
|
784
|
-
}
|
|
785
|
-
},
|
|
786
|
-
"rx5-fm": {
|
|
787
|
-
"name": "Yamaha RX5",
|
|
788
|
-
"blurb": "FM percussion \u2014 glassy, bell-like, unmistakably late-eighties digital.",
|
|
789
|
-
"family": "Digital",
|
|
790
|
-
"credit": "MckAudio RX5 sample pack, dedicated to the public domain (CC0)",
|
|
791
|
-
"license": "CC0 1.0 / public domain \u2014 free to use, no attribution required",
|
|
792
|
-
"licenseUrl": "https://creativecommons.org/publicdomain/zero/1.0/",
|
|
793
|
-
"voices": {
|
|
794
|
-
"bd": "/__l5e/assets-v1/22b27f9f-d301-48e2-a0e4-e6b6e538ec31/rx5-fm-bd.flac",
|
|
795
|
-
"ch": "/__l5e/assets-v1/236fb4f5-7d2a-48c0-be18-bc3777a6be91/rx5-fm-ch.flac",
|
|
796
|
-
"clap": "/__l5e/assets-v1/58402fc0-996c-4577-9074-bb40b585c26e/rx5-fm-clap.flac",
|
|
797
|
-
"cym": "/__l5e/assets-v1/d3e6ba9b-a2b8-4467-8923-97594723720e/rx5-fm-cym.flac",
|
|
798
|
-
"ht": "/__l5e/assets-v1/a5edef5d-7861-4b3a-99bc-10ece111ca64/rx5-fm-ht.flac",
|
|
799
|
-
"lt": "/__l5e/assets-v1/7151d30d-fe90-4ac5-9c9f-e91a808a1efa/rx5-fm-lt.flac",
|
|
800
|
-
"mt": "/__l5e/assets-v1/46119925-9ecd-431a-94ee-2135c8ce4382/rx5-fm-mt.flac",
|
|
801
|
-
"oh": "/__l5e/assets-v1/9fe4938f-fda7-43f8-84c6-c53325fd674c/rx5-fm-oh.flac",
|
|
802
|
-
"perc": "/__l5e/assets-v1/1aa471d4-4737-45e6-9070-6301892dcdfa/rx5-fm-perc.flac",
|
|
803
|
-
"rim": "/__l5e/assets-v1/2b0409a0-1aa6-41a4-9593-553247a2e624/rx5-fm-rim.flac",
|
|
804
|
-
"sd": "/__l5e/assets-v1/3d9c426c-7783-4106-940f-1e6b6405bdd5/rx5-fm-sd.flac"
|
|
805
|
-
}
|
|
806
|
-
},
|
|
807
|
-
"micro-click": {
|
|
808
|
-
"name": "Micro Click",
|
|
809
|
-
"blurb": "Clicks, ticks and pops. Minimal and micro-house, nothing sustains.",
|
|
810
|
-
"family": "Digital",
|
|
811
|
-
"credit": "Synthesised for Squelchy",
|
|
812
|
-
"license": "CC0 1.0 / public domain \u2014 free to use, no attribution required",
|
|
813
|
-
"licenseUrl": "https://creativecommons.org/publicdomain/zero/1.0/",
|
|
814
|
-
"voices": {
|
|
815
|
-
"bd": "/__l5e/assets-v1/58e3ce80-d300-47c6-8d79-52b00376550f/micro-click-bd.flac",
|
|
816
|
-
"ch": "/__l5e/assets-v1/1c12e400-5c5f-4aae-b006-5a3fe3c6ef2c/micro-click-ch.flac",
|
|
817
|
-
"clap": "/__l5e/assets-v1/b1f402f6-a85d-421b-9684-4b78719726d5/micro-click-clap.flac",
|
|
818
|
-
"cym": "/__l5e/assets-v1/fe501055-43d7-427f-9ab4-5efd0423292e/micro-click-cym.flac",
|
|
819
|
-
"ht": "/__l5e/assets-v1/3aab93cb-cd84-4600-a3e5-458fa74a2a86/micro-click-ht.flac",
|
|
820
|
-
"lt": "/__l5e/assets-v1/b09a0d61-c9a2-4b31-b0f2-10d3c10ef83c/micro-click-lt.flac",
|
|
821
|
-
"mt": "/__l5e/assets-v1/988e7a56-e914-43ad-aff1-71ec3a04b8e4/micro-click-mt.flac",
|
|
822
|
-
"oh": "/__l5e/assets-v1/122a3f93-4542-471b-b390-996665248653/micro-click-oh.flac",
|
|
823
|
-
"perc": "/__l5e/assets-v1/cae413d7-a68c-411a-a4b4-b7c20a83946d/micro-click-perc.flac",
|
|
824
|
-
"rim": "/__l5e/assets-v1/41922292-1c6e-4bef-ac8e-fa1ce09eefca/micro-click-rim.flac",
|
|
825
|
-
"sd": "/__l5e/assets-v1/6218ccdd-cba1-466e-af8b-665d7a2d4640/micro-click-sd.flac"
|
|
826
|
-
}
|
|
827
|
-
},
|
|
828
|
-
"deep-analogue": {
|
|
829
|
-
"name": "Deep Analogue",
|
|
830
|
-
"blurb": "Long sub kick, soft snare, warm hats. Deep house at three in the morning.",
|
|
831
|
-
"family": "Acoustic",
|
|
832
|
-
"credit": "Synthesised for Squelchy",
|
|
833
|
-
"license": "CC0 1.0 / public domain \u2014 free to use, no attribution required",
|
|
834
|
-
"licenseUrl": "https://creativecommons.org/publicdomain/zero/1.0/",
|
|
835
|
-
"voices": {
|
|
836
|
-
"bd": "/__l5e/assets-v1/93c55e12-44f1-4cf9-8b19-82833257a68f/deep-analogue-bd.flac",
|
|
837
|
-
"ch": "/__l5e/assets-v1/7c881111-83d8-4c1a-b4af-4f09d2a09f4b/deep-analogue-ch.flac",
|
|
838
|
-
"clap": "/__l5e/assets-v1/e8b67bb8-8f7f-4b87-9ee4-d9cb7bc43efe/deep-analogue-clap.flac",
|
|
839
|
-
"cym": "/__l5e/assets-v1/b329f9e1-3eb0-471c-b7c7-8ad7f639323f/deep-analogue-cym.flac",
|
|
840
|
-
"ht": "/__l5e/assets-v1/a381a6b5-fd09-4fa6-b88e-86a29b8f25d9/deep-analogue-ht.flac",
|
|
841
|
-
"lt": "/__l5e/assets-v1/c9ebc90a-20aa-4f76-9e79-f440258d4bac/deep-analogue-lt.flac",
|
|
842
|
-
"mt": "/__l5e/assets-v1/5e1b803c-748e-4f09-bed7-c7b4511dc8b0/deep-analogue-mt.flac",
|
|
843
|
-
"oh": "/__l5e/assets-v1/289d67f2-6d55-4a04-8607-302442465e81/deep-analogue-oh.flac",
|
|
844
|
-
"perc": "/__l5e/assets-v1/8ef1f592-a3a4-45a5-9ea4-80362953aee4/deep-analogue-perc.flac",
|
|
845
|
-
"rim": "/__l5e/assets-v1/102a1c23-6e5f-468e-95c8-e414ce849884/deep-analogue-rim.flac",
|
|
846
|
-
"sd": "/__l5e/assets-v1/9be98c57-13c4-4337-bb2f-53c0b2ff7150/deep-analogue-sd.flac"
|
|
847
|
-
}
|
|
848
|
-
}
|
|
849
|
-
});
|
|
850
|
-
|
|
851
614
|
// src/modules/ModuleDescriptor.ts
|
|
852
615
|
function paramDefaults(params50) {
|
|
853
616
|
const out = {};
|
|
@@ -968,7 +731,7 @@ function createFdnReverbNode(ctx, opts) {
|
|
|
968
731
|
parameterData: { rt60: opts.rt60, damping: opts.damping },
|
|
969
732
|
processorOptions: {
|
|
970
733
|
size: opts.size ?? 1,
|
|
971
|
-
feedbackCeiling: opts.feedbackCeiling ?? 0.
|
|
734
|
+
feedbackCeiling: opts.feedbackCeiling ?? 0.995
|
|
972
735
|
}
|
|
973
736
|
});
|
|
974
737
|
}
|
|
@@ -987,14 +750,15 @@ function createOctaverDividerNode(ctx) {
|
|
|
987
750
|
outputChannelCount: [1, 2, 1]
|
|
988
751
|
});
|
|
989
752
|
}
|
|
990
|
-
function createPitchShifterNode(ctx, semitones2 = 12) {
|
|
753
|
+
function createPitchShifterNode(ctx, semitones2 = 12, seed = 2654435769) {
|
|
991
754
|
return new AudioWorkletNode(ctx, "pitch-shifter", {
|
|
992
755
|
numberOfInputs: 1,
|
|
993
756
|
numberOfOutputs: 1,
|
|
994
757
|
outputChannelCount: [1],
|
|
995
758
|
channelCount: 1,
|
|
996
759
|
channelCountMode: "explicit",
|
|
997
|
-
parameterData: { semitones: semitones2 }
|
|
760
|
+
parameterData: { semitones: semitones2 },
|
|
761
|
+
processorOptions: { seed }
|
|
998
762
|
});
|
|
999
763
|
}
|
|
1000
764
|
function createVcaNode(ctx, gain = 0.5, cvAmount = 1) {
|
|
@@ -1064,6 +828,16 @@ function createPingPongNode(ctx, opts) {
|
|
|
1064
828
|
});
|
|
1065
829
|
}
|
|
1066
830
|
|
|
831
|
+
// src/lib/dsp/keepAlive.ts
|
|
832
|
+
var KEEP_ALIVE_DC = 1e-12;
|
|
833
|
+
function createKeepAlive(ctx, ...targets) {
|
|
834
|
+
const src = ctx.createConstantSource();
|
|
835
|
+
src.offset.value = KEEP_ALIVE_DC;
|
|
836
|
+
for (const t of targets) src.connect(t);
|
|
837
|
+
src.start();
|
|
838
|
+
return src;
|
|
839
|
+
}
|
|
840
|
+
|
|
1067
841
|
// src/lib-runtime/generated/modules/303-filter.tsx
|
|
1068
842
|
var params = {
|
|
1069
843
|
note: { node: "_cutoffVoct", field: "transpose", unit: "note", default: 67, min: 15, max: 135 },
|
|
@@ -1127,7 +901,8 @@ var filter303Descriptor = /* @__PURE__ */ defineDescriptor({
|
|
|
1127
901
|
envDepth.connect(_cutoffVoct);
|
|
1128
902
|
envSmoother.connect(accentEnvGain);
|
|
1129
903
|
accentEnvGain.connect(accentVCA.gain);
|
|
1130
|
-
|
|
904
|
+
const _alive = createKeepAlive(ctx, filter1);
|
|
905
|
+
return { input, output, trigInput, filter1, filter2, accentVCA, accentEnvGain, envSmoother, envDepth, _cutoffVoct, _cutoffBase, _alive };
|
|
1131
906
|
},
|
|
1132
907
|
updateParam(nodes, module, param, value) {
|
|
1133
908
|
switch (param) {
|
|
@@ -1158,6 +933,7 @@ var filter303Descriptor = /* @__PURE__ */ defineDescriptor({
|
|
|
1158
933
|
},
|
|
1159
934
|
dispose(nodes) {
|
|
1160
935
|
nodes._cutoffBase.stop();
|
|
936
|
+
nodes._alive.stop();
|
|
1161
937
|
}
|
|
1162
938
|
});
|
|
1163
939
|
|
|
@@ -2000,9 +1776,9 @@ var EnvelopeFollower = /* @__PURE__ */ defineModule(envFollowDescriptor, {
|
|
|
2000
1776
|
// src/lib-runtime/generated/modules/envelope.tsx
|
|
2001
1777
|
var params13 = {
|
|
2002
1778
|
attack: { node: "adsrNode", field: "attack", default: 0.01, min: 1e-3, max: 2, scale: "log", unit: "s" },
|
|
2003
|
-
decay: { node: "adsrNode", field: "decay", default: 0.
|
|
1779
|
+
decay: { node: "adsrNode", field: "decay", default: 0.46, min: 1e-3, max: 10, scale: "log", unit: "s" },
|
|
2004
1780
|
sustain: { node: "adsrNode", field: "sustain", unit: "factor", default: 0.7, min: 0, max: 1 },
|
|
2005
|
-
release: { node: "adsrNode", field: "release", default:
|
|
1781
|
+
release: { node: "adsrNode", field: "release", default: 2.1, min: 1e-3, max: 20, scale: "log", unit: "s" },
|
|
2006
1782
|
depth: { node: "envOut", field: "gain", default: 48, min: 0, max: 96, scale: "sqrt", unit: "semitone" }
|
|
2007
1783
|
};
|
|
2008
1784
|
var envelopeDescriptor = /* @__PURE__ */ defineDescriptor({
|
|
@@ -2015,7 +1791,7 @@ var envelopeDescriptor = /* @__PURE__ */ defineDescriptor({
|
|
|
2015
1791
|
"trigger": { type: "input", signal: "gate", node: "adsrNode" }
|
|
2016
1792
|
},
|
|
2017
1793
|
createModule(id, position) {
|
|
2018
|
-
return { id, type: "envelope", position, ...paramDefaults(params13) };
|
|
1794
|
+
return { id, type: "envelope", position, timeUnit: "t60", ...paramDefaults(params13) };
|
|
2019
1795
|
},
|
|
2020
1796
|
createNodes(ctx, module) {
|
|
2021
1797
|
const mainGain = ctx.createGain();
|
|
@@ -2339,7 +2115,8 @@ var formantDescriptor = /* @__PURE__ */ defineDescriptor({
|
|
|
2339
2115
|
formantMix.connect(wetGain);
|
|
2340
2116
|
dryGain.connect(output);
|
|
2341
2117
|
wetGain.connect(output);
|
|
2342
|
-
|
|
2118
|
+
const _alive = createKeepAlive(ctx, f1, f2, f3, f4, f5);
|
|
2119
|
+
return { input, output, vowelCV, f1, f2, f3, f4, f5, f4Gain, f5Gain, dryGain, wetGain, formantWorklet, _alive };
|
|
2343
2120
|
},
|
|
2344
2121
|
updateParam(nodes, _module, param, value) {
|
|
2345
2122
|
if (param === "morph") {
|
|
@@ -2355,6 +2132,9 @@ var formantDescriptor = /* @__PURE__ */ defineDescriptor({
|
|
|
2355
2132
|
nodes.dryGain.gain.value = 1 - value;
|
|
2356
2133
|
nodes.wetGain.gain.value = value;
|
|
2357
2134
|
}
|
|
2135
|
+
},
|
|
2136
|
+
dispose(nodes) {
|
|
2137
|
+
nodes._alive.stop();
|
|
2358
2138
|
}
|
|
2359
2139
|
});
|
|
2360
2140
|
|
|
@@ -3408,6 +3188,7 @@ var resonatorDescriptor = /* @__PURE__ */ defineDescriptor({
|
|
|
3408
3188
|
partialGain.connect(wetGain);
|
|
3409
3189
|
partialGains.push(partialGain);
|
|
3410
3190
|
}
|
|
3191
|
+
const _alive = createKeepAlive(ctx, ...filters);
|
|
3411
3192
|
const _mix = createMix(ctx, dryGain, wetGain, module.mix, "linear", 0.6);
|
|
3412
3193
|
input.connect(dryGain);
|
|
3413
3194
|
dryGain.connect(output);
|
|
@@ -3420,6 +3201,7 @@ var resonatorDescriptor = /* @__PURE__ */ defineDescriptor({
|
|
|
3420
3201
|
_mix,
|
|
3421
3202
|
_root,
|
|
3422
3203
|
_pitch,
|
|
3204
|
+
_alive,
|
|
3423
3205
|
v1: voct[0],
|
|
3424
3206
|
v2: voct[1],
|
|
3425
3207
|
v3: voct[2],
|
|
@@ -3484,6 +3266,7 @@ var resonatorDescriptor = /* @__PURE__ */ defineDescriptor({
|
|
|
3484
3266
|
},
|
|
3485
3267
|
dispose(nodes) {
|
|
3486
3268
|
nodes._root.stop();
|
|
3269
|
+
nodes._alive.stop();
|
|
3487
3270
|
}
|
|
3488
3271
|
});
|
|
3489
3272
|
|
|
@@ -3495,6 +3278,13 @@ var Resonator = /* @__PURE__ */ defineModule(resonatorDescriptor, {
|
|
|
3495
3278
|
});
|
|
3496
3279
|
|
|
3497
3280
|
// src/lib/dsp/fdnTank.ts
|
|
3281
|
+
var COMB_TIMES_MS = [29.7, 37.1, 41.1, 43.7];
|
|
3282
|
+
function tankEnergyGain500(rt60, size = 1) {
|
|
3283
|
+
let g2 = 0;
|
|
3284
|
+
for (const ms2 of COMB_TIMES_MS) g2 += Math.pow(10, -6 * (ms2 / 1e3) * size / Math.max(rt60, 0.05));
|
|
3285
|
+
g2 /= COMB_TIMES_MS.length;
|
|
3286
|
+
return Math.max(0.05, 0.8006 / (1 - g2) - 0.531);
|
|
3287
|
+
}
|
|
3498
3288
|
function createFdnTank(ctx, opts) {
|
|
3499
3289
|
const input = ctx.createGain();
|
|
3500
3290
|
const output = ctx.createGain();
|
|
@@ -3869,6 +3659,13 @@ var saturatorDescriptor = /* @__PURE__ */ defineDescriptor({
|
|
|
3869
3659
|
var Saturator = /* @__PURE__ */ defineModule(saturatorDescriptor);
|
|
3870
3660
|
|
|
3871
3661
|
// src/lib-runtime/generated/modules/shimmer.tsx
|
|
3662
|
+
var REGEN_HP_HZ = 300;
|
|
3663
|
+
var REGEN_HP_Q_DB = 20 * Math.log10(Math.SQRT1_2);
|
|
3664
|
+
var HP_AT_500 = 1 / Math.sqrt(1 + Math.pow(REGEN_HP_HZ / 500, 4));
|
|
3665
|
+
var SHIFTER_ENERGY = 0.75;
|
|
3666
|
+
function shimmerRegenNorm(decay) {
|
|
3667
|
+
return 1 / (Math.sqrt(tankEnergyGain500(decay)) * HP_AT_500 * Math.sqrt(SHIFTER_ENERGY));
|
|
3668
|
+
}
|
|
3872
3669
|
var params36 = {
|
|
3873
3670
|
decay: { unit: "s", default: 3, min: 0.5, max: 10, scale: "log" },
|
|
3874
3671
|
pitch: { unit: "semitone", default: 12, min: -12, max: 24 },
|
|
@@ -3891,18 +3688,21 @@ var shimmerDescriptor = /* @__PURE__ */ defineDescriptor({
|
|
|
3891
3688
|
const dryGain = ctx.createGain();
|
|
3892
3689
|
const wetGain = ctx.createGain();
|
|
3893
3690
|
const _mix = createMix(ctx, dryGain, wetGain, module.mix, "equal-power");
|
|
3894
|
-
const tank = createFdnTank(ctx, { rt60: module.decay, damping: 0.5
|
|
3691
|
+
const tank = createFdnTank(ctx, { rt60: module.decay, damping: 0.5 });
|
|
3895
3692
|
const splitter = ctx.createChannelSplitter(2);
|
|
3896
3693
|
const merger = ctx.createChannelMerger(2);
|
|
3897
|
-
const mkRegenTap = () => {
|
|
3694
|
+
const mkRegenTap = (seed) => {
|
|
3898
3695
|
const hp = ctx.createBiquadFilter();
|
|
3899
3696
|
hp.type = "highpass";
|
|
3900
|
-
hp.frequency.value =
|
|
3901
|
-
|
|
3697
|
+
hp.frequency.value = REGEN_HP_HZ;
|
|
3698
|
+
hp.Q.value = REGEN_HP_Q_DB;
|
|
3699
|
+
const shifter = createPitchShifterNode(ctx, module.pitch, seed);
|
|
3902
3700
|
return { hp, shifter };
|
|
3903
3701
|
};
|
|
3904
|
-
const tapL = mkRegenTap();
|
|
3905
|
-
const tapR = mkRegenTap();
|
|
3702
|
+
const tapL = mkRegenTap(5370206);
|
|
3703
|
+
const tapR = mkRegenTap(739982445);
|
|
3704
|
+
const regenNorm = ctx.createGain();
|
|
3705
|
+
regenNorm.gain.value = shimmerRegenNorm(module.decay);
|
|
3906
3706
|
const regenGain = ctx.createGain();
|
|
3907
3707
|
regenGain.gain.value = module.shimmer;
|
|
3908
3708
|
const regenDelay = ctx.createDelay(0.1);
|
|
@@ -3914,7 +3714,8 @@ var shimmerDescriptor = /* @__PURE__ */ defineDescriptor({
|
|
|
3914
3714
|
tapR.hp.connect(tapR.shifter);
|
|
3915
3715
|
tapL.shifter.connect(merger, 0, 0);
|
|
3916
3716
|
tapR.shifter.connect(merger, 0, 1);
|
|
3917
|
-
merger.connect(
|
|
3717
|
+
merger.connect(regenNorm);
|
|
3718
|
+
regenNorm.connect(regenGain);
|
|
3918
3719
|
regenGain.connect(regenDelay);
|
|
3919
3720
|
regenDelay.connect(tank.input);
|
|
3920
3721
|
input.connect(dryGain);
|
|
@@ -3934,6 +3735,7 @@ var shimmerDescriptor = /* @__PURE__ */ defineDescriptor({
|
|
|
3934
3735
|
highpassR: tapR.hp,
|
|
3935
3736
|
pitchShifterL: tapL.shifter,
|
|
3936
3737
|
pitchShifterR: tapR.shifter,
|
|
3738
|
+
regenNorm,
|
|
3937
3739
|
regenGain,
|
|
3938
3740
|
regenDelay,
|
|
3939
3741
|
tankInput: tank.input,
|
|
@@ -3953,6 +3755,7 @@ var shimmerDescriptor = /* @__PURE__ */ defineDescriptor({
|
|
|
3953
3755
|
}
|
|
3954
3756
|
} else if (param === "decay") {
|
|
3955
3757
|
setTankDecay({ node: nodes.tankNode }, value, now2);
|
|
3758
|
+
nodes.regenNorm.gain.setTargetAtTime(shimmerRegenNorm(value), now2, 0.02);
|
|
3956
3759
|
}
|
|
3957
3760
|
}
|
|
3958
3761
|
});
|
|
@@ -4487,13 +4290,18 @@ var filterDescriptor = /* @__PURE__ */ defineDescriptor({
|
|
|
4487
4290
|
dbOut: qIsDb(module.filterType)
|
|
4488
4291
|
});
|
|
4489
4292
|
_resMap.connect(filter.Q);
|
|
4490
|
-
|
|
4293
|
+
const _alive = createKeepAlive(ctx, filter);
|
|
4294
|
+
return { filter, output, _cutoffVoct, _cutoffBase, _resMap, _alive };
|
|
4491
4295
|
},
|
|
4492
4296
|
dispose(nodes) {
|
|
4493
4297
|
try {
|
|
4494
4298
|
nodes._cutoffBase.stop();
|
|
4495
4299
|
} catch (_) {
|
|
4496
4300
|
}
|
|
4301
|
+
try {
|
|
4302
|
+
nodes._alive.stop();
|
|
4303
|
+
} catch (_) {
|
|
4304
|
+
}
|
|
4497
4305
|
},
|
|
4498
4306
|
updateParam(nodes, module, param, value) {
|
|
4499
4307
|
switch (param) {
|
|
@@ -4669,7 +4477,8 @@ var wahDescriptor = /* @__PURE__ */ defineDescriptor({
|
|
|
4669
4477
|
input.connect(filter);
|
|
4670
4478
|
filter.connect(makeup);
|
|
4671
4479
|
makeup.connect(output);
|
|
4672
|
-
|
|
4480
|
+
const _alive = createKeepAlive(ctx, filter);
|
|
4481
|
+
return { input, output, filter, makeup, lfo, lfoGain, _cutoffVoct, _cutoffBase, _alive };
|
|
4673
4482
|
},
|
|
4674
4483
|
updateParam(nodes, _module, param, value) {
|
|
4675
4484
|
if (param === "note") {
|
|
@@ -4686,6 +4495,7 @@ var wahDescriptor = /* @__PURE__ */ defineDescriptor({
|
|
|
4686
4495
|
dispose(nodes) {
|
|
4687
4496
|
nodes.lfo.stop();
|
|
4688
4497
|
nodes._cutoffBase.stop();
|
|
4498
|
+
nodes._alive.stop();
|
|
4689
4499
|
}
|
|
4690
4500
|
});
|
|
4691
4501
|
|
|
@@ -4767,7 +4577,6 @@ export {
|
|
|
4767
4577
|
CombFilter,
|
|
4768
4578
|
Compressor,
|
|
4769
4579
|
Crossfade,
|
|
4770
|
-
DEFAULT_SAMPLE_BASE_URL,
|
|
4771
4580
|
Delay,
|
|
4772
4581
|
Dimension,
|
|
4773
4582
|
Distortion,
|
|
@@ -4797,7 +4606,6 @@ export {
|
|
|
4797
4606
|
Reverb,
|
|
4798
4607
|
RingModulator,
|
|
4799
4608
|
Rotary,
|
|
4800
|
-
SampleSets,
|
|
4801
4609
|
SampleVoice,
|
|
4802
4610
|
Saturator,
|
|
4803
4611
|
Shimmer,
|