mirror of
https://codeberg.org/tenplus1/ambience.git
synced 2024-12-23 17:20:30 +01:00
First Commit by TenPlus1
This commit is contained in:
commit
de029527a6
1
depends.txt
Normal file
1
depends.txt
Normal file
@ -0,0 +1 @@
|
||||
default
|
304
init.lua
Normal file
304
init.lua
Normal file
@ -0,0 +1,304 @@
|
||||
|
||||
--= Ambience lite by TenPlus1 (11 Sep 2014)
|
||||
|
||||
local max_frequency_all = 1000 -- larger number means less frequent sounds (100-2000)
|
||||
local SOUNDVOLUME = 1
|
||||
local volume = 0.3
|
||||
local ambiences
|
||||
local played_on_start = false
|
||||
|
||||
-- sound sets
|
||||
local night = {
|
||||
handler = {}, frequency = 20,
|
||||
{name="hornedowl", length=2},
|
||||
{name="wolves", length=4},
|
||||
{name="cricket", length=6},
|
||||
{name="deer", length=7},
|
||||
{name="frog", length=1},
|
||||
{name="raccoon", length=1}
|
||||
}
|
||||
|
||||
local day = {
|
||||
handler = {}, frequency = 80,
|
||||
{name="cardinal", length=3},
|
||||
{name="craw", length=3},
|
||||
{name="bluejay", length=6},
|
||||
{name="canadianloon1", length=10},
|
||||
{name="canadianloon2", length=14},
|
||||
{name="robin", length=4},
|
||||
{name="bird1", length=11},
|
||||
{name="bird2", length=6},
|
||||
{name="crestedlark", length=6},
|
||||
{name="peacock", length=2}
|
||||
}
|
||||
|
||||
local cave = {
|
||||
handler = {}, frequency = 80,
|
||||
{name="drippingwater1", length=1.5},
|
||||
{name="drippingwater2", length=1.5}
|
||||
}
|
||||
|
||||
local beach = {
|
||||
handler = {}, frequency = 20,
|
||||
{name="seagull", length=4.5},
|
||||
{name="beach", length=13},
|
||||
{name="gull", length=1}
|
||||
}
|
||||
|
||||
local desert = {
|
||||
handler = {}, frequency = 20,
|
||||
{name="coyote", length=2.5},
|
||||
{name="desertwind", length=8}
|
||||
}
|
||||
|
||||
local flowing_water = {
|
||||
handler = {}, frequency = 1000,
|
||||
{name="waterfall", length=6}
|
||||
}
|
||||
|
||||
local splash = {
|
||||
handler = {}, frequency = 1000,
|
||||
{name="swim_splashing", length=3},
|
||||
}
|
||||
|
||||
local lava = {
|
||||
handler = {}, frequency = 1000,
|
||||
{name="lava", length=7}
|
||||
}
|
||||
|
||||
-- find how many nodes in range
|
||||
local nodes_in_range = function(pos, search_distance, node_name)
|
||||
nodes = minetest.env:find_nodes_in_area({x=pos.x-search_distance,y=pos.y-search_distance, z=pos.z-search_distance},
|
||||
{x=pos.x+search_distance,y=pos.y+search_distance, z=pos.z+search_distance},
|
||||
node_name)
|
||||
return #nodes
|
||||
end
|
||||
|
||||
local nodes_in_coords = function(minp, maxp, node_name)
|
||||
nodes = minetest.env:find_nodes_in_area(minp, maxp, node_name)
|
||||
return #nodes
|
||||
end
|
||||
|
||||
-- find at least (threshold) nodes in area
|
||||
local atleast_nodes_in_grid = function(pos, distance, height, node, threshold)
|
||||
|
||||
nodes = minetest.env:find_nodes_in_area({x=pos.x-distance,y=height, z=pos.z+20},
|
||||
{x=pos.x+distance,y=height, z=pos.z+20}, node)
|
||||
totalnodes = #nodes
|
||||
if totalnodes >= threshold then return true end
|
||||
|
||||
nodes = minetest.env:find_nodes_in_area({x=pos.x-distance,y=height, z=pos.z-20},
|
||||
{x=pos.x+distance,y=height, z=pos.z-20}, node)
|
||||
totalnodes = totalnodes + #nodes
|
||||
if totalnodes >= threshold then return true end
|
||||
|
||||
nodes = minetest.env:find_nodes_in_area({x=pos.x+20,y=height, z=pos.z+distance},
|
||||
{x=pos.x+20,y=height, z=pos.z-distance}, node)
|
||||
totalnodes = totalnodes + #nodes
|
||||
if totalnodes >= threshold then return true end
|
||||
|
||||
nodes = minetest.env:find_nodes_in_area({x=pos.x-20,y=height, z=pos.z-distance},
|
||||
{x=pos.x-20,y=height, z=pos.z+distance}, node)
|
||||
totalnodes = totalnodes + #nodes
|
||||
if totalnodes >= threshold then return true end
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
-- check where player is and which sounds are played
|
||||
local get_ambience = function(player)
|
||||
|
||||
local pos = player:getpos()
|
||||
|
||||
pos.y = pos.y + 0.2
|
||||
|
||||
if minetest.get_node(pos).name == "default:water_source" then
|
||||
return {splash=splash}
|
||||
end
|
||||
|
||||
pos.y=pos.y - 0.2
|
||||
|
||||
if nodes_in_range(pos, 7, {"default:lava_flowing", "default:lava_source"}) > 5 then
|
||||
return {lava=lava}
|
||||
end
|
||||
|
||||
if nodes_in_range(pos, 6, "default:water_flowing") > 45 then
|
||||
return {flowing_water=flowing_water}
|
||||
end
|
||||
|
||||
if pos.y < 7 and pos.y > 0 and atleast_nodes_in_grid(pos, 60, 1, "default:water_source", 51 ) then
|
||||
return {beach=beach}
|
||||
end
|
||||
|
||||
if nodes_in_range(pos, 6, {"default:desert_sand", "default:desert_stone", "default:sandstone"}) > 250 then
|
||||
return {desert=desert}
|
||||
end
|
||||
|
||||
if player:getpos().y < 5 then
|
||||
return {cave=cave}
|
||||
end
|
||||
|
||||
if minetest.env:get_timeofday() > 0.2 and minetest.env:get_timeofday() < 0.8 then
|
||||
return {day=day}
|
||||
else
|
||||
return {night=night}
|
||||
end
|
||||
end
|
||||
|
||||
-- play sound, set handler then delete handler when sound finished
|
||||
local play_sound = function(player, list, number)
|
||||
|
||||
local player_name = player:get_player_name()
|
||||
|
||||
if list.handler[player_name] == nil then
|
||||
|
||||
local gain = volume * SOUNDVOLUME
|
||||
local handler = minetest.sound_play(list[number].name, {to_player=player_name, gain=gain})
|
||||
|
||||
if handler then
|
||||
list.handler[player_name] = handler
|
||||
|
||||
minetest.after(list[number].length, function(args)
|
||||
local list = args[1]
|
||||
local player_name = args[2]
|
||||
|
||||
if list.handler[player_name] then
|
||||
minetest.sound_stop(list.handler[player_name])
|
||||
list.handler[player_name] = nil
|
||||
end
|
||||
end, {list, player_name})
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
-- stop all sounds that are not in still_playing
|
||||
local stop_sound = function(still_playing, player)
|
||||
|
||||
local player_name = player:get_player_name()
|
||||
|
||||
if not still_playing.cave then
|
||||
local list = cave
|
||||
if list.handler[player_name] then
|
||||
if list.on_stop then
|
||||
minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME})
|
||||
end
|
||||
minetest.sound_stop(list.handler[player_name])
|
||||
list.handler[player_name] = nil
|
||||
end
|
||||
end
|
||||
|
||||
if not still_playing.beach then
|
||||
local list = beach
|
||||
if list.handler[player_name] then
|
||||
if list.on_stop then
|
||||
minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME})
|
||||
end
|
||||
minetest.sound_stop(list.handler[player_name])
|
||||
list.handler[player_name] = nil
|
||||
end
|
||||
end
|
||||
|
||||
if not still_playing.desert then
|
||||
local list = desert
|
||||
if list.handler[player_name] then
|
||||
if list.on_stop then
|
||||
minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME})
|
||||
end
|
||||
minetest.sound_stop(list.handler[player_name])
|
||||
list.handler[player_name] = nil
|
||||
end
|
||||
end
|
||||
|
||||
if not still_playing.night then
|
||||
local list = night
|
||||
if list.handler[player_name] then
|
||||
if list.on_stop then
|
||||
minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME})
|
||||
end
|
||||
minetest.sound_stop(list.handler[player_name])
|
||||
list.handler[player_name] = nil
|
||||
end
|
||||
end
|
||||
|
||||
if not still_playing.day then
|
||||
local list = day
|
||||
if list.handler[player_name] then
|
||||
if list.on_stop then
|
||||
minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME})
|
||||
end
|
||||
minetest.sound_stop(list.handler[player_name])
|
||||
list.handler[player_name] = nil
|
||||
end
|
||||
end
|
||||
|
||||
if not still_playing.flowing_water then
|
||||
local list = flowing_water
|
||||
if list.handler[player_name] then
|
||||
if list.on_stop then
|
||||
minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME})
|
||||
end
|
||||
minetest.sound_stop(list.handler[player_name])
|
||||
list.handler[player_name] = nil
|
||||
end
|
||||
end
|
||||
|
||||
if not still_playing.splash then
|
||||
local list = splash
|
||||
if list.handler[player_name] then
|
||||
if list.on_stop then
|
||||
minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME})
|
||||
end
|
||||
minetest.sound_stop(list.handler[player_name])
|
||||
list.handler[player_name] = nil
|
||||
end
|
||||
end
|
||||
|
||||
if not still_playing.lava then
|
||||
local list = lava
|
||||
if list.handler[player_name] then
|
||||
if list.on_stop then
|
||||
minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME})
|
||||
end
|
||||
minetest.sound_stop(list.handler[player_name])
|
||||
list.handler[player_name] = nil
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
-- player routine
|
||||
local timer = 0
|
||||
minetest.register_globalstep(function(dtime)
|
||||
timer = timer + dtime
|
||||
if timer < 2 then return end
|
||||
timer = 0
|
||||
|
||||
for _,player in ipairs(minetest.get_connected_players()) do
|
||||
ambiences = get_ambience(player)
|
||||
stop_sound(ambiences, player)
|
||||
|
||||
for _,ambience in pairs(ambiences) do
|
||||
|
||||
if math.random(1, 1000) <= ambience.frequency then
|
||||
if ambience.on_start and played_on_start == false then
|
||||
played_on_start = true
|
||||
minetest.sound_play(ambience.on_start,
|
||||
{to_player=player:get_player_name(),gain=SOUNDVOLUME})
|
||||
end
|
||||
play_sound(player, ambience, math.random(1, #ambience))
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
-- set volume command
|
||||
minetest.register_chatcommand("svol", {
|
||||
params = "<svol>",
|
||||
description = "set sound volume (0.1 to 1.0)",
|
||||
privs = {server=true},
|
||||
func = function(name, param)
|
||||
SOUNDVOLUME = param
|
||||
minetest.chat_send_player(name, "Sound volume set.")
|
||||
end,
|
||||
})
|
118
sounds/SoundLicenses.txt
Normal file
118
sounds/SoundLicenses.txt
Normal file
@ -0,0 +1,118 @@
|
||||
--------------Music Lic:
|
||||
Amethystium:
|
||||
--Avalon
|
||||
--Ethereal
|
||||
--Faraway
|
||||
--Strangely Beautiful
|
||||
|
||||
"I can't give you a formal license (legal paperwork) for it, but as long as it's non-commercial I can give you my personal blessing and guarantee that you won't get in trouble for using it :) If that's enough just feel free to use any of my tracks. Please credit the music properly though, and include a link to www.amethystium.com and www.am.mu (it's the same site right now, but the latter will be a label/music store site soon).
|
||||
Best regards,
|
||||
Øystein Ramfjord"
|
||||
|
||||
Jordach:
|
||||
--dark_ambiance
|
||||
--eastern_feeling
|
||||
These sounds are used for the Mod for Minetest; Ambiance.
|
||||
The included sounds are http://creativecommons.org/licenses/by-nc-sa/3.0/
|
||||
Not Used:--mtest
|
||||
|
||||
-----------Sound Lic:
|
||||
--Nightime Sound, Recorded by Mike Koenig, License: Attribution 3.0 http://soundbible.com/951-Nightime.html
|
||||
--Crickets At Night Sound, License: Attribution 3.0 | Recorded by Mike Koenig |http://soundbible.com/365-Crickets-At-Night.html
|
||||
|
||||
--Medium Pack Of Wolves Howling, License: Public Domain | Recorded by fws.gov, http://soundbible.com/277-Medium-Pack-Of-Wolves-Howling.html
|
||||
|
||||
--Horned Owl Sound, License: Attribution 3.0 | Recorded by Mike Koenig , http://soundbible.com/1851-Horned-Owl.html
|
||||
--Bats In Cave Sound, License: Attr-Noncommercial 3.0 | Recorded by Mike Koenig , http://soundbible.com/1939-Bats-In-Cave.html
|
||||
|
||||
--Spooky Water Drops Sound, License: Attribution 3.0 | Recorded by Mike Koenig, http://soundbible.com/380-Spooky-Water-Drops.html
|
||||
|
||||
|
||||
-- Single Water Droplet Sound, License: Attribution 3.0 | Recorded by Mike Koenig, http://soundbible.com/384-Single-Water-Droplet.html
|
||||
|
||||
--HollowWind, Black Boe, Creative Commons 0 License, http://www.freesound.org/people/Black%20Boe/sounds/22331/
|
||||
|
||||
--drippingwater*.ogg sounds: CC0, Dripping Water Mod, by kddekadenz, http://minetest.net/forum/viewtopic.php?id=1688
|
||||
|
||||
--best cardinal bird: License: Attribution 3.0 | Recorded by PsychoBird, http://soundbible.com/1515-Best-Cardinal-Bird.html
|
||||
|
||||
--birdsongnl: the Attribution License, HerbertBoland, http://www.freesound.org/people/HerbertBoland/sounds/28312/ (end)
|
||||
|
||||
--robin2: Attribution License, reinsamba, http://www.freesound.org/people/reinsamba/sounds/32479/ (end)
|
||||
|
||||
--Craw.WAV, Attribution License, inchadney, http://www.freesound.org/people/inchadney/sounds/52450/
|
||||
|
||||
--bluejay.wav, Creative Commons 0 License, UncleSigmund, http://www.freesound.org/people/UncleSigmund/sounds/42382/
|
||||
|
||||
--scuba1*.ogg- digifishmusic, Attribution License, http://www.freesound.org/people/digifishmusic/sounds/45521/
|
||||
|
||||
--Underwater Pool - Attribution 3.0 | Recorded by Mike Koenig, http://soundbible.com/1660-Underwater-Pool.html
|
||||
|
||||
--dolphin_screaming - Creative Commons 0 License, felix.blume, http://www.freesound.org/people/felix.blume/sounds/161691/
|
||||
|
||||
--dolphins - Attribution Noncommercial License, acclivity, http://www.freesound.org/people/acclivity/sounds/13691/
|
||||
|
||||
ComboWind uses:
|
||||
--wind-in-the-trees -Attribution License, laurent, http://www.freesound.org/people/laurent/sounds/16995/
|
||||
--drygrassInWind- Creative Commons 0 License, felix.blume, http://www.freesound.org/people/felix.blume/sounds/146436/
|
||||
|
||||
--Splash: Attribution 3.0 | Recorded by BlastwaveFx.com, http://soundbible.com/546-Fish-Splashing.html
|
||||
|
||||
--small_waterfall Attribution License, volivieri, http://www.freesound.org/people/volivieri/sounds/38390/
|
||||
|
||||
--Lake_Waves_2*, Attribution License, Benboncan, http://www.freesound.org/people/Benboncan/sounds/67884/
|
||||
|
||||
--water_swimming_splashing*, Attribution Noncommercial License, Robinhood76, http://www.freesound.org/people/Robinhood76/sounds/79657/
|
||||
|
||||
--earth01a, Creative Commons 0 License., Halion , http://www.freesound.org/people/Halion/sounds/17785
|
||||
|
||||
--fiji_beach, Creative Commons 0 License, c97059890, http://www.freesound.org/people/c97059890/sounds/21754/
|
||||
|
||||
--seagull, Attribution Noncommercial License., hazure, http://www.freesound.org/people/hazure/sounds/23707/,
|
||||
|
||||
desert:
|
||||
coyote2, Attribution License, rogerforeman, http://www.freesound.org/people/rogerforeman/sounds/68068/
|
||||
http://www.freesound.org/people/Proxima4/sounds/104319/
|
||||
Desert Monolith.wav, Creative Commons 0 License, Proxima4, http://www.freesound.org/people/Proxima4/sounds/104319/
|
||||
Rattlesnake Rattle, Public Domain, fws.gov, http://soundbible.com/237-Rattlesnake-Rattle.html
|
||||
|
||||
flying:
|
||||
crystal_airlines: Attribution License, suonho, http://www.freesound.org/people/suonho/sounds/56364/
|
||||
|
||||
----------------Not used yet:
|
||||
desert:
|
||||
Desert Simple.wav, Creative Commons 0 License, Proxima4, http://www.freesound.org/people/Proxima4/sounds/104320/
|
||||
|
||||
313hummer (Jordan Craige)
|
||||
--echos http://soundcloud.com/jordan-craige/echos-1
|
||||
Creative Commons Attribution license (reuse allowed) Attribution 3.0 Unported (CC BY 3.0)
|
||||
Not Used:--FoamOfTheSea http://soundcloud.com/jordan-craige/foam-of-the-sea
|
||||
|
||||
xi-intersection:
|
||||
http://soundcloud.com/xi-intersection/mass-effect-uncharted-worlds Creative Commons License
|
||||
--not used:
|
||||
http://soundcloud.com/xi-intersection/donkey-kong-country-2-flight
|
||||
http://soundcloud.com/kogyo/kogyo-skalar-m1
|
||||
|
||||
lava:
|
||||
http://www.freesound.org/people/Halion/sounds/17785/ (almost as good cc) (combine with rocks falling?)
|
||||
http://www.freesound.org/people/pushtobreak/sounds/17823/ (attrib non cc really good)
|
||||
http://www.freesound.org/people/klankbeeld/sounds/123970/ (horror rhythm)
|
||||
Rockfall in mine.wav http://www.freesound.org/people/Benboncan/sounds/60085/
|
||||
|
||||
|
||||
http://www.freesound.org/people/snotch/sounds/96175/ (mud volcano)
|
||||
|
||||
--natural night sounds in Boquete.wav, Attribution License, laurent, http://www.freesound.org/people/laurent/sounds/15851/
|
||||
http://www.freesound.org/people/Dynamicell/sounds/17553/
|
||||
http://www.freesound.org/people/juskiddink/sounds/78955/ aspen tree in wind
|
||||
http://www.freesound.org/people/Benboncan/sounds/69761/ wind in hedge birds animals
|
||||
|
||||
|
||||
ButterflyTea:
|
||||
Creative Commons : Attribution-Noncommercial-Share Alike 3.0
|
||||
http://www.jamendo.com/en/track/904012/dance-of-magical-flowers
|
||||
http://www.jamendo.com/en/track/904013/magic-of-the-seventh-world
|
||||
http://www.jamendo.com/en/track/904016/in-search-of-the-soul
|
||||
|
||||
zero-project
|
BIN
sounds/beach.ogg
Normal file
BIN
sounds/beach.ogg
Normal file
Binary file not shown.
BIN
sounds/bird1.ogg
Normal file
BIN
sounds/bird1.ogg
Normal file
Binary file not shown.
BIN
sounds/bird2.ogg
Normal file
BIN
sounds/bird2.ogg
Normal file
Binary file not shown.
BIN
sounds/bluejay.ogg
Normal file
BIN
sounds/bluejay.ogg
Normal file
Binary file not shown.
BIN
sounds/canadianloon1.ogg
Normal file
BIN
sounds/canadianloon1.ogg
Normal file
Binary file not shown.
BIN
sounds/canadianloon2.ogg
Normal file
BIN
sounds/canadianloon2.ogg
Normal file
Binary file not shown.
BIN
sounds/cardinal.ogg
Normal file
BIN
sounds/cardinal.ogg
Normal file
Binary file not shown.
BIN
sounds/coyote.ogg
Normal file
BIN
sounds/coyote.ogg
Normal file
Binary file not shown.
BIN
sounds/craw.ogg
Normal file
BIN
sounds/craw.ogg
Normal file
Binary file not shown.
BIN
sounds/crestedlark.ogg
Normal file
BIN
sounds/crestedlark.ogg
Normal file
Binary file not shown.
BIN
sounds/cricket.ogg
Normal file
BIN
sounds/cricket.ogg
Normal file
Binary file not shown.
BIN
sounds/deer.ogg
Normal file
BIN
sounds/deer.ogg
Normal file
Binary file not shown.
BIN
sounds/desertwind.ogg
Normal file
BIN
sounds/desertwind.ogg
Normal file
Binary file not shown.
BIN
sounds/drippingwater1.ogg
Normal file
BIN
sounds/drippingwater1.ogg
Normal file
Binary file not shown.
BIN
sounds/drippingwater2.ogg
Normal file
BIN
sounds/drippingwater2.ogg
Normal file
Binary file not shown.
BIN
sounds/frog.ogg
Normal file
BIN
sounds/frog.ogg
Normal file
Binary file not shown.
BIN
sounds/gull.ogg
Normal file
BIN
sounds/gull.ogg
Normal file
Binary file not shown.
BIN
sounds/hornedowl.ogg
Normal file
BIN
sounds/hornedowl.ogg
Normal file
Binary file not shown.
BIN
sounds/lava.ogg
Normal file
BIN
sounds/lava.ogg
Normal file
Binary file not shown.
BIN
sounds/peacock.ogg
Normal file
BIN
sounds/peacock.ogg
Normal file
Binary file not shown.
BIN
sounds/raccoon.ogg
Normal file
BIN
sounds/raccoon.ogg
Normal file
Binary file not shown.
BIN
sounds/robin.ogg
Normal file
BIN
sounds/robin.ogg
Normal file
Binary file not shown.
BIN
sounds/seagull.ogg
Normal file
BIN
sounds/seagull.ogg
Normal file
Binary file not shown.
BIN
sounds/swim_splashing.ogg
Normal file
BIN
sounds/swim_splashing.ogg
Normal file
Binary file not shown.
BIN
sounds/waterfall.ogg
Normal file
BIN
sounds/waterfall.ogg
Normal file
Binary file not shown.
BIN
sounds/wolves.ogg
Normal file
BIN
sounds/wolves.ogg
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user