Merge remote-tracking branch 'misskey-dev/develop' into merge-upstream

This commit is contained in:
まっちゃとーにゅ 2023-11-21 20:54:02 +09:00
commit 1fa04c17d3
No known key found for this signature in database
GPG key ID: 143DE582A97FE052
25 changed files with 605 additions and 264 deletions

View file

@ -122,7 +122,7 @@ export const soundsTypes = [
'Copyright_Misskey.io/ThinaticSystem/yonderuzo3',
] as const;
export async function getAudio(file: string, useCache = true) {
export async function loadAudio(file: string, useCache = true) {
if (useCache && cache.has(file)) {
return cache.get(file)!;
}
@ -138,12 +138,6 @@ export async function getAudio(file: string, useCache = true) {
return audioBuffer;
}
export function setVolume(audio: HTMLAudioElement, volume: number): HTMLAudioElement {
const masterVolume = defaultStore.state.sound_masterVolume;
audio.volume = masterVolume - ((1 - volume) * masterVolume);
return audio;
}
export function play(type: 'noteMy' | 'note' | 'antenna' | 'channel' | 'notification') {
const sound = defaultStore.state[`sound_${type}`];
if (_DEV_) console.log('play', type, sound);
@ -152,16 +146,22 @@ export function play(type: 'noteMy' | 'note' | 'antenna' | 'channel' | 'notifica
}
export async function playFile(file: string, volume: number) {
const buffer = await loadAudio(file);
createSourceNode(buffer, volume)?.start();
}
export function createSourceNode(buffer: AudioBuffer, volume: number) : AudioBufferSourceNode | null {
const masterVolume = defaultStore.state.sound_masterVolume;
if (masterVolume === 0 || volume === 0) {
return;
return null;
}
const gainNode = ctx.createGain();
gainNode.gain.value = masterVolume * volume;
const soundSource = ctx.createBufferSource();
soundSource.buffer = await getAudio(file);
soundSource.buffer = buffer;
soundSource.connect(gainNode).connect(ctx.destination);
soundSource.start();
return soundSource;
}