From 144c61533cdd2293aaf1b3b7cfeec8b7ca0df04f Mon Sep 17 00:00:00 2001 From: cheapie Date: Thu, 23 Dec 2021 20:46:24 -0600 Subject: [PATCH] Add support for fading and cutting noteblock sounds Also add a 1kHz sine wave sample, intended for use with this --- nbsounds.lua | 1 + noteblock.lua | 13 ++++++++++++- sounds/digistuff_sine.ogg | Bin 0 -> 7262 bytes 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 sounds/digistuff_sine.ogg diff --git a/nbsounds.lua b/nbsounds.lua index f9ccb2c..6e6a947 100644 --- a/nbsounds.lua +++ b/nbsounds.lua @@ -33,6 +33,7 @@ local valid_sounds = { digistuff_piezo_long = "digistuff_piezo_long_single", digistuff_piston_extend = "digistuff_piston_extend", digistuff_piston_retract = "digistuff_piston_retract", + sine = "digistuff_sine", } local mod_sounds = { diff --git a/noteblock.lua b/noteblock.lua index 58bb747..ef14224 100644 --- a/noteblock.lua +++ b/noteblock.lua @@ -73,7 +73,18 @@ minetest.register_node("digistuff:noteblock", { if type(msg.pitch) == "number" then pitch = math.max(0.05,math.min(10,msg.pitch)) end - if sound then minetest.sound_play({name = sound,gain = volume,},{pos = pos,pitch = pitch,},true) end + if sound then + if type(msg.cut) == "number" and msg.cut >= 0 then + msg.cut = math.min(msg.cut,10) + local handle = minetest.sound_play({name = sound,gain = volume,},{pos = pos,pitch = pitch,},false) + minetest.after(msg.cut,minetest.sound_stop,handle) + elseif type(msg.fadestep) == "number" and type(msg.fadegain) == "number" and msg.fadegain >= 0 and type(msg.fadestart) == "number" and msg.fadestart >= 0 then + local handle = minetest.sound_play({name = sound,gain = volume,},{pos = pos,pitch = pitch,},false) + minetest.after(msg.fadestart,minetest.sound_fade,handle,msg.fadestep,msg.fadegain) + else + minetest.sound_play({name = sound,gain = volume,},{pos = pos,pitch = pitch,},true) + end + end end end }, diff --git a/sounds/digistuff_sine.ogg b/sounds/digistuff_sine.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ed117117cee9bd90edc0496283142b145cc455f2 GIT binary patch literal 7262 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 E02v-fP5=M^ literal 0 HcmV?d00001