feat(sounds): self-made Ogg cues + watch/mute/pop fixes
Replace ripped Discord audio with self-authored Ogg Vorbis files (avoids copyright on open-source launch) and fix three cue bugs: - Anti-pop envelope: playSound now applies a 10ms fade-in (+ tail fade-out for one-shots) so buffers no longer start at a non-zero amplitude. Kills the pop on the looping call cues. Mirrors playTestTone. - Deafen no longer plays mute+deafen at once: toggleDeafen flips isMuted and isDeafened atomically, so SoundController saw both transitions. New tested pure helper selectVoiceStateSound() suppresses the side-effect mute cue. - Viewer-side watch feedback: stream_user_joined/left now play locally on the watcher's own machine for explicit Watch/Stop actions, via handleViewerWatchToggle. Direct local playback (not a watchingStreams diff) keeps auto-teardown silent and works identically on Safari and Electron. Docs: docs/systems/sounds.md updated (Ogg, dual-audience cue rows, mute/deafen selection, viewer feedback, anti-pop envelope).
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
import { useVoiceStore } from '../stores/voiceStore';
|
||||
|
||||
/** Base gain applied to every sound effect before the user's SFX slider. */
|
||||
export const SFX_BASE_VOLUME = 0.8;
|
||||
|
||||
/**
|
||||
* Effective sound-effect gain: the base SFX volume scaled by the user's SFX
|
||||
* slider (0–200, where 100 = unity). Read at play time so volume changes take
|
||||
* effect on the next cue without re-subscribing.
|
||||
*/
|
||||
export function getSfxVolume(): number {
|
||||
return SFX_BASE_VOLUME * (useVoiceStore.getState().soundEffectVolume / 100);
|
||||
}
|
||||
Reference in New Issue
Block a user