Merge branch 'main' into glossing/optimizations
This commit is contained in:
commit
d9c21489f8
6 changed files with 12 additions and 7 deletions
|
|
@ -104,6 +104,8 @@ var applyGradualLowpass = function (input, lpFreqStart, lpFreqEnd, lpFreqEndAt,
|
||||||
player.start();
|
player.start();
|
||||||
context.oncomplete = function (event) {
|
context.oncomplete = function (event) {
|
||||||
callback(event.renderedBuffer);
|
callback(event.renderedBuffer);
|
||||||
|
filter.disconnect();
|
||||||
|
player.disconnect();
|
||||||
};
|
};
|
||||||
context.startRendering();
|
context.startRendering();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -708,7 +708,8 @@ export const superdough = async (value, t, hapDuration, cps = 0.5, cycle = 0.5)
|
||||||
roomIR = await loadBuffer(url, ac, ir, 0);
|
roomIR = await loadBuffer(url, ac, ir, 0);
|
||||||
}
|
}
|
||||||
orbitBus.getReverb(roomsize, roomfade, roomlp, roomdim, roomIR, irspeed, irbegin);
|
orbitBus.getReverb(roomsize, roomfade, roomlp, roomdim, roomIR, irspeed, irbegin);
|
||||||
orbitBus.sendReverb(post, room);
|
const send = orbitBus.sendReverb(post, room);
|
||||||
|
audioNodes.push(send);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (djf != null) {
|
if (djf != null) {
|
||||||
|
|
|
||||||
|
|
@ -78,7 +78,7 @@ export class Orbit {
|
||||||
return this.reverbNode;
|
return this.reverbNode;
|
||||||
}
|
}
|
||||||
sendReverb(node, amount) {
|
sendReverb(node, amount) {
|
||||||
effectSend(node, this.reverbNode, amount);
|
return effectSend(node, this.reverbNode, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
sendDelay(node, amount) {
|
sendDelay(node, amount) {
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,12 @@
|
||||||
// this is dough, the superdough without dependencies
|
// this is dough, the superdough without dependencies
|
||||||
// @ts-check
|
// @ts-nocheck
|
||||||
// @ts-ignore ignore next line because sampleRate is unknown
|
// @ts-ignore ignore next line because sampleRate is unknown
|
||||||
const SAMPLE_RATE = typeof sampleRate !== 'undefined' ? sampleRate : 48000;
|
const SAMPLE_RATE = typeof sampleRate !== 'undefined' ? sampleRate : 48000;
|
||||||
const PI_DIV_SR = Math.PI / SAMPLE_RATE;
|
const PI_DIV_SR = Math.PI / SAMPLE_RATE;
|
||||||
const ISR = 1 / SAMPLE_RATE;
|
const ISR = 1 / SAMPLE_RATE;
|
||||||
|
|
||||||
let gainCurveFunc = (val) => Math.pow(val, 2);
|
let gainCurveFunc = (val) => Math.pow(val, 2);
|
||||||
|
const clamp = (num, min, max) => Math.min(Math.max(num, min), max);
|
||||||
|
|
||||||
function applyGainCurve(val) {
|
function applyGainCurve(val) {
|
||||||
return gainCurveFunc(val);
|
return gainCurveFunc(val);
|
||||||
|
|
@ -151,7 +152,8 @@ export class TwoPoleFilter {
|
||||||
resonance = Math.max(resonance, 0);
|
resonance = Math.max(resonance, 0);
|
||||||
|
|
||||||
cutoff = Math.min(cutoff, 20000);
|
cutoff = Math.min(cutoff, 20000);
|
||||||
const c = 2 * Math.sin(cutoff * PI_DIV_SR);
|
let c = 2 * Math.sin(cutoff * PI_DIV_SR);
|
||||||
|
c = clamp(c, 0, 1.14); // this line prevents instability TODO: test
|
||||||
|
|
||||||
const r = Math.pow(0.5, (resonance + 0.125) / 0.125);
|
const r = Math.pow(0.5, (resonance + 0.125) / 0.125);
|
||||||
const mrc = 1 - r * c;
|
const mrc = 1 - r * c;
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ initStrudel();
|
||||||
document.getElementById('play').addEventListener('click',
|
document.getElementById('play').addEventListener('click',
|
||||||
() => evaluate('note("c a f e").jux(rev)')
|
() => evaluate('note("c a f e").jux(rev)')
|
||||||
);
|
);
|
||||||
document.getElementById('play').addEventListener('stop',
|
document.getElementById('stop').addEventListener('click',
|
||||||
() => hush()
|
() => hush()
|
||||||
);
|
);
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ There are 3 quick ways to embed strudel in your website:
|
||||||
|
|
||||||
### Inside an iframe
|
### Inside an iframe
|
||||||
|
|
||||||
Using an iframe is the most easy way to embed a studel tune.
|
Using an iframe is the most easy way to embed a strudel tune.
|
||||||
You can embed any pattern of your choice via an iframe and the URL of the pattern of your choice:
|
You can embed any pattern of your choice via an iframe and the URL of the pattern of your choice:
|
||||||
|
|
||||||
```html
|
```html
|
||||||
|
|
@ -133,7 +133,7 @@ If you'd rather use your own UI, you can use the `@strudel/web` package:
|
||||||
</script>
|
</script>
|
||||||
```
|
```
|
||||||
|
|
||||||
For more info on this package, see the [@strudel/web README]https://codeberg.org/uzu/strudel/src/branch/main/packages/web#strudel-web).
|
For more info on this package, see the [@strudel/web README](https://codeberg.org/uzu/strudel/src/branch/main/packages/web#strudel-web).
|
||||||
|
|
||||||
## Via npm
|
## Via npm
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue