From d3ad6567538065906499995cc47004c9716f276a Mon Sep 17 00:00:00 2001 From: Nano Miratus Date: Wed, 18 Feb 2026 06:11:26 +0100 Subject: [PATCH 1/2] fix and optimize sounds and music (on macos?) --- lovely/sound.toml | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/lovely/sound.toml b/lovely/sound.toml index 481300eee..0e70b801d 100644 --- a/lovely/sound.toml +++ b/lovely/sound.toml @@ -98,7 +98,7 @@ elseif request.type == 'sound_source' then SMODS_Sounds[request.sound_code] = { sound_code = request.sound_code, data = request.data, - sound = sound, + should_stream = request.should_stream, per = request.per, vol = request.vol, } @@ -131,6 +131,31 @@ match_indent = true position = 'at' payload = 'RESTART_MUSIC(request)' +[[patches]] +[patches.regex] +target = 'engine/sound_manager.lua' +pattern = """(?[\t ]*)function RESTART_MUSIC\\(args\\)(\n.*){14}""" +line_prepend = '$indent' +position = 'at' +payload = """function RESTART_MUSIC(args) + for k, v in pairs(SOURCES) do + if string.find(k,'music') then + for i, s in ipairs(v) do + s.sound:stop() + end + SOURCES[k] = {} + if not SMODS_Sounds[k] or k == args.desired_track then + args.per = 0.7 + args.vol = 0.6 + args.sound_code = k + local s = PLAY_SOUND(args) + if s then s.initialized = true end + end + end + end + end +""" + # fix looping for music of different length [[patches]] From 7762196d50299543d01bc647405fbb53f9603bf0 Mon Sep 17 00:00:00 2001 From: Nano Miratus Date: Wed, 18 Feb 2026 17:45:37 +0100 Subject: [PATCH 2/2] revise RESTART_MUSIC patch --- lovely/sound.toml | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/lovely/sound.toml b/lovely/sound.toml index 0e70b801d..edb2b18fd 100644 --- a/lovely/sound.toml +++ b/lovely/sound.toml @@ -132,29 +132,26 @@ position = 'at' payload = 'RESTART_MUSIC(request)' [[patches]] -[patches.regex] +[patches.pattern] target = 'engine/sound_manager.lua' -pattern = """(?[\t ]*)function RESTART_MUSIC\\(args\\)(\n.*){14}""" -line_prepend = '$indent' +pattern = '''SOURCES[k] = {} + args.per = 0.7''' +match_indent = true position = 'at' -payload = """function RESTART_MUSIC(args) - for k, v in pairs(SOURCES) do - if string.find(k,'music') then - for i, s in ipairs(v) do - s.sound:stop() - end - SOURCES[k] = {} +payload = '''SOURCES[k] = {} if not SMODS_Sounds[k] or k == args.desired_track then - args.per = 0.7 - args.vol = 0.6 - args.sound_code = k - local s = PLAY_SOUND(args) - if s then s.initialized = true end - end - end - end - end -""" + args.per = 0.7''' + +[[patches]] +[patches.pattern] +target = 'engine/sound_manager.lua' +pattern = '''local s = PLAY_SOUND(args) + s.initialized = true''' +match_indent = true +position = 'at' +payload = '''local s = PLAY_SOUND(args) + if s then s.initialized = true end + end''' # fix looping for music of different length