1
0
mirror of https://codeberg.org/tenplus1/ambience.git synced 2024-12-24 01:30:30 +01:00

First Commit by TenPlus1

This commit is contained in:
tenplus1 2014-11-09 19:32:21 +00:00
commit de029527a6
29 changed files with 423 additions and 0 deletions

1
depends.txt Normal file
View File

@ -0,0 +1 @@
default

304
init.lua Normal file
View 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
View 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

Binary file not shown.

BIN
sounds/bird1.ogg Normal file

Binary file not shown.

BIN
sounds/bird2.ogg Normal file

Binary file not shown.

BIN
sounds/bluejay.ogg Normal file

Binary file not shown.

BIN
sounds/canadianloon1.ogg Normal file

Binary file not shown.

BIN
sounds/canadianloon2.ogg Normal file

Binary file not shown.

BIN
sounds/cardinal.ogg Normal file

Binary file not shown.

BIN
sounds/coyote.ogg Normal file

Binary file not shown.

BIN
sounds/craw.ogg Normal file

Binary file not shown.

BIN
sounds/crestedlark.ogg Normal file

Binary file not shown.

BIN
sounds/cricket.ogg Normal file

Binary file not shown.

BIN
sounds/deer.ogg Normal file

Binary file not shown.

BIN
sounds/desertwind.ogg Normal file

Binary file not shown.

BIN
sounds/drippingwater1.ogg Normal file

Binary file not shown.

BIN
sounds/drippingwater2.ogg Normal file

Binary file not shown.

BIN
sounds/frog.ogg Normal file

Binary file not shown.

BIN
sounds/gull.ogg Normal file

Binary file not shown.

BIN
sounds/hornedowl.ogg Normal file

Binary file not shown.

BIN
sounds/lava.ogg Normal file

Binary file not shown.

BIN
sounds/peacock.ogg Normal file

Binary file not shown.

BIN
sounds/raccoon.ogg Normal file

Binary file not shown.

BIN
sounds/robin.ogg Normal file

Binary file not shown.

BIN
sounds/seagull.ogg Normal file

Binary file not shown.

BIN
sounds/swim_splashing.ogg Normal file

Binary file not shown.

BIN
sounds/waterfall.ogg Normal file

Binary file not shown.

BIN
sounds/wolves.ogg Normal file

Binary file not shown.