[4.7 Stable] - We Are Experiencing A Half Second Pause Before OGG Sound Effects Are Played? GDScript Source Code Provided

Godot Version

v4.7.stable.official [5b4e0cb0f] - Linux x86_64

Question

We are experiencing a half second pause before OGG sound effects are played?
Happens both on Web HTML5 version and Linux x86_64 desktop version.

Full audio core GDScript is below.
Are we doing something wrong?
Would be great to fix the above before official release in 2027.

Let us know, thank you!

SS

“AudioCore.gd”

extends Node2D

var MusicVolume
var EffectsVolume

var MusicPlayer
var MusicTotal = 17
var MusicCurrentlyPlaying = -1

var EffectPlayer = 

var EffectsTotal = 12

var MusicSelection = 0
var MusicJukebox = false

#----------------------------------------------------------------------------------------
func ConvertLinearToDB(volume):
var returnValue = log(volume) * 8.6858896380650365530225783783321
return(returnValue)

#----------------------------------------------------------------------------------------
func _ready():
MusicVolume = 1.0
EffectsVolume = 0.5

MusicPlayer = AudioStreamPlayer.new()
add_child(MusicPlayer)

var _warnErase = EffectPlayer.resize(6)
for plr in range(6):
	EffectPlayer[plr] = []
	EffectPlayer[plr].resize(EffectsTotal)
	for index in range(0, EffectsTotal):
		EffectPlayer[plr][index] = []

for plr in range(6):
	for index in range(0, EffectsTotal):
		EffectPlayer[plr][index] = AudioStreamPlayer.new()
		if index == 0:  EffectPlayer[plr][index].stream = load("res://media/sound/MenuMove.ogg")
		elif index == 1:  EffectPlayer[plr][index].stream = load("res://media/sound/MenuClick.ogg")
		elif index == 2:  EffectPlayer[plr][index].stream = load("res://media/sound/PieceRotate.ogg")
		elif index == 3:  EffectPlayer[plr][index].stream = load("res://media/sound/PieceDrop.ogg")
		elif index == 4:  EffectPlayer[plr][index].stream = load("res://media/sound/PieceCollision.ogg")
		elif index == 5:  EffectPlayer[plr][index].stream = load("res://media/sound/LineCleared.ogg")
		elif index == 6:  EffectPlayer[plr][index].stream = load("res://media/sound/4LinesCleared.ogg")
		elif index == 7:  EffectPlayer[plr][index].stream = load("res://media/sound/IncomingLine.ogg")
		elif index == 8:  EffectPlayer[plr][index].stream = load("res://media/sound/GameOver.ogg")
		elif index == 9:  EffectPlayer[plr][index].stream = load("res://media/sound/LogoSay.ogg")
		elif index == 10:  EffectPlayer[plr][index].stream = load("res://media/sound/CrisisModeSay.ogg")
		elif index == 11:  EffectPlayer[plr][index].stream = load("res://media/sound/PieceMove.ogg")
		add_child(EffectPlayer[plr][index])
		EffectPlayer[plr][index].set_volume_db(ConvertLinearToDB(EffectsVolume))
		EffectPlayer[plr][index].stream.set_loop(false)
	pass
pass

#----------------------------------------------------------------------------------------
func SetMusicAndEffectsVolume(musicVolume, effectsVolume):
MusicPlayer.set_volume_db(ConvertLinearToDB(musicVolume))

for plr in range(3):
	for index in range(0, EffectsTotal):
		EffectPlayer[plr][index].set_volume_db(ConvertLinearToDB(effectsVolume))
	pass
pass

#----------------------------------------------------------------------------------------
func PlayMusic(index, loop):
if index < 0 || index > (MusicTotal-1):  return

if MusicCurrentlyPlaying > -1:
	MusicPlayer.stop()

MusicCurrentlyPlaying = index

if index == 0:  MusicPlayer.stream = load("res://media/music/BGM_Title.ogg")
elif index == 1:  MusicPlayer.stream = load("res://media/music/BGM_Playing01.ogg")
elif index == 2:  MusicPlayer.stream = load("res://media/music/BGM_Playing02.ogg")
elif index == 3:  MusicPlayer.stream = load("res://media/music/BGM_Playing03.ogg")
elif index == 4:  MusicPlayer.stream = load("res://media/music/BGM_Playing04.ogg")
elif index == 5:  MusicPlayer.stream = load("res://media/music/BGM_Playing05.ogg")
elif index == 6:  MusicPlayer.stream = load("res://media/music/BGM_Playing06.ogg")
elif index == 7:  MusicPlayer.stream = load("res://media/music/BGM_Playing07.ogg")
elif index == 8:  MusicPlayer.stream = load("res://media/music/BGM_Playing08.ogg")
elif index == 9:  MusicPlayer.stream = load("res://media/music/BGM_Playing09.ogg")
elif index == 10: MusicPlayer.stream = load("res://media/music/BGM_Playing10.ogg")
elif index == 11: MusicPlayer.stream = load("res://media/music/BGM_Playing11.ogg")
elif index == 12: MusicPlayer.stream = load("res://media/music/BGM_Playing12.ogg")
elif index == 13: MusicPlayer.stream = load("res://media/music/BGM_Playing13.ogg")
elif index == 14: MusicPlayer.stream = load("res://media/music/BGM_Playing14.ogg")
elif index == 15: MusicPlayer.stream = load("res://media/music/BGM_Playing15.ogg")
elif index == 16: MusicPlayer.stream = load("res://media/music/BGM_Playing16.ogg")

MusicPlayer.set_volume_db(ConvertLinearToDB(MusicVolume))
MusicPlayer.stream.set_loop(loop)
MusicPlayer.play(0.0)

pass

#----------------------------------------------------------------------------------------
func PlayEffect(plr, index):
if index < 0 || index > (EffectsTotal-1):  return

EffectPlayer[plr][index].set_volume_db(ConvertLinearToDB(EffectsVolume))
EffectPlayer[plr][index].stream.set_loop(false)
EffectPlayer[plr][index].play(0.0)

pass

#----------------------------------------------------------------------------------------
func _process(_delta):

pass


Fully playable “Alpha # 1” coming soon!

OGG sound files are heavily compressed, and the CPU needs to do a lot of extra work to decompress them before they can be played. If you need audio that has little to no delay, use .wav files.

OGG files are better for long playing background sounds, such as music. For sound effects, prefer .wav files.

That helped alot, thank you!