Rewrite Internal Audio Source & Fix AudioSwitchFix

This commit is contained in:
Ralty
2025-07-11 10:59:26 +07:00
parent aa5cf639e8
commit 80bc6506b9
6 changed files with 277 additions and 369 deletions
-18
View File
@@ -599,17 +599,6 @@ class Sound extends EventDispatcher
#end
}
var changeID:Int = 0;
public function regen() {
var audioBuffer = new AudioBuffer();
audioBuffer.bitsPerSample = __buffer.bitsPerSample;
audioBuffer.channels = __buffer.channels;
audioBuffer.data = __buffer.data;
audioBuffer.sampleRate = __buffer.sampleRate;
__buffer = audioBuffer;
}
/**
Generates a new SoundChannel object to play back the sound. This method
returns a SoundChannel object, which you access to stop the sound and to
@@ -636,13 +625,6 @@ class Sound extends EventDispatcher
return null;
}
#if !macro
if (changeID < funkin.backend.system.Main.changeID) {
changeID = funkin.backend.system.Main.changeID;
regen();
}
#end
if (sndTransform == null)
{
sndTransform = new SoundTransform();
+2 -2
View File
@@ -169,7 +169,7 @@ import lime.media.AudioSource;
if (__source.buffer == null || !__checkUpdatePeaks(position)) return;
var index = AL.getSourcei(__source.__backend.handle, AL.SAMPLE_OFFSET), bufferDatas = __source.__backend.bufferDatas;
var bufferi = NativeAudioSource.STREAM_NUM_BUFFERS - __source.__backend.queuedBuffers, bytes = bufferDatas[bufferi].buffer;
var bufferi = NativeAudioSource.STREAM_MAX_BUFFERS - __source.__backend.queuedBuffers, bytes = bufferDatas[bufferi].buffer;
var channels = __source.buffer.channels, todo = scanSamples, sample;
var lfilled = false, rfilled = channels < 2;
@@ -204,7 +204,7 @@ import lime.media.AudioSource;
#if (lime_cffi && !macro)
if (!__isValid) return;
#if lime_vorbis if (__source.__backend.stream) return __updateVorbisPeaks(); #end
#if lime_vorbis if (__source.__backend.streamed) return __updateVorbisPeaks(); #end
var buffer = __source.buffer;
if (buffer == null || buffer.data == null || !__checkUpdatePeaks(position)) return;