mirror of
https://github.com/eliasstepanik/strudel-docker.git
synced 2026-01-14 07:08:30 +00:00
add sfumato soundfont player
This commit is contained in:
parent
467b3db824
commit
8bd56d29d6
32
package-lock.json
generated
32
package-lock.json
generated
@ -9616,6 +9616,14 @@
|
||||
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/sfumato": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/sfumato/-/sfumato-0.1.2.tgz",
|
||||
"integrity": "sha512-j2s5BLUS5VUNtaK1l+v+yal3XjjV7JXCQIwE5Xs4yiQ3HJ+2Fc/dd3IkkrVHn0AJO2epShSWVoP3GnE0TvPdMg==",
|
||||
"dependencies": {
|
||||
"soundfont2": "^0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/shallow-clone": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
|
||||
@ -9852,6 +9860,11 @@
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/soundfont2": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/soundfont2/-/soundfont2-0.4.0.tgz",
|
||||
"integrity": "sha512-537WiurDBRbDLVhJMxXLE06D6yWxJCidfPClnibZ0f8dKMDpv+0fIfwCQ8pELE0JqKX05SOJosNJgKzQobaAEA=="
|
||||
},
|
||||
"node_modules/source-map-generator": {
|
||||
"version": "0.8.0",
|
||||
"resolved": "https://registry.npmjs.org/source-map-generator/-/source-map-generator-0.8.0.tgz",
|
||||
@ -11476,7 +11489,8 @@
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"dependencies": {
|
||||
"@strudel.cycles/core": "*",
|
||||
"@strudel.cycles/webaudio": "^0.1.4"
|
||||
"@strudel.cycles/webaudio": "^0.1.4",
|
||||
"sfumato": "^0.1.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"node-fetch": "^3.2.6"
|
||||
@ -13363,7 +13377,8 @@
|
||||
"requires": {
|
||||
"@strudel.cycles/core": "*",
|
||||
"@strudel.cycles/webaudio": "^0.1.4",
|
||||
"node-fetch": "^3.2.6"
|
||||
"node-fetch": "^3.2.6",
|
||||
"sfumato": "^0.1.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"node-fetch": {
|
||||
@ -19146,6 +19161,14 @@
|
||||
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
|
||||
"dev": true
|
||||
},
|
||||
"sfumato": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/sfumato/-/sfumato-0.1.2.tgz",
|
||||
"integrity": "sha512-j2s5BLUS5VUNtaK1l+v+yal3XjjV7JXCQIwE5Xs4yiQ3HJ+2Fc/dd3IkkrVHn0AJO2epShSWVoP3GnE0TvPdMg==",
|
||||
"requires": {
|
||||
"soundfont2": "^0.4.0"
|
||||
}
|
||||
},
|
||||
"shallow-clone": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
|
||||
@ -19343,6 +19366,11 @@
|
||||
"is-plain-obj": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"soundfont2": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/soundfont2/-/soundfont2-0.4.0.tgz",
|
||||
"integrity": "sha512-537WiurDBRbDLVhJMxXLE06D6yWxJCidfPClnibZ0f8dKMDpv+0fIfwCQ8pELE0JqKX05SOJosNJgKzQobaAEA=="
|
||||
},
|
||||
"source-map-generator": {
|
||||
"version": "0.8.0",
|
||||
"resolved": "https://registry.npmjs.org/source-map-generator/-/source-map-generator-0.8.0.tgz",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { getFontBufferSource } from './fontloader.mjs';
|
||||
import * as soundfontList from './list.mjs';
|
||||
import { loadSoundfont, startPresetNote } from 'sfumato';
|
||||
import './sfumato.mjs';
|
||||
|
||||
globalThis.getFontBufferSource = getFontBufferSource;
|
||||
globalThis.soundfontList = soundfontList;
|
||||
globalThis.soundfontList = soundfontList;
|
||||
export { loadSoundfont, startPresetNote, getFontBufferSource, soundfontList };
|
||||
|
||||
@ -23,7 +23,8 @@
|
||||
"homepage": "https://github.com/tidalcycles/strudel#readme",
|
||||
"dependencies": {
|
||||
"@strudel.cycles/core": "*",
|
||||
"@strudel.cycles/webaudio": "^0.1.4"
|
||||
"@strudel.cycles/webaudio": "^0.1.4",
|
||||
"sfumato": "^0.1.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"node-fetch": "^3.2.6"
|
||||
|
||||
16
packages/soundfonts/sfumato.mjs
Normal file
16
packages/soundfonts/sfumato.mjs
Normal file
@ -0,0 +1,16 @@
|
||||
import { Pattern } from '@strudel.cycles/core';
|
||||
import { /* loadSoundfont, */ startPresetNote } from 'sfumato';
|
||||
|
||||
// TODO: find way to cache loadSoundfont
|
||||
|
||||
Pattern.prototype.soundfont = function (sf, n = 0) {
|
||||
return this.onTrigger((t, h, ct) => {
|
||||
const ctx = getAudioContext();
|
||||
const note = getPlayableNoteValue(h);
|
||||
const preset = sf.presets[n % sf.presets.length];
|
||||
const deadline = ctx.currentTime + t - ct;
|
||||
const args = [ctx, preset, toMidi(note), deadline];
|
||||
const stop = startPresetNote(...args);
|
||||
stop(deadline + h.duration);
|
||||
});
|
||||
};
|
||||
Loading…
x
Reference in New Issue
Block a user