mirror of
https://github.com/eliasstepanik/strudel-docker.git
synced 2026-01-27 13:38:40 +00:00
Merge pull request #706 from Bubobubobubobubo/global-vibrato
Adding vibrato to Superdough sampler
This commit is contained in:
commit
400b2109fb
@ -57,7 +57,6 @@ export const getSampleBufferSource = async (s, n, note, speed, freq, bank, resol
|
|||||||
const bufferSource = ac.createBufferSource();
|
const bufferSource = ac.createBufferSource();
|
||||||
bufferSource.buffer = buffer;
|
bufferSource.buffer = buffer;
|
||||||
const playbackRate = 1.0 * Math.pow(2, transpose / 12);
|
const playbackRate = 1.0 * Math.pow(2, transpose / 12);
|
||||||
// bufferSource.playbackRate.value = Math.pow(2, transpose / 12);
|
|
||||||
bufferSource.playbackRate.value = playbackRate;
|
bufferSource.playbackRate.value = playbackRate;
|
||||||
return bufferSource;
|
return bufferSource;
|
||||||
};
|
};
|
||||||
@ -240,6 +239,8 @@ export async function onTriggerSample(t, value, onended, bank, resolveUrl) {
|
|||||||
begin = 0,
|
begin = 0,
|
||||||
loopEnd = 1,
|
loopEnd = 1,
|
||||||
end = 1,
|
end = 1,
|
||||||
|
vib,
|
||||||
|
vibmod = 0.5,
|
||||||
} = value;
|
} = value;
|
||||||
// load sample
|
// load sample
|
||||||
if (speed === 0) {
|
if (speed === 0) {
|
||||||
@ -255,6 +256,19 @@ export async function onTriggerSample(t, value, onended, bank, resolveUrl) {
|
|||||||
|
|
||||||
const bufferSource = await getSampleBufferSource(s, n, note, speed, freq, bank, resolveUrl);
|
const bufferSource = await getSampleBufferSource(s, n, note, speed, freq, bank, resolveUrl);
|
||||||
|
|
||||||
|
// vibrato
|
||||||
|
let vibratoOscillator;
|
||||||
|
if (vib > 0) {
|
||||||
|
vibratoOscillator = getAudioContext().createOscillator();
|
||||||
|
vibratoOscillator.frequency.value = vib;
|
||||||
|
const gain = getAudioContext().createGain();
|
||||||
|
// Vibmod is the amount of vibrato, in semitones
|
||||||
|
gain.gain.value = vibmod * 100;
|
||||||
|
vibratoOscillator.connect(gain);
|
||||||
|
gain.connect(bufferSource.detune);
|
||||||
|
vibratoOscillator.start(0);
|
||||||
|
}
|
||||||
|
|
||||||
// asny stuff above took too long?
|
// asny stuff above took too long?
|
||||||
if (ac.currentTime > t) {
|
if (ac.currentTime > t) {
|
||||||
logger(`[sampler] still loading sound "${s}:${n}"`, 'highlight');
|
logger(`[sampler] still loading sound "${s}:${n}"`, 'highlight');
|
||||||
@ -286,6 +300,7 @@ export async function onTriggerSample(t, value, onended, bank, resolveUrl) {
|
|||||||
envelope.connect(out);
|
envelope.connect(out);
|
||||||
bufferSource.onended = function () {
|
bufferSource.onended = function () {
|
||||||
bufferSource.disconnect();
|
bufferSource.disconnect();
|
||||||
|
vibratoOscillator?.stop();
|
||||||
envelope.disconnect();
|
envelope.disconnect();
|
||||||
out.disconnect();
|
out.disconnect();
|
||||||
onended();
|
onended();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user