Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
| Date uploaded | a week ago |
| Version | 0.1.0 |
| Download link | Wire-WiresAcoustics-0.1.0.zip |
| Downloads | 37 |
| Dependency string | Wire-WiresAcoustics-0.1.0 |
README
Wire's Acoustics
Ray traced room acoustics, occlusion and an HRTF for Valheim's audio. Client side.
Video
Coming later (not recorded yet).
How it works
Everything is measured from the audio listener (the camera), never from the character.
1. Room measurement
- Every 0.2 s, 64 rays in evenly spread directions (Fibonacci sphere) from the listener, up to 50 m, against building pieces, terrain, rock and static objects. Cast as one Unity
RaycastCommandbatch on worker threads; the results are read on the next tick. - From the first hit of each ray:
-
Enclosure: share of level and upward rays that hit something.
-
Mean free path: average hit distance (the room's size as sound sees it).
-
Absorption (share of sound energy a surface swallows) by what was hit:
Surface Absorption Stone, ashstone, ice 0.03 Marble 0.02 Iron 0.04 Ancient 0.05 Hardwood, timber 0.09 Wood 0.12 Furniture, stations, racks, props (non-building pieces) 0.30 Beds, banners, carpets (the game's comfort groups), rugs, hides, cloth 0.55 Terrain (soil, grass) 0.35 Rock 0.04 Trees, other 0.15 Ray that hit nothing (open sky, doorway) 1.0 Building pieces count as walls by their build category (the hammer's building tabs); everything else is furniture.
-
- Decay time from Sabine's formula, RT60 = 0.161 V / (S a). With the mean free path l = 4V/S this is RT60 = 0.04 l / a.
- Reverb level from the room constant, proportional to (1 - a) / a: a bare stone room rings, a furnished one barely does.
- Early reflection delay from the nearest hits, late reverb delay from the mean free path.
- These drive one
AudioReverbZonethat follows the listener. The game's own reverb zones (the main one is a big 4 s reverb raised by distance only; any other area's zone, a dungeon's, goes the same way) are removed while the mod is on, and the main one's settings are used as the "fully outdoors" end: the result is blended toward the measured room by how enclosed you are. Values are only written when they change audibly. The game's other built-in reverb, its one fixed "Indoor" mix under any roof, is replaced by the measured room while Room reverb is on (still used inside a shield dome).
2. Reverb amount per sound
The game raises each sound's reverb send with distance only (distance / 64 m). Here, indoors, it follows how a real room works: near sounds are mostly direct, sounds past the room's critical distance mostly reverb. Send = d / (d + r), with r = 2 m + 10 m x absorption, blended with the game's value by enclosure.
3. Occlusion (sounds behind walls)
-
One ray from the listener to each sound when it starts. Looping sounds are rechecked once a second, and one-off sounds still playing after 0.4 s (a long roar moving behind a wall) twice a second, batched on worker threads (8 hits per ray).
-
Everything the ray passes counts toward "walls in between": walls, floors, roofs, beams, terrain and rock 1, furniture 0.25, trees and other objects 0.3. The object the sound comes from is skipped (a chest, a workbench, anything the sound sits inside), but a wall a sound is mounted on (a wall torch) still counts from its other side. The last 0.5 m before the sound is skipped.
-
Walls in between set volume and a low-pass cutoff, interpolated:
Walls Volume Low-pass 0 100% none 1 60% 1500 Hz 2 40% 800 Hz 3+ 28% 500 Hz Occluded sounds also get a larger reverb share (what reaches you comes around the walls).
-
Applied in a filter on the sound itself (
OnAudioFilterRead, audio thread): gain and a one-pole low-pass, gliding over about 0.15 s so nothing jumps or clicks (a sound that's just starting takes its value at once).
4. Paths around walls: openings and corners
- Finding openings: inside an enclosed space (enclosure 35% or more), a level or upward room ray that hits nothing left through an opening: a window, a door, a hole in the roof. Neighbouring escaped rays form one opening. It's placed in their average direction at the distance of the walls around it (the hits of the neighbouring rays), and its share of the rays is how big it looks from where you are. Up to 4 openings are kept, biggest first.
- Paths through them (diffraction): a sound with walls in the direct line is also tried through the 2 biggest openings: listener to opening (clear, that's how it was found), opening to sound. A path's walls are what lies between the opening and the sound, plus a bend penalty (sound loses energy turning a corner: 0 straight on, 0.3 walls at 90 degrees, 0.6 turning back), and its volume drops with the extra distance (direct distance / path length). The quieter of the direct line and the best path wins.
- Round corners and over walls: where there's no opening (outdoors behind a house, a partition indoors), five points around the first thing in the way are tried: 2.5 m and 5 m to each side and 3 m above. Each path is listener to point to sound, costed the same way (walls on both legs, bend, extra distance).
- Through an opening or round a corner, the sound is heard from where it comes through: the HRTF places it at the window or the corner, not at the source behind the wall.
- Paths are all cast on worker threads. A new sound behind walls starts muffled (its direct ray is checked at once) and opens up a frame or two later if a path is better.
5. Positionless ambience
The game's 2D ambient sounds (the environment loop with its birds, insects and rain, plus wind and the random ambient calls) have no position to trace to. They're muffled by how enclosed you are (enclosure squared), down to 30% volume and a 700 Hz low-pass when fully enclosed, and keep their own stereo panning. Openings let the outside in: the bigger and nearer an opening, the less muffled, and the environment loop and wind lean toward it (stereo pan up to 80% toward the openings' side, smoothed), so rain indoors comes from the window. Random ambient calls (birds, insects) starting indoors lean the same way, on top of their own left/right placement (a call already on the left stays left).
6. The sea
Vanilla plays the ocean loop at the average centre of the ocean zones (64 m squares) around you, mostly unplaced and spread wide. Here, once a second, rays straight down at 96 points around the listener (16 directions, 10 to 110 m, on worker threads) find deep water (ground 6 m or more under sea level). The loop moves to the nearest shore in that direction (each direction's first deep-water point, weighted by 1 / distance squared) and is then handled like any placed sound: walls, paths through openings and the HRTF. The game still decides its volume.
7. Under water
- Camera under the surface: everything is muffled (45%, 400 Hz).
- A sound from under the surface is muffled the same way, only if the whole source is under: for a creature its head must be under (a swimming greydwarf with its head up is not), anything else 30 cm under. Sounds well above sea level skip the water check.
8. HRTF (headphones)
Unity's own panning is flattened (spread 180) and every placed sound gets, per ear:
- Interaural time difference: Woodworth's formula, (a / c)(theta + sin theta), head radius 8.75 cm, up to about 0.66 ms, as a fractional delay on the far ear.
- Head shadow: the far ear's highs roll off (low-pass from 20 kHz down to 1.8 kHz fully to the side) and it loses up to 30% level; the near ear gains up to 12%.
- Front/back: from behind, the highs above about 3.5 kHz are shaded on both ears.
- Elevation: the outer ear's notch, a peaking filter moving from about 5 kHz (below) to 10 kHz (above), deeper the further a sound is above or below ear level (none level with you, -9 dB from 30 degrees), so sounds in front aren't dulled.
- Wide sources stay wide: the HRTF is scaled by how wide the game made the source (its own spread, before the game widens it with distance): a point source gets full direction, a source spread all around (a waterfall, a shield dome) gets little.
- Stereo clips keep their width (their side signal is added back).
Directions are computed each frame by a read-only Unity transform job on worker threads; the main thread only copies the results.
9. Main menu
The menu scene's own placed sounds (the campfire and the rest) get the HRTF too, and the room measurement runs there like anywhere else.
10. Other placed sounds
Some placed sounds don't use the game's sound-effect system: ship wake and water sounds, in-water splashing, the shield generator's hum, the Ashlands burn sounds, and other mods' own sources. Their prefabs get the filter at load, like sound effects; sources made at runtime are caught every 10 seconds. They get the HRTF (by their width) and wall, opening and corner checks twice a second on worker threads. Music and interface sounds are left alone.
11. Sounds that move with their source
The game spawns many effect sounds at a point and leaves them there: a creature's idle and alert sounds, hits, jumps, deaths. A troll's roar would stay where it started while the troll walks on. Here a sound spawned for a creature or player keeps its place on it until the sound ends or its owner is gone. Sounds the game already attaches are left as they are.
12. Your own sounds
The game plays many player sounds unplaced, so they sound like they're in the camera: equipping, moving, drawing a bow, reloading a crossbow, staff casts. Any unplaced sound on a player, or spawned right at one, is placed at that player and follows them, with the HRTF, walls and the room's reverb like any sound. Its near distance is raised to a third-person camera's distance, so it isn't quieter than before. Interface sounds and the game's cues that aren't sounds in the world (skill level-up, the adrenaline and perfect dodge cues) stay as the game made them.
13. Distance fade
Unity's logarithmic rolloff doesn't reach silence at a sound's max distance, it cuts off there: a sound walking out of range drops from quiet to nothing. Those sounds fade out smoothly over the last 40% of their range instead (distance read on worker threads every frame).
14. Proximity Voice Chat (Azumatt)
Voices are their own audio sources, so they're handled directly: HRTF while placed (normal panning while global), occlusion and paths through openings 5 times a second (batched), under-water muffling by the speaker's head. Its own occlusion and under-water muffle are held open while this mod is on, so nothing applies twice. Its "Voice Reverb" option is left as it is.
Where the work runs, and the cost
| Work | Thread |
|---|---|
| Room rays, sea rays, all paths round walls, rechecks of playing sounds and voices, HRTF directions | Unity worker threads (jobs) |
| Muffling and HRTF per sample | Audio thread |
| One occlusion ray per new sound, finding openings, picking up runtime sources every 10 s, moving sounds with their owner, applying results, reverb values when they change | Main thread |
Measured with a main-thread profiler in a lived-in base (about 75 fps, ~13 ms per frame), six captures: 0.025 to 0.036 ms per frame on the main thread, the latest (with openings and the sea) 0.036 ms; corners, rechecks and other sources were added after that. The mod's own timing agrees: about 0.04 ms per frame for its per-frame work, about 4 microseconds per sound start (150 to 180 sounds every 3 seconds in a busy base), and a short 0.4 to 0.5 ms frame now and then when the room rays meet surfaces they haven't seen yet.
| Without the mod | With it |
|---|---|
| 60 fps (16.7 ms) | 59.9 fps |
| 144 fps (6.9 ms) | 143.3 fps |
Work on the audio thread doesn't hold up frames; if it ever overloaded, you'd hear crackling, not lose fps.
Compared to other mods
Sound Physics Remastered (Minecraft)
Sound Physics Remastered provides "realistic sound attenuation, reverberation, and absorption through blocks" for Minecraft by tracing sound bouncing through the world. Same family of idea. Here: one bounce per ray plus the room acoustics formula instead of many bounces, per-material and per-furniture absorption, our own HRTF for direction, and the work moved to worker and audio threads.
Immersive Weather & Acoustics (Nexus 4161)
From its source (version 8.7.7):
| Immersive Weather & Acoustics | Wire's Acoustics | |
|---|---|---|
| Measured from | The character | The camera |
| "Inside" check | ~90 rays from the character, building pieces only (caves and hills don't count), every physics step (~50 per second), main thread | 64 rays from the camera, pieces, terrain, rock and static objects, 5 times a second, worker threads |
| Result | One inside/outside amount | Enclosure, room size and absorption per material |
| Reverb | Unchanged (the game's distance-only reverb) | Measured room reverb |
| Sounds behind walls | Volume only, one ray per playing sound every frame, building pieces only | Volume and low-pass by number of walls, once per sound (loops once a second, batched) |
| Rain, wind, ocean indoors | Volume multipliers (configurable down to silence) | Rain and wind: volume and low-pass by enclosure, less near openings, leaning toward them. Ocean: placed at the nearest shore, through walls and openings like any placed sound |
| Sounds through windows, doors and round corners | Not handled | Paths through openings and round corners, heard from where they come through |
| Direction | Unity panning | HRTF |
| Visuals | Hides rain and snow particles indoors, caps indoor fog | None |
Running both: set its EnableAudioOcclusion = false so only one audio system is active; its visual weather culling can stay on.
Settings
- General: Enabled, Room reverb, Muffling, HRTF (headphones).
- Tuning: Reverb strength, Muffling strength.
- Debug (advanced): Debug log (measured space, most muffled sound, main-thread time, every few seconds).
Credits
Idea from Vercidium's devlog on ray traced audio ("Physically-based audio: why most games sound fake").
Disclaimer: development is AI assisted. Not fully human or AI. Donations: ko-fi.com/krosshair
CHANGELOG
0.5.7
- Gaps in walls are found properly: the edges of a wall (a gap beside you, a window, the end of a wall, over a half wall) are searched for along the wall itself, at the wall nearest you and the one nearest the sound. Near a gap a sound is nearly as loud as in the open and heard from the gap, and it fades in gradually as you go behind the wall instead of being muffled by the first bit of wall in the way.
- Fixed: turned or slanted walls hid the gaps beside them.
- Faster: what the mod knows about each thing a sound passes (wall, ground, tree, furniture) is worked out once and kept, in one table big enough for a large base (the old ones emptied and started over at around 8000 pieces). The edges found round a wall are kept until the wall or the building near it changes. A building change only rechecks the sounds and the room it's near: the game loads and unloads far-off pieces all the time as you move, and each one used to recheck everything. The sound processing itself runs leaner on the audio thread.
0.5.6
- Less lag after a portal: while the game is still loading a base in, the room is measured once when it's in instead of again for every piece that appears.
0.5.5
- Fixed: the wind and the outside ambience moved in audible steps as you walked (closer to a wall, through a doorway): they were set five times a second and jumped half way each time. They glide smoothly now, at the same speed.
0.5.4
- Fixed: a wall muffled sounds far more than real walls do. Its high end was cut for a single filter stage, but the sound runs through two, so a wall took 25 dB extra at 2 kHz and 36 dB at 4 kHz instead of the measured 16 and 20. Machines and other bright sounds (the spinning wheel) vanished behind one wall; now they come through dull, as measured. Rain, wind and the sea through walls use the same filter and get the same fix.
- Fixed: sound didn't come over a half wall. The way over a wall was tried at least 1 m above the line from you to the sound, which in a 2 m storey is in the ceiling, so it was always blocked and the sound only came through the wall. It's tried just over the wall's top edge now.
- Added: sound also finds its way under something in the way (a raised floor, a table, the gap under a gate), as it already did over and round.
0.5.3
- Changed: looping sounds (fires, forges, lava, machines) follow walls and doors as you move. Their wall check waited for the game's once-a-second update, so stepping through a door or behind a wall took up to a second to be heard. Now it runs when you or the sound move half a metre, a piece is built or removed, or a door opens or closes, and every 2 s otherwise.
0.5.2
- Fixed: walking up to a window with rain outside cut the rain in, and walking away cut it out again. The sound at each opening was tied to the opening's rank, so when a window became the bigger opening (or a new one turned up) its sound jumped across the room at full level. Each opening now keeps its own sound, a new one fades in where it is and a lost one fades out where it was. How closed in you are also glides over a second instead of stepping.
0.5.1
- Fixed: sound got through closed buildings. Pieces snapped together often leave a hairline gap between their colliders, and the one ray from you to a sound could run through it as if the wall were open. Every line is now three rays 8 cm apart, and what two of them agree on counts. The mod was at fault.
- Fixed: the room rays could take such a seam for a window or a door and route sounds through it. A gap counts as an opening only if the rays beside it get through too.
- Fixed: a wall right behind a sound (a torch, a chest or a workbench against the far side of a wall) didn't count: the mod ignored everything within 0.5 m of a sound so its own object wouldn't hide it. Now only the thing making the sound is left out. The mod was at fault.
- Fixed: a door's own sound could be hidden by the door: opening and closing were heard from the middle of the door's box, which for a door first seen open is out beside the doorway. They come from the hinge now, half way up. The mod was at fault.
- Fixed: a line through a busy build (walls, beams, poles, furniture) could have more hits than the mod recorded (8), and the wall could be among the ones dropped. It records 16 now, and a line with more than that counts as through a wall at least.
0.5.0
Indoors and outdoors
- Changed: the sea is shaded like the wind, as the whole shoreline it is: a wall or a house between you and it still shuts most of it out, but a single post or tree no longer can (it was one ray to one point). Heard from between the shore and the way that's open to it.
- Changed: the wind is shaped by what's round you. Behind a wall, a rock or a hill it drops to a low rumble (in their lee), it's heard from where it comes round and over what's upwind, and it comes in gusts and lulls instead of one even loop, more so the harder it blows.
- Changed: the outside heard from inside, rebuilt. Rain, wind, birds and the rest of the biome's sound play from your doors and windows (up to two), just outside each one and heard from there, as loud as the opening's share of the outside (about 10 dB under outside for a door, as measured homes with a window open). Through the walls only a quiet, dull bed gets in, and openings fade in and out instead of cutting. Before, it was one flat sound from nowhere: barely muffled, or nearly unmuffled the moment any opening was found.
- Changed: you can hear through walls. One wall counts once, however many pieces it's built from (a wall, a beam and a pole on one line were three walls), and the first wall takes 12 to 22 dB by how heavy it is, each after it 6 dB more and duller. With the measured losses stacked, a hearth in the next house was at -120 dB: silent, not muffled.
- Changed: muffling is steeper (12 dB an octave instead of 6), so a sound behind a wall is muffled, not just quieter.
- Fixed: sounds outside heard from inside rang through your room's reverb as bright as if they were in it: Unity's room reverb hears a sound before the mod muffles it. A sound now gets the room's reverb only as much as gets through to you, and sounds behind walls no longer get extra reverb.
- Fixed: stepping behind something (off a wall, with the sea behind it) shut a sound off for a moment before its way round was found, then opened it again. The way round is found first now.
- Fixed: the game's random calls (birds, gulls, insects) are placed at your own height, so in a basement or on a hillside they were in the ground, and one could land on your roof and sound like it was in the room. They sit in the open air above their spot, off buildings.
- Fixed: a door or window looking out at a hill or trees didn't count as an opening, and a seam in the roof could.
- Fixed: sounds already playing could be muffled by walls that weren't there: their checks read leftover hits from earlier ones (Unity only clears the first unused slot). The mod was at fault.
- Fixed: a sound behind a wall could seem to come from inside your room. Where you hear it from follows the precedence effect: the sound through the wall arrives first and sets the direction, and a window or corner only takes over when it's more than 10 dB louder.
- Improved: a sound coming through an opening bends round its nearest edge, not its middle, and loses nothing extra when the straight line passes through it (Kurze and Anderson, the lit side of an edge).
Reverb
- Changed: rooms sound like the real rooms they stand for. Valheim's buildings are about twice real size and bare, so they rang like halls; the reverb treats them as half the size and furnished, with the warmer tone from 0.1. Indoors it's cozier the more closed in you are: softer first reflections, a darker ring.
- Improved: stepping out of a space, its reverb dies away over that space's own reverb time (a cave's over seconds, a small room's at once).
Distance and loudness
- Changed: which way a sound is comes from the camera, as you see it; how far it is, what's in the way, which room you're in and whether you're under water come from your character's head again, where the game itself hears from (0.4.0 had moved all of it to the camera). Zooming out no longer makes your own steps quieter, and the camera slipping behind a wall no longer muffles the world.
- Changed: sounds reach further, just quieter. Past the game's own range for a sound it drops 6 dB more each time the distance doubles, instead of fading out to nothing.
- Changed: fires are as loud as how much is burning. The game plays a sconce's crackle as loud as a hearth's; now a sconce is about 14 dB quieter than a campfire.
- Fixed: quieter sounds far off cut out as you walked away (a mead ketill across the hall), and with more sounds than voices Unity cuts an old sound off or doesn't start a new one. Unity mixes only 32 sounds at once in Valheim and a busy base plays about 60: the mod asks for 128, so every sound plays to its end, and sounds too quiet to hear give way first if even that runs out.
- Changed: sounds upwind of you drop by at most 10 dB instead of the measured 20 and more, so a sound you can see doesn't all but vanish in a breeze. A choice for the game, not from a source.
- Removed: sounds arriving late with distance, and the Doppler shift.
Other
- Improved: a falling tree is heard from its trunk as it comes down, not from the stump.
- Fixed: a portal's hum dipped out for a moment as it was handed to the exit portal, which often doesn't count itself in use yet when you land. It's held on through the hand-over.
- Changed: pausing (the Esc menu) keeps the world sounding as it is, instead of switching to the menu's muffled mix.
- Fixed: switching the mod off left the reverb send it had set on sounds already playing; the game's own is put back.
- Improved: with Proximity Voice Chat, a voice comes from the speaker's head (it was 1.5 m above their feet, wrong when they crouch, sit or swim).
- Fixed: with your head under water, sounds under water with you were muffled as if they came through the surface.
- Fixed: on 5.1 and 7.1 speakers with the HRTF on, the centre and rear speakers went silent. The game's own panning is used there now.
- Fixed: a few material values didn't match the sources they're credited to: marble, ice, plank and heavy wood now absorb what the published tables say, and iron and ice walls follow the mass law as published.
- Removed, to keep the mod to what clearly matters: sounds reaching you by bouncing off walls (openings and corners cover it), and a creature's voice being duller from behind it.
- Performance: sounds too quiet to hear (under -60 dB where you are) aren't processed at all; every other sound gets the full HRTF. Distance, air and wind are worked out 4 times a second instead of every frame.
- README: every source links to where its numbers come from, and the values that don't come from a source are listed as such.
0.4.1
- Fixed: an endless loading screen with errors in the game's object clean-up (ZNetScene.RemoveObjects), since 0.3.0. The mod attached creature and weapon sounds to the creature so they'd move with it; in some setups those sounds are networked objects, and they were destroyed together with the creature while the game still tracked them. The mod was at fault. Networked sounds now follow their creature without being attached.
- Fixed: the Room reverb setting's description said the game's own reverb comes back outdoors. It doesn't: the mod's reverb is used everywhere and goes dry in the open.
0.4.0
- Changed: you now hear from the camera, not from your character. Left and right, near and far, and which room you're in follow your view.
- Fixed: a room's size counted the sky or the hills seen through its windows, doors and gaps, so rooms seemed several times bigger than they are.
- Improved: every sound gets the full HRTF. Before, only the nearest few did and the rest kept only a louder near ear, so you couldn't tell where a distant fight or animal was. The simpler version saved too little to be worth it.
- Removed: the echo off cliffs and big walls in the open. It was rarely heard and cost audio processing on every nearby sound while it was on. The room's reverb is unchanged.
- Improved: how much the air dulls distant sounds now follows the international standard for it (ISO 9613-1), with the weather: the game's warm, cold and freezing are matched to the real Norwegian weather they're modelled on (a Bergen summer day and night, the mountains in winter). Sounds 10 to 60 m away were too bright before.
- Improved: rocks, furniture and tree trunks between you and a sound now muffle it by their size: the sound goes over and round them, so a trunk barely matters and a boulder takes the highs off (the same barrier formula as corners and hills, over the top and round both sides). Before they all took off the same fixed amount.
- Improved: how much a room's reverb dulls over time and how bright its reflections are now come from what the room is made of, from published absorption figures per material (stone keeps the highs ringing, wood swallows the lows), plus the air.
- Improved: sound reaching you by bouncing off a wall is now as loud as the reflection would really be: what the surface doesn't absorb, mirrored where the angle is right and scattered evenly elsewhere, by how rough each material is.
- Removed: the forest's own reverb tail. Its values weren't backed by measurements.
- Changed: the ground, trees and iron now absorb each frequency band by published data. Ground uses the Nord2000 ground classes per biome (snow, moss, grass, forest floor, sand, packed ash), trees use measured bark, iron uses steel. Before, they had one rough value for every frequency.
- Improved: walls, floors, roofs and doors now block sound as much as real ones measure, by their material and thickness: a wood wall like a solid timber wall (about 29 dB of the lows, 37 dB at mid frequencies), a door like a solid wood door (less, as doors leak), stone like a brick wall (far more). Through a wall you hear a muffled but still recognisable sound, not just a rumble. Hills, rocks, trees and furniture are unchanged.
- Improved: indoors, the outside (rain, wind, birds) comes in through the openings and the open sky; what gets through closed walls is a faint low rumble. With the HRTF, it now comes fully from the openings' direction, not partly.
- Improved: sound bending round a corner or through a doorway loses what real sound does (the barrier formula used for noise walls, capped at 20 dB), more of its highs the longer the detour. Before it lost about 1 dB.
- Improved: wind. Downwind a sound carries a few dB further; upwind it can drop by up to 20 dB from about 100 m away, as measured outdoors (it was at most 4 dB). The game's wind is matched to real wind speeds by its snow storm being a blizzard.
- Improved: indoors, a random bird or insect call starts outside your walls instead of somewhere in your room, so it comes in through the windows and doors from their direction.
- Improved: a hill between you and a sound is now treated as what it is, a ridge the sound goes over: the higher it rises above the line between you, the more it takes off (the same barrier formula as corners).
- Improved: how much reverb a sound gets indoors now uses the standard critical distance (from the room's measured size and reverb time) instead of a fixed guess.
- Improved: under water. Sound crossing the surface keeps about 0.1% of its energy, as physics says (about 30 dB quieter), without the old muffling, which wasn't based on anything.
- Improved: the sea is a long shoreline, so it now fades 3 dB per doubling of distance like a real line of sound, not 6.
- Removed: the crackle fix from 0.2.7. Repairing the clicks in the game's sound files also took detail out of many deep sounds (footsteps, landings, climbing on stone), leaving them dull and distorted at random, depending on which variant of a sound played. A worse problem than the one it fixed, so the game's sound files are left as they ship again.
- Performance: the audio processing no longer times itself unless the debug log is on.
0.3.0
- Improved: sounds come from where they're made. The game often plays a sound at a character's feet or at the base of a piece:
- Weapon swings and attacks come from the weapon and follow the swing. A bow's draw comes from the bow, the hammer's build sound from your hand.
- Holstering comes from the slot on your back the item goes to, dropping from your hand, eating and drinking from your head, picking up from where the item was.
- Creatures' growls, roars, calls and bites come from their head, their swings and claws from their weapon or arm, stomps and slams from their feet. A troll's roar and its club swing now come from two different places.
- Chests sound from their lid, fires (sconces, hearths, braziers) from their flame, doors, smelters, fermenters and other pieces from their middle. Crafting sounds come from the crafting station instead of from you.
- Improved: anything that moves takes its sounds with it: reloading a crossbow or grappling hook, animals and pets, sounds on ships and carts.
- Improved: a ship's wake and water and other sounds outside the game's usual sound system now get the Doppler effect too.
- Removed: the "heard from its open part" backup from 0.2.7. It isn't needed now that sounds come from where they're made, and it made muffled chests sound like they were off to the right.
- Added: the wind in your ears. Outside, the wind is heard from the way it's blowing from: louder with an ear turned to it, quieter with your back to it. It fades out as you go indoors.
- Performance: fewer raycasts for sounds of pieces and creatures, and less work every frame for the Doppler effect.
0.2.7
- Fixed a vanilla bug: clicks and crackles in the game's sound effects, most obvious on wood and stone footsteps because they stand out against those deep sounds. This is in Valheim's own sound files, not something this mod caused. Two things are wrong with them: many clips have tiny bursts of noise baked in, and many were trimmed so they start in the middle of the sound instead of from silence, which clicks every time they play. I tried to fix both and hopefully fully succeeded. The mod repairs the sounds in memory as the game plays them; the game's files are not changed and no audio is added to the mod.
- Improved: if the spot a sound is made at is muffled but part of the thing making it is in the open (a chest set into a wall), it's heard from that open part, so something you can clearly see is heard clearly. Sounds that aren't muffled come from where they always did.
0.2.6
- Sorry, I put the wrong thing in the last changelog. Claude screwed me over: the crackles on wood/stone footsteps are a vanilla bug I'm trying to fix, but he put it in there like it's my damn fault. I shouldn't trust AI with changelogs. Sorry, fellas.
- No changes to the mod itself.
0.2.5
- Fixed: birds, seagulls and other outside sounds came through wooden walls too clearly. A wooden wall muffles as much as it did before 0.2.3 again; stone, marble and iron still muffle more than wood.
- Fixed: random biome sounds (birds, insects) and lava noises use the same game object, so lava could be treated as background ambience. They're now told apart where the game plays them: lava stays a real sound in the world, muffled by walls.
- Fixed: looping sounds the game itself doesn't keep updating were never rechecked for walls after they started. They're now rechecked like other sounds.
- Fixed: short random ambient sounds (an insect, a splash) could be cut off by the game's fade timer before their sound ended; they now play to their natural end.
- Fixed: a sound starting while the same source still played could restart or cut the old one, and a distance-delayed sound was started and then restarted. Delayed sounds now start once, and stale delayed stops are dropped.
- Fixed: possible crackle when a sound switched between full and light HRTF, and a rare case where an echo's memory was reused while still being played.
- Fixed: a sound made right next to you (opening a gate or door, chopping, mining) was attached to your character and turned with it, so it stayed on the same side as you turned. It now stays where it was made; only your own item sounds (equipping, eating, picking up, dropping) move with you.
- Fixed: random ambience indoors (a bird, an insect) kept the left/right it started with as you turned; it now stays in place.
- Debug log: more detail on wildlife sounds, footstep clips and audio-thread cost.
0.2.4
- Improved: entering and leaving caves, crypts and other enclosed spaces updates room reverb much faster, without lingering wet acoustics outside.
- Improved: exterior ambience switches promptly at room boundaries instead of waiting through Valheim's long sequential ambient-loop fades. Normal weather and biome fades keep their original timing.
- Fixed: distant sounds whose fade has already reached silence now stop immediately rather than repeatedly scheduling delayed stops; pending stop requests for the same source no longer accumulate.
- Known issues: occasional clicks on constructed wood/stone footsteps and abrupt endings of some swamp random ambient effects are still under investigation. The experimental footstep attack fade and ambient-clip pitch-timing workaround were removed because they did not resolve the reported problems.
0.2.3
- Optimized: HRTF priority follows estimated audibility rather than distance alone; callbacks for sounds already below -80 dB bypass expensive processing if no audible delayed echo remains. New debug counters break down full/light/plain DSP and silent buffers.
- Optimized: alternative paths are scheduled only for previously blocked sounds; room second-reflection jobs run on demand. The debug log now counts actual opening, corner, first- and second-reflection winners to judge whether added complexity pays off.
- Optimized: still rooms and coastlines reuse recent measurements with periodic refreshes; doors, pieces and new dungeon rooms invalidate the geometry measurements.
- Corrected: extended sounds now base future blocked-path decisions on their least-obstructed sampled point, not always the central ray.
- Added: timber, stone, marble and metal transmit different amounts of sound using the already known collider material; reflection candidates use absorption and angular plausibility in addition to path length. Corner candidates prefer physical blocker edges over fixed arbitrary offsets.
- Fixed: switching the mod off restores vanilla reverb zones instead of losing destroyed components, and reverts modified player and random-ambience AudioSource positioning and stereo panning. Conversion backups live on per-source filters so short-lived sounds don't accumulate stale tracking entries.
- Compatibility: dungeon audio setup uses the per-room placement method rather than the two DungeonGenerator methods whose postfixes Valheim AVX displaced.
- All existing acoustic features remain; the diagnostics help identify which processing and reflection paths are actually useful. Performance improvements vary by scene.
- Note: using Windows Sonic or Dolby Atmos spatial processing alongside the mod's own HRTF can reduce its positional clarity. For best results, disable Windows spatial processing while playing Valheim (manually; no system settings are changed by the mod).
0.2.2
- Fixed: birds and other random ambience could play inside your house, loud and unmuffled (the game places them at a random spot around you, often in your own room). Indoors they're heard through the walls and from the windows, like rain and wind.
- Fixed: rocky valleys and ravines barely echoed: their sides counted as being indoors. Echoes now fade only under a roof.
0.2.1
- Fixed: the mod reported its version as 0.1.2.
- README rewritten.
0.2.0
- Added: sound takes time to travel (343 m/s). A sound far away starts and stops as late as its distance makes it.
- Added: Doppler. Moving sounds shift in pitch as they come and go; our own, so the camera bumping about doesn't make sounds warble.
- Added: portals carry their hum. Going through, it isn't stopped and started again: it glides to where the exit portal will be, rides with you while you load and carries on as the exit portal's hum.
- Added: forests have their own soft reverb tail from the trunks round you.
- Added: the ground counts by what it is where each ray lands (snow, grass, forest floor, mud, sand, rock, paving, tilled soil), and the sea's surface reflects sound instead of rays passing through it to the sea bed.
- Changed: no reverb from the game is used anywhere now. Outdoors is measured like any room: open ground is dry, where the game added the same long reverb everywhere (open mountains sounded wetter than a forest).
- Changed: echo per sound, from each sound's own way there and back, instead of one delay for all; loops don't echo, and how hard the surface is decides how strong it is.
- Changed: quiet sounds fade out sooner than loud ones, by the game's own range for each.
- Changed: all your own movement and action sounds come from your character and move with it; a death wail follows the falling body; a creature's facing only shapes its calls.
- Changed: creatures' and players' shapes are their bodies (a player counted as 4 m wide before).
- Changed: levels of detail for the processing: every sound is processed, the nearest get the full HRTF, the rest a lighter direction, crossfaded when they switch.
- Added: HRTF strength setting.
- Fixed: stutter spikes of a few ms, several times a second. Switching a sound's filter on and off made Unity wait for its audio mixer; filters now stay on and simply pass sounds through when there's nothing to do.
- Fixed: birds, gusts and other random ambience were far too quiet with Realistic distance (up to 20 dB); they keep the game's own fade.
- Fixed: a tick at the start of some sounds (old audio left in the delay line).
- Fixed: errors from creatures without a head point (fish, birds) stopped some sounds being checked.
0.1.3
- Fixed: stutter, distorted sound and hitches where a lot plays at once (a swamp in the rain), worst on slower machines. Only the nearest playing sounds are processed now, up to a count that follows how busy the audio thread really is (measured, lowered at once when it's busy); the rest are left to the game's own panning. Sounds that don't need processing no longer cost anything, and the per-sound work is faster.
- Fixed: forests and swamps sounded like a cave. Trees counted as walls: a dense swamp measured as an enclosed room (long reverb, muffled rain), every trunk muffled sounds and echoed them. Trees now scatter sound instead: they barely enclose you, muffle little and never echo.
0.1.2
- Added: sound reaching you by bouncing. Room rays bounce a second time off what they hit (angle in = angle out), and sounds behind walls also try the shortest bounce paths: down a corridor and round its far corner, round two corners.
- Added: echo. Out in the open, a big hard surface facing you 15 to 50 m away (a cliff, a hillside, a wall) sends sounds back from its direction, delayed by its real distance.
- Added: rain and wind indoors come from the opening's real direction with the HRTF on (behind and above as well as left and right), keeping their stereo.
- Added: the air dulls distant sounds' highs (a fight 60 m away is duller, not just quieter).
- Changed: no more pitch drop for distant sounds in the Mistlands mist (fog doesn't change pitch); they keep their reverb there too.
- Added: Wire's Stackify support. Its chest sounds after a quick stack or restock come from each chest, as world sounds.
- Changed: sounds that used to cut off at their max distance now reach twice as far and fade out there, instead of fading inside their range (a hit 30 m away is heard again).
- Optimized: the list of sounds tracked for direction and distance changes in place instead of being rebuilt; locations and dungeons get their sound filters and lose their reverb zones as they're placed, instead of scene-wide searches every few seconds.
- Changed: the HRTF's outer-ear dip is narrower and only for sounds well above or below you, so equipment and other sounds near your character aren't dulled.
0.1.0
- First upload: ray traced room reverb, muffling through walls, paths through openings and round corners, ambience and under-water muffling, the sea heard from the sea, HRTF, sounds following their source, your own sounds from your character, distance fade, Proximity Voice Chat support.