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
- bumblebee01 | Iain McCurdy | CC BY 3.0
- bumblebee02 | 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
- 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
- goatbleat* | Stephan | CC0
- grasshopper | straget | CC0
- horseneigh01 | GoodListener | CC BY 3.0
- horseneigh02 | foxen10 | CC0
- horsesnort01 | madklown | CC0
- horsesnort02 | 0_ciz | CC0
- hyena_01 | authors | CC BY 2.0
- hyena_02 | authors | CC BY 2.0
- hyena_03 | authors | CC BY 2.0
- jaguar_saw | About Zoos | CC BY
- lion_bellow | felix.blume | CC0
- mouse | AntumDeluge | CC0
- owl_hoot | Anthousai | CC0
- peacock | dobroide | CC BY 3.0
- pencil_erase | damsur | CC0
- pencil_write | NachtmahrTV | CC0
- piano | authors | CC0
- pigeon | JavierSerrat | CC0
- quail | PrincessGrace | CC0
- rooster | poorenglishjuggler | CC0
- sheep | mikewest | CC0
- skeleton_bones | AntumDeluge | CC0
- tigerroar01 | videog | CC BY 3.0
- tigersnarl01 | videog | CC BY 3.0
- tigersnarl0[2-4] | schots | CC0
- undeadmoan* | 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
Authors
- hyena: Mathevon N, Koralek A, Weldele M, Glickman S, & Theunissen F
- piano: Scott Joplin & Tim Starling
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
- dugice | AngelPerez_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
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.nodesounddirt_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, theno_prepend
field must be set totrue
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