From 7a59b69bc4d35b5fd10af26e72e2a0befae0911b Mon Sep 17 00:00:00 2001 From: Yuto Terada Date: Sun, 15 Feb 2026 18:17:38 +0900 Subject: [PATCH] fix: use project sample rate for XAudio2 playback Pass the project's sample rate to XAudioContext instead of hardcoding 44100Hz, fixing audio playback issues with 48KHz projects. --- src/Beutl.Engine/Audio/Platforms/XAudio2/XAudioContext.cs | 4 ++-- src/Beutl/ViewModels/PlayerViewModel.cs | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Beutl.Engine/Audio/Platforms/XAudio2/XAudioContext.cs b/src/Beutl.Engine/Audio/Platforms/XAudio2/XAudioContext.cs index 7434c6b06..3d45e6f48 100644 --- a/src/Beutl.Engine/Audio/Platforms/XAudio2/XAudioContext.cs +++ b/src/Beutl.Engine/Audio/Platforms/XAudio2/XAudioContext.cs @@ -24,10 +24,10 @@ static XAudioContext() } } - public XAudioContext() + public XAudioContext(int sampleRate = 44100) { Device = Vortice.XAudio2.XAudio2.XAudio2Create(); - MasteringVoice = Device.CreateMasteringVoice(2, 44100, AudioStreamCategory.Other); + MasteringVoice = Device.CreateMasteringVoice(2, (uint)sampleRate, AudioStreamCategory.Other); } ~XAudioContext() diff --git a/src/Beutl/ViewModels/PlayerViewModel.cs b/src/Beutl/ViewModels/PlayerViewModel.cs index 23117e9c2..d2598f878 100644 --- a/src/Beutl/ViewModels/PlayerViewModel.cs +++ b/src/Beutl/ViewModels/PlayerViewModel.cs @@ -415,7 +415,8 @@ private async Task PlayAudio(Scene scene) { if (OperatingSystem.IsWindows()) { - using var audioContext = new XAudioContext(); + int sampleRate = EditViewModel.Composer.Value.SampleRate; + using var audioContext = new XAudioContext(sampleRate); await PlayWithXA2(audioContext, scene).ConfigureAwait(false); } else