Sound Pack for Minetest
Description:
A Minetest mod that provides a set of free sounds & methods. It is intended as a more universal method for adding sounds to games rather than depending on MTG & default for sounds only.
Licensing:
Sound file sources & licensing:
General Sounds:
Filename (sounds_) / Source | Author | License | Notes |
---|---|---|---|
apple_bite | sonicmariobrotha | CC0 | |
bee | DrDufus | CC0 | |
bees | tom_woysky | CC0 | |
bird* | Jc Guan | CC0 | |
boing | reelworldstudio | CC0 | |
bumble_bee_01 | Iain McCurdy | CC BY 3.0 | |
bumble_bee_02 | CGEffex | CC BY 3.0 | |
cat_meow | blimp66 | CC BY 3.0 | |
chicken_* | www.bonson.ca | CC BY 3.0 | |
clock_tick | AntumDeluge | CC0 | |
coin | greenvwbeetle | CC0 | |
cow_moo* | JosephSardin | CC0 | |
coyote_howl | rogerforeman | CC BY 3.0 | |
cricket | GB01 | CC0 | |
crow_caw | Morris Gevirtz | CC BY 4.0 | |
dog_bark | ivolipa | CC0 | |
duck_quack | Jonathon Jongsma | CC BY-SA 3.0 | |
elephant | vataaa | CC0 | |
entity_hit | sonictechtonic | CC BY 3.0 | |
explosion | JuveriSetila | CC0 | |
frog | kayceemixer | CC0 | |
fuse | Ned Bouhalassa | CC0 | |
gallop_01 | Alan McKinney (alanmcki) | CC BY 3.0 | |
gallop_02 | Alan McKinney (alanmcki) | CC BY 3.0 | |
goat_bleat_* | Stephan | CC0 | |
gorilla_roar | J0ck0 | CC0 | |
grasshopper | straget | CC0 | |
horse_neigh_01 | GoodListener | CC BY 3.0 | |
horse_neigh_02 | foxen10 | CC0 | |
horse_snort_01 | madklown | CC0 | |
horse_snort_02 | 0_ciz | CC0 | |
hyena_01 | ↓ | CC BY 2.0 | |
hyena_02 | ↓ | CC BY 2.0 | |
hyena_03 | ↓ | CC BY 2.0 | |
jaguar_saw | About Zoos | CC BY | |
lion_bellow | felix.blume | CC0 | |
mouse | AntumDeluge | CC0 | |
owl_hoot | Anthousai | CC0 | |
[parrot*][] | Mings | CC BY 3.0 | |
peacock | dobroide | CC BY 3.0 | |
pencil_erase | damsur | CC0 | |
pencil_write | NachtmahrTV | CC0 | |
penguin* | Bidone | CC0 | |
piano | ↓ | CC0 | |
pig_snort | yottasounds | CC BY 3.0 | |
pig_squeal | N/A | CC0 | |
pigeon | JavierSerrat | CC0 | |
puppy_bark | moffet | CC0 | |
quail | PrincessGrace | CC0 | |
rooster | poorenglishjuggler | CC0 | |
sheep | mikewest | CC0 | |
skeleton_bones | AntumDeluge | CC0 | |
tiger_roar_01 | videog | CC BY 3.0 | |
tiger_snarl_01 | videog | CC BY 3.0 | |
tiger_snarl_0[2-4] | schots | CC0 | |
undead_moan_* | AntumDeluge | CC0 | |
vulture | AntumDeluge | CC0 | |
watch_tick | Nicolas4677 | CC0 | |
whistle | pawsound | CC0 | |
wolf_howl | killyourpepe | CC0 | |
wolf_snarl | newagesoup | CC BY 3.0 | |
yak | AntumDeluge | CC0 | |
zebra | Peet J van Eeden | CC BY | |
zipper | AntumDeluge | CC0 |
Node Sounds:
Filename (sounds_node_) / Source | Author | License | Notes |
---|---|---|---|
dig_choppy.* | Sheyvan | CC0 | |
dig_cracky.* | Benboncan | CC BY 3.0 | |
dig_crumbly | Mito551 | CC BY-SA 3.0 | |
dig_gravel.* | lolamadeus | CC0 | |
dig_ice.* | dheming | CC BY 3.0 | |
dig_metal | yadronoff | CC BY 3.0 | |
dig_snappy | blukotek | CC0 | |
dug.* | Mito551 | CC BY-SA 3.0 | |
dug_glass.1 | cmusounddesign | CC BY 3.0 | |
dug_glass.2 | Tomlija | CC BY 3.0 | |
dug_glass.3 | lsprice | CC BY 3.0 | |
dug_gravel.* | lolamadeus | CC0 | |
dug_ice | Angel_Perez_Grandi | CC BY 3.0 | |
dug_metal.* | qubodup | CC0 | |
place* | Mito551 | CC BY-SA 3.0 | |
place_metal.* | Ogrebane | CC0 | |
step_dirt.* | Mito551 | CC BY-SA 3.0 | |
step_glass | Mito551 | CC BY-SA 3.0 | |
step_grass.* | Mito551 | CC BY-SA 3.0 | |
step_gravel | Mito551 | CC BY-SA 3.0 | |
step_hard.* | Erdie | CC BY 3.0 | |
step_ice.* | InspectorJ | CC BY 3.0 | |
step_metal.* | mypantsfelldown | CC0 | |
step_sand.* | worthahep88 | CC0 | |
step_snow.* | Ryding | CC0 | |
step_water.1 | AGFX | CC BY 3.0 | |
step_water.2 | AGFX | CC BY 3.0 | |
step_water.3 | AGFX | CC BY 3.0 | |
step_water.4 | AntumDeluge | CC0 | generated with Audacity |
step_wood.* | Mito551 | CC BY-SA 3.0 |
- hyena: Mathevon N, Koralek A, Weldele M, Glickman S, & Theunissen F
- piano: Scott Joplin & Tim Starling
Usage:
Replacement for default:
If your mod depends on default for node sounds only, then you can easily switch to sounds. Simply add default & sounds as optional dependencies in your mod.conf. sounds overrides methods used by default to its own. For example default.node_sound_dirt_defaults.
Example of overidden method:
function sounds.node_dirt(tbl)
tbl = tbl or {}
tbl.footstep = tbl.footstep or {name="sounds_dirt_step", gain=0.4}
tbl.dug = tbl.dug or {name="sounds_dirt_step", gain=1.0}
tbl.place = tbl.place or {name="sounds_node_place_soft", gain=1.0}
sounds.node(tbl)
return tbl
end
default.node_sound_dirt_defaults = sounds.node_dirt
Example of setting node sounds:
minetest.register_node("foo:bar", {
description = "Foo Node",
sounds = default.node_sound_stone_defaults() -- this is the same as calling `sounds.node_stone()`
...
})
Playing Sounds Manually:
SoundGroup
instances are objects for storing & playing sounds. These objects can be called to play a sound from their group. An index can be specified when called to determine which sound to play. If the index parameter is omitted, a random sound will be picked. A table of arguments can also be passed. This is compatible with SimpleSoundSpec.
Creating SoundGroup
objects:
local s_group1 = SoundGroup({"sound1", "sound2"})
local s_group2 = SoundGroup({"sound3", "sound4", "sound5"})
-- SoundGroup objects can be concatenated with the arithmetic operator
local s_group3 = s_group1 + s_group2
-- to prevent sound file names from being prefixed with "sounds_" when played, the `no_prepend` field must be set to `true`
s_group1(2) -- plays "sounds_sound2"
s_group1.no_prepend = true
s_group1(2) -- plays "sound2"
There are many pre-defined sound groups.
Calling a SoundGroup
object:
-- play random sound from group
sounds.horse_neigh()
-- play specific sound from group
sounds.horse_neigh(2)
-- play random sound from group with parameters
sounds.horse_neigh({gain=1.0})
-- play specific sound from group with parameters
sounds.horse_neigh(2, {gain=1.0})
-- the `play` method is the same as calling the object directly
sounds.horse_neigh:play(2, {gain=1.0})
SoundGroup
objects can also be used in node registration:
minetest.register_node("foo:bar", {
description = "Foo Node",
sounds = {
dig = sounds.cow_moo, -- a random sound from the `sounds.cow_moo` group will be played when digging this node
},
...
Currently using SoundGroup
for node sounds only works for "dig", "dug", & "place".
SoundGroup
objects are tables & are indexed by integer. But using the get
method is more reliable as it will return the string name with "sounds_" prefix if no_prepend
isn't set:
local s_group1 = SoundGroup({"sound1", "sound2"})
local s1 = s_group1:get(1) -- returns "sounds_sound1"
local s2 = s_group1[2] -- returns "sound2"
local s_group2 = SoundGroup({"sound3", "sound4", no_prepend=true})
local s3 = s_group2:get(1) -- returns "sound3"
local s4 = s_group2[2] -- returns "sound4"
The built-in type
function can be used to check for a SoundGroup
instance:
if type(s_group1) == "SoundGroup" then
s_group1()
end