mirror of
https://codeberg.org/uzu/strudel
synced 2026-07-13 06:19:33 -04:00
Reviewed changes
This commit is contained in:
@@ -98,7 +98,6 @@ export class Cyclist {
|
||||
this.started = v;
|
||||
this.onToggle?.(v);
|
||||
}
|
||||
|
||||
async start() {
|
||||
await this.beforeStart?.();
|
||||
this.num_ticks_since_cps_change = 0;
|
||||
|
||||
@@ -282,7 +282,7 @@ export async function initAudioOnFirstClick(options) {
|
||||
}
|
||||
|
||||
let controller;
|
||||
function getSuperdoughAudioController() {
|
||||
export function getSuperdoughAudioController() {
|
||||
if (controller == null) {
|
||||
controller = new SuperdoughAudioController(getAudioContext());
|
||||
}
|
||||
@@ -376,7 +376,6 @@ function mapChannelNumbers(channels) {
|
||||
}
|
||||
|
||||
export const superdough = async (value, t, hapDuration, cps = 0.5, cycle = 0.5) => {
|
||||
// controller = null;
|
||||
// new: t is always expected to be the absolute target onset time
|
||||
const ac = getAudioContext();
|
||||
const audioController = getSuperdoughAudioController();
|
||||
@@ -402,7 +401,7 @@ export const superdough = async (value, t, hapDuration, cps = 0.5, cycle = 0.5)
|
||||
`[superdough]: cannot schedule sounds in the past (target: ${t.toFixed(2)}, now: ${ac.currentTime.toFixed(2)})`,
|
||||
);
|
||||
return;
|
||||
} // FIXME: fix
|
||||
}
|
||||
// destructure
|
||||
let {
|
||||
tremolo,
|
||||
|
||||
@@ -45,12 +45,11 @@ export const webaudioOutput = (hap, _deadline, hapDuration, cps, t) => {
|
||||
};
|
||||
|
||||
export async function renderPatternAudio(pattern, cps, begin, end, sampleRate, downloadName = undefined) {
|
||||
const oldAudioCtx = getAudioContext();
|
||||
await oldAudioCtx.close();
|
||||
let audioContext = new OfflineAudioContext(2, ((end - begin) / cps) * sampleRate, sampleRate);
|
||||
let audioContext = getAudioContext();
|
||||
await audioContext.close();
|
||||
audioContext = new OfflineAudioContext(2, ((end - begin) / cps) * sampleRate, sampleRate);
|
||||
setAudioContext(audioContext);
|
||||
let context = getAudioContext();
|
||||
setSuperdoughAudioController(new SuperdoughAudioController(context));
|
||||
setSuperdoughAudioController(new SuperdoughAudioController(audioContext));
|
||||
setMaxPolyphony(1024);
|
||||
setMultiChannelOrbits(true);
|
||||
await loadWorklets();
|
||||
@@ -69,7 +68,7 @@ export async function renderPatternAudio(pattern, cps, begin, end, sampleRate, d
|
||||
let bank = getSound(s).data.samples;
|
||||
if (bank) {
|
||||
let { url: sampleUrl, label } = getSampleInfo(h.value, bank);
|
||||
await loadBuffer(sampleUrl, context, label);
|
||||
await loadBuffer(sampleUrl, audioContext, label);
|
||||
}
|
||||
}
|
||||
}),
|
||||
@@ -81,10 +80,9 @@ export async function renderPatternAudio(pattern, cps, begin, end, sampleRate, d
|
||||
}
|
||||
});
|
||||
|
||||
return context
|
||||
return audioContext
|
||||
.startRendering()
|
||||
.then((renderedBuffer) => {
|
||||
console.log(renderedBuffer);
|
||||
const wavBuffer = audioBufferToWav(renderedBuffer);
|
||||
const blob = new Blob([wavBuffer], { type: 'audio/wav' });
|
||||
const url = URL.createObjectURL(blob);
|
||||
|
||||
Reference in New Issue
Block a user