Murmur

Positional ambient audio for your Owlbear Rodeo Scenes; sounds that belong in the world, not bolted on top.

Murmur is an Owlbear Rodeo extension that lets the GM place invisible audio emitters on the map. Each emitter plays ambient sound - a crackling campfire, dripping cave water, a bustling market - and the volume fades naturally as a player's token moves closer or further away. Environmental digital signal processing (DSP) presets make the same campfire sound completely different in a cave versus a forest clearing.


Why Murmur?

Most VTT audio tools work like a DJ booth - you press play on a global soundtrack and everyone hears the same thing at the same volume regardless of where their character is located. Murmur works like being there:

A player standing next to a waterfall hears it roar. A player across the map hears a distant rumble, or nothing at all. The same torch crackle sounds intimate in a stone hall, muffled in a forest, and reverberant in a cave. Multiple emitters co-exist independently; a forge hammering in one corner, crowd chatter in another, rain on the roof overhead. In Player mode, each person hears the world from their character's position, not the GM's; no two players hear the same mix. In Party mode, worldmap navigation is simplified, because all the players hear the same things as their characters travel together

The result is ambient audio that reinforces spatial awareness and makes scenes feel alive, without any manual mixing from the GM.


Getting Started

1. Install the Extension

Copy the Murmur manifest URL:

https://murmur.several-record.com/manifest.json

Then head to your Owlbear Rodeo Room's Extras menu -> Extensions -> + (Add Custom Extension), paste the URL, and confirm:

2. Enable Murmur in Your Room

In the Extensions popover, make sure Murmur is toggled on for this Room:

You should see the Murmur icon appear in the top-left extension Action tray.

3. Start Audio

The first time you open Murmur in a session, you may see a Start Audio button. Click it once - browsers require a user interaction before they allow audio playback. This is a one-time action per page load:

 

No microphone access is needed. Murmur only plays audio; it never records audio.


Adding Listeners

When you first click the Start Audio button, you might not have any tokens in the Scene yet, hence no listeners through which to hear any sound effects that you place. So, to enable you to listen to your ambient audio while you build that soundscape, there is one quick but temporary option and two slower but lasting options:

Method 1: GM Preview (quick but temporary)

Click the GM Preview button in the popover to spawn a dedicated GM preview token quickly, located in the middle of your viewport:

 

You can then move it around the Scene to sample the soundscape in different spatial positions during your session preparation, even before you're ready to add Character tokens that will become the listeners for your party:

 

From here you can immediately start adding emitters (see below), but note that your players can't use this GM-only preview token as their own listener, instead they need to listen through a real Character-layer token that you have defined, which is where one of the other two methods (+ Add Listeners or Set as Listener) becomes necessary.

⚠️As soon as you have added a Character-layer listener, the GM Preview mode is cancelled and you switch to listening through one of the defined listener tokens.

In the popover, you can see a small avatar of the preview token, along with an instruction to 'drag GM preview marker on map' to change your listening position, plus an option to Remove the preview token (which you can also do by selecting it in the Scene and deleting it):

*How many listeners do I need?*

If the party has split up and each player is acting independently, they will each need their own listener token that provides their own unique soundscape. Alternatively, if the players are moving through the Scene as a cohesive party then they only need one listener that they all share, giving them the same ambient audio soundscape. Regardless of which mode is in use, at least one listener token needs to be defined in the Scene! The Character-layer tokens that the players already use are perfect candidates for becoming the individual listeners, and likewise if you have a single 'party' token for overland travel then that is ideal for a shared listener.

Method 2a: + Add Listeners (slower but lasting)

The + Add Listeners button will produce a popover with instructions inside it - while this is open you can select any Character-layer tokens in the Scene to add (or remove) them from this pool of listener candidates, and then Cancel or Confirm your changes with the buttons at the foot of the popover:

 

⚠️As soon as you have added at least one Character-layer token as a listener, you are ready to share that listener's audio with your players in-game. The GM's popover also shows an Edit button on the right-hand side of the listener avatars:

 

When that Edit button is selected, the Define Listeners popover re-appears, showing all current listeners:

 

Within this popover, clicking on any Character-layer tokens within the Scene will toggle them into/out of this list, and you can also cancel an existing listener definition by clicking on any token in this pool to remove it - if you hover over a token you'll see it gets a red halo and a tooltip confirming what will happen if it is selected:

Method 2b: Set as Listener (slower but lasting)

Every Character-layer token has an option in its overflow menu to Set as Listener (or Remove Listener if already added):

 

This method also works with multi-selected Character tokens in the Scene, which can all be Set as Listener (or have Remove Listener applied) together.

As soon as any such changes are made, the GM and every player will see new listeners appear in their list, and any removed listeners will disappear.

Live Listener Updates

If a removed listener was the active source of ambient audio for anyone, that person will default back to hearing the first listener in their list (if any), which is confirmed by the blue halo moving onto that avatar:

GM-only Listeners

If the GM needs to have their own private listener for previewing sounds away from what the players can hear, then hiding the listener token in the Scene will remove it from the players' avatar list but leave it available for the GM to select. Within the GM's avatar list, hidden listeners are separated from player-accessible listeners with a vertical line:

⚠️The player-accessible (visible) listeners are to the left of the divider, and the GM-only (hidden) listeners are to the right of the line and have a subtle background tint.


Player Mode

This is the default mode for Murmur, indicated by the GM's Player button near the listener avatars and Edit button:

 

While this mode is active, the GM and each of the players can each choose their own token that represents their character (or a companion, NPC, etc), and all players hear the Scene from their own token's unique perspective. Each player's popover will show Listening from: and their token is also highlighted with a light-blue ring amidst the available options:


Party Mode

This is the opt-in mode for Murmur, indicated by the GM's Party button near the listener avatars and Edit button:

 

While this mode is active, the GM chooses a single token that represents the whole party, and all players hear the Scene from that token's perspective. Each player's popover will show Party listening: and then that party token highlighted with a light-blue ring:

 

If other player-accessible listeners are in the Scene, they will be greyed out in the player's popover and can't be enabled there:

 

The GM can choose between any of these player-accessible listeners, effectively choosing the listening position for everyone just by clicking on one of them (and the blue 'Party' halo will confirm which is currently selected):

 

*Special Party Mode Scenario*

In Party Mode, if the GM has set up any hidden listeners for private previewing of the Scene's soundscapes, these will work like a 'Solo' function for the GM only. They will still be shown in the GM's avatar list on the right-hand side of the vertical separator, but now the GM can select one avatar from the visible (left-hand) listeners for all the players, while still being able to select any of the hidden (right-hand) listeners for themself alone:

 

As you can see above, when the GM solo's one of their own hidden listeners, that avatar gets a yellow halo indicating that the GM is the only person hearing that mix, and the blue halo remains on the Party listener that the players continue to hear.


Adding Preset Emitters

💡Emitters are invisible map markers that define where a sound comes from and how far it reaches

The Presets Palette

Open the Murmur popover and click the +Add Preset Sound button:

 

A palette of icons appears on the canvas - one for each bundled preset:

 

💡The palette can be click-dragged around if it obscures part of the map where you want to add an emitter.

Drag any icon from the palette onto the map to place it. The emitter immediately begins playing for anyone whose token is within range. The palette will be automatically dismissed 20 seconds after the last interaction with it, or immediately if you click its dismiss 'x' icon or its timed Dismiss Palette button in the Action popover:

 

Placed emitters can be duplicated freely - the easiest way is to hold Alt and click-drag a copy out of the original, or use the original token's Duplicate icon:

💡Emitters are added to the Scene as hidden tokens, so that players cannot see them - they only hear the emitters' audio.

Emitter Limit

You can place up to 32 emitters per scene, limited to ensure compatibility with a wide range of computers, tablets, and smartphones. A counter in the emitter controls' header shows the current count, turning yellow above 24 and red at the limit:


The Preset Library

Murmur ships with 18 ambient presets across four categories, ready to use with no setup:

Category Presets
Nature Birdsong, Campfire, Crickets, Ocean Waves, River, Stream, Swamp, Waterfall
Weather Rain, Thunderstorm, Wind
Dungeon Cave Drip, Chanting, Forge, Torch
Urban Crowd, Market, Tavern Music

Many presets use a loop + stinger layering system: a continuous ambient bed (the "loop") with occasional one-shot sounds layered on top (the "stingers"). For example, the Birdsong preset plays a gentle outdoor ambience, with individual bird calls triggered at random intervals over the top of it. Cave Drip has a steady drip loop with occasional rockfall sounds. These stingers are randomised in timing and selection, so the soundscape never feels repetitive.

Each preset also comes with a sensible default DSP - Cave Drip defaults to the Cave reverb, Torch to Stone Hall, Market to Indoor Room - so they sound right straight out of the box.

Beyond the bundled library, you can use audio from the BBC Sound Effects catalogue (16,000+ sounds) or paste any URL to an audio file. See Adding URL Emitters (External Audio Sources) for details.


The Emitter Card

Each emitter appears as a self-contained card in the Action popover, showing its features and settings:

 

This is the default expanded view of an emitter, and from the top downwards, in each row we have:

  1. Collapse/expand chevron, re-ordering drag handle (icon), Emitter type, Emitter label, and Delete button (requires confirmation)
  2. PPM audio meter, audio status message (Loading/Error/Stopped/Playing)
  3. DSP dropdown selector (see Environmental DSP for details)
  4. Pad attenuator for loud sources, audio level slider with numeric readout
  5. Range slider with start and stop distances for the volume fade-out, and their numeric readout shown in grid cells
  6. Find, Mute, Solo, Loop/Once, Loud, and Source buttons

Managing an emitter

When you click an emitter card's chevron icon for its collapsed view, you see a more compact version that allows for more emitters on display at once, like this:

Rows 3-5 within the card are hidden, leaving you with the essential displays and controls only. Pressing the chevron again will expand the card out to its full extent.

The emitter's icon can also be used as a drag-handle for re-ordering this card in the list of emitters, which helps you to organise multiple emitters exactly as you want them.

The emitter's type is a button that expands the Audio Source page within the current card, allowing you to change the source of an emitter after you have created it, instead of having to delete it and place a new emitter of the correct type.

The emitter's label is for you to enter a specific name for this sound source - it is the same as shown in the label under the emitter's icon in the Scene, and you can alter it in either location and the other will update.

The red 'x' gives you a way to delete this emitter from the list, which is the same as selecting the emitter icon in the Scene and deleting it there. When you click this 'x' you will be asked for confirmation with a further click on either Delete or No:

Audio Source page

When you click the emitter's 'type' button in its card (found next to its icon) then you see the Audio Source page open up within the card, replacing the DSP selector, the gain controls, and the Range slider:

 

Initially this will show the current type and sound of this emitter, here it the Torch preset from the Dungeon group, but you can select any of the other presets from any of the other groups (Nature, Weather, and so on).

On the right-hand end of the group buttons are two external groups, which you can learn more about in Adding URL Emitters (External Audio Sources)

When you have selected the source that you want, click the Done button and the Audio Source page will close, returning you to the normal emitter controls.

Environmental DSP

This is where Murmur's audio really comes alive. Each emitter can be assigned a Digital Signal Processing preset that applies reverb and high-frequency filtering, simulating the acoustic character of different environments:

 

Preset Character Best for
Dry / Open Air No reverb, clean and present Outdoor scenes, open fields, hilltops
Forest Clearing HF roll-off, soft diffusion Woodland, jungle, overgrown ruins
Indoor Room Light reverb, natural warmth Taverns, houses, shops, small rooms
Stone Hall Medium reverb with distinct echo Temples, castles, throne rooms, crypts
Cave Heavy reverb, long tail Caverns, mines, underground rivers

The DSP preset selector appears on each emitter card. You can change it at any time - the transition is immediate.

Distance-Dependent Filtering

DSP presets also apply progressive high-frequency roll-off as the listener moves further from the emitter. Close up, you hear the full spectrum. At distance, high frequencies are absorbed and sounds become more 'muffled' - just as they would be in a real space. This happens automatically; there is nothing to configure.


Audio Level Controls

If you find that the bundled sound presets (or your own external audio sources) are too quiet or too loud for your table, you have a slider that provides a gain range from -28dB (decrease to 0.158%) to +12dB (increase to 1,580%), with 0dB resulting in no change:

 

The fixed -12dB Pad button attenuates the incoming signal to about 6% of its original level. The gain slider and the Pad button work together, so when the button is enabled and the slider is at its minimum, the incoming audio is reduced to just 0.01% - one-hundredth of one percent - of its original level!

With these level controls, each emitter can have its volume fine-tuned so that it is audible without being too loud or too quiet.

Distance & Range

Each emitter has a Range slider that defines how soon the volume starts to drop as your listener moves away from it, and at what distance the sound can no longer be heard, both measured in grid squares. A token inside the emitter's range hears the emitter at a calculated volume; a token outside the range hears nothing:

 

The two knobs on the slider show the start and end points of the fade-out zone. The left-hand one defaults to 0, meaning that the volume starts to drop as soon as you move any distance from the source, while the right-hand one shows where the volume drops to zero. This is the norm, so you only see the fade-out end point's value to the right of the slider.

Volume attenuates by a custom 'composite' law, as shown by the green line on the graph below. This is a concession to common misconceptions about how sound behaves, and also to cover both indoor and outdoor environments, offering a 'best of both worlds' approach:

In real life, sound reduces in volume by inverse-square law in open spaces (see the yellow line on the graph below). But, this means that small changes in distance next to the source produce large changes in volume, while the same small changes in distance further away from the source do not cause the same change in volume, and that can feel a little extreme when moving a token on screen. The common assumption is that sound will reduce in volume in a linear way as distance from the source increases, but this makes locating sounds very hard to do, as you don't get that final jump in volume as you zero-in on the source location.

So, our composite law of inverse-square and linear laws gives us the best of both worlds - a nice proximal bump in volume that helps locate the exact sound source when you're near it, and a gentler tailing-off of level as distance increases:

💡The green 'Composite' line on this graph shows how we keep the sharp proximal 'ramp' in the near-field to help with locating the sound, and yet have a generous audio level in the mid-field and far-field to aid with audibility (normalised for Range start and stop values of 0 and 10 grid-squares).

Range 'Plateau' Mode

As an advanced mode, you can choose to have the volume stay equally loud in a plateau zone immediately around the token, by moving the fade's start point up from 0 to 1 or more, moving it away from the centre of the sound source.

For example, a token with a Range value of 2-6 would have:

💡This is useful for emulating a highly reverberant space where sound has nowhere to go but bounce around, while still allowing for a natural-sounding fade beyond the confines of that space. It also supports 'Theatre of the Mind' mode, where a listener token anywhere within a piece of scenery artwork on-screen can hear 100% loudness ambience (from an emitter token with a very large fade-out start value) - because fine spatial positioning is less important in TotM games

Range Rings

When you adjust an emitter's fade-out end point with its Range slider, a coloured circle appears on the map, showing the audible area:

 

Each emitter has a distinct ring colour so you can see overlapping coverage at a glance. You can multi-select the emitter tokens in the Scene to see one or more of their ranges, which helps with identifying overlaps or gaps, and their Range sliders also take on the colour of the rings for quick recognition of the relationship between slider and circle:

 

Range rings are local to the GM's view - players never see them, so the players are never spoiled as to the location of the sound source.

If any of your Ranges have a fade-out distance that does not start at 0 (like the Range 2-6 example given above) then you will also see an inner ring that indicates 'full volume within this plateau range' then the normal composite fade-out curve to the outer ring, then silence beyond that:


Emitter buttons

Each emitter's card has a row of buttons at its foot:

 

 

 

Reverse-Find for Emitter Cards

The Find button in each emitter's card centres your viewport on that token, but sometimes you can already see the token and instead you need to surface its emitter card quickly in the list - a kind of reverse-find function. When you right-click on an emitter token, you can see the Show Sound option in its overflow menu. Selecting that feature will cause the Action popover to open (if it was closed) and scroll to the relevant emitter card, which will pulse with a blue glow for a couple of seconds:

Changing An Emitter Token's Image

Murmur supports making its emitters visible to players (but remember to lock them to prevent accidental movement!) and even supports changing the images used for them. This means that an NPC or object token can be set up as a sound effect initially, and then have its token image swapped out (eg. using OBR's Replace Image feature) to something more meaningful in the Scene. Then when the GM moves that NPC or object around, its looped or intermittent sound goes along with it as it passes nearby the players' listener tokens!


GM Master Controls

 

Player's popover showing 'Audio paused' warning

Persistence

All settings - master volume, per-emitter configuration, emitter positions, listeners - are saved in OBR's metadata so that they persist across page reloads and between sessions. Place your emitters once, and they are there every time you load the Scene.


The Player Experience

💡Players do not see any emitter icons in the Scene or the emitter controls in the popover. They simply hear ambient audio that changes as they move their token around the map.

When a player first opens the Murmur popover, they see:

Then, when they have clicked that button to allow the audio engine to start, they see:

 

In Player mode, if they have several listeners available then they will be able to select between them to hear different audio perspectives from those different locations:

 

That's all. The complexity lives on the GM's side; the player's experience is "move around the map and hear things."


Adding URL Emitters (External Audio Sources)

⚠️Emitters are invisible map markers that define where a sound comes from and how far it reaches.

Beyond the bundled presets, Murmur supports two additional audio sources when you use the +Add URL Sound button at the top of the popover:

1. BBC Sound Effects

The BBC tab in the source browser gives you access to over 16,000 sounds from the BBC Sound Effects catalogue. Type a search term - "medieval forge", "tropical birds", "busy market" - and browse results with descriptions and durations:

 

 

 

⚠️BBC audio is fetched directly from BBC servers by each player's browser - Murmur never downloads or redistributes the files. BBC catalogue metadata is used under the Open Government Licence v3.0. Audio content is linked (not hosted) under the BBC RemArc Content Licence for personal, non-commercial use. See bbc-sound-effects-licence.html for the full analysis.

2. User-Provided URLs

The URL tab lets you paste any direct link to an audio file (supported file formats are .ogg, .mp3, .wav). This works with:

CORS note: The remote server must allow cross-origin requests. If a URL fails to load, it is almost always a CORS restriction on the server side, not a Murmur issue. Freesound preview and BBC Sound Effects URLs are known to work.


Trimming & Stingers

URL emitters (both BBC and user-provided URLs) support waveform trimming - a visual editor that lets you define exactly which portion of the audio file will play.

Trim In / Out Points

Click-drag directly on the waveform display to set two draggable markers:

 

Drag the markers to isolate the best section of a longer recording. A Hear Loop Point button lets you preview the crossover to check for a smooth loop, playing from 1-second before the Out point to 1-second after the In point:

Stinger Mode

Toggle the Loop button onto its Once setting to switch an emitter to stinger mode. In this mode, the emitter plays its audio once, waits for a random duration that falls within a configurable interval, then plays again. This is ideal for randomised playback of incidental effects:

When in stinger mode, interval inputs appear on the Trim Audio row where you can set the minimum and maximum seconds between plays:

 

Set a zero value in both interval fields (which shows a dash - there) to disable stinger mode such that it plays just once and then stops for as long as you are in range of its emitter, ideal for one-off (non-repeating) sound effects:


Sound Zones

💡Sound Zones are a way to cover irregular shapes with ambient audio — rivers, dungeon rooms, forest clearings, or any area where a circular emitter's footprint doesn't quite fit.

Where a circular emitter places a point source with a radius, a Sound Zone uses a polygon you've already drawn on the map. Listener tokens inside the polygon hear full volume, listeners outside will hear the audio fade over a configurable Fade distance as they move away from the polygon's edge.

Creating a Sound Zone

  1. Draw a shape on the map using OBR's built-in drawing tools — the Polygon or freehand Brush tool for custom shapes, or any of the simple shapes made with the Rectangle, Circle, Triangle, and Hexagon tools.

⚠️It must be a 2-dimensional shape with an enclosed area, so the Marker and Line tools are excluded!

  1. Right-click the shape and choose Assign as Sound Zone:

 

The shape stays on the map as drawn, because the polygon boundary is the full-volume area. When it is selected, a semi-transparent coloured border appears around it to show the Fade boundary (where audio falls to silence), which in this example is in 3 grid squares:

 

To remove the zone assignment (reverting the shape to a plain drawing with no audio), right-click and choose Remove Sound Zone:

💡*Removing a Sound Zone is a non-destructive operation, the object remembers your settings but disables the emitter until you use Assign as Sound Zone on it again.

The Zone Card

Assigned zones appear in the popover alongside your circular emitters and can be freely interleaved with them by dragging. The zone card works identically to an emitter card, with one difference: instead of inner and outer Range sliders, zones have a single Fade distance control, which is the distance in grid units over which audio fades from full volume to silence as a token moves outside the polygon:

 

All the same controls are available, and each zone counts toward the 32-emitter limit shown in the popover header.

How Fade Distance Works

This is equivalent to the outer radius on a circular emitter. There is no inner-radius concept, because the polygon itself defines the full-volume boundary.

Notes

⚠️Self-intersecting paths (figure-eights, bowtie shapes) are rejected because one or more parts of the shape cannot have a Fade range applied due to their complex geometry - a warning will appear if you try to use Assign as Sound Zone on such a shape. If you edit an existing sound zone shape and it becomes self-intersecting as a result then the sound zone will be (non-destructively) removed, and cannot be re-instated until the shape's geometry is corrected.


View Modes

The GM's emitter list can be displayed in three main layouts. Click the Full/Tiles/Slim button next to the emitter Add buttons to switch between them:

 

 

 

 

⚠️Your view preference is remembered across sessions.

Drag'n'Drop Re-ordering

Emitters in each of the list layouts can be re-ordered simply by click-dragging their icon to move them to a new position, and all the other emitters will shuffle around to make space:


Using Murmur with Sending

Murmur is designed as a companion to Sending (voice chat for Owlbear Rodeo), though neither extension requires the other.

When both are active, Murmur's audio gain structure ensures that its ambient audio sits comfortably beneath Sending's voice conversation. At matching volume settings, Murmur's output is approximately 12dB quieter than Sending's voice channels - a natural background level that enhances the OBR Scene without competing with speech.

If you find ambient audio too quiet or too loud relative to voice chat, adjust Murmur's master volume slider.

iPhone note: When a Sending voice call is active, iPhone switches to a "play and record" audio session that is approximately 20dB (1,000%) louder than the default "ambient" session. Murmur audio will sound noticeably louder while in a Sending call, and quieter when you leave. This is an iOS system behaviour on iPhone hardware that cannot be changed without microphone access, which we aren't interested in requesting.


How It Works

Every player's browser runs its own audio engine. When the GM places an emitter, each client independently:

  1. Loads the audio (from bundled presets, the BBC Sound Effects library, or a user-provided URL)
  2. Applies DSP - reverb and high-frequency filtering based on the chosen environmental preset
  3. Attenuates by distance - volume falls off naturally based on how far the player's token is from the emitter
  4. Mixes locally - multiple emitters blend together, each with independent volume, DSP, and distance curves

Nothing is streamed from the GM's device. Nothing passes through a server. Each player's browser does the work, so there is no bandwidth cost and no latency. Audio files are cached by a Service Worker for instant replay on return visits - even the bundled library loads from cache after the first session.


Troubleshooting

"I don't hear any audio"

"Audio sounds choppy or distorted"

"A URL emitter shows an error"

"Emitter icons are not visible on the map"

"Audio stops when I switch scenes"


Support

Owlbear Rodeo's Discord is the community hub for all extensions. Join via this invite link: https://discord.gg/u5RYMkV98s and search for Murmur in the extension channels, or open a help request in #extension-help.


Privacy & Licensing

Privacy

Audio Licensing

Scene Data

Murmur stores emitter configuration (positions, volumes, source keys, DSP settings) in OBR scene metadata using the dev.murmur.* namespace. This data persists as part of your OBR room and is not transmitted to any external service.


Icon Credits

Icon Description Author Licence
Emitter type icons (18 designs) Campfire, cave, birds, water, thunder, crowd, etc. Lorc and Delapouite via game-icons.net CC BY 3.0

All emitter icons are converted to 150x150 WebP for cross-device compatibility in Owlbear Rodeo. Original SVG sources retained in the repository.

Third-Party Libraries

Library Purpose Author Licence
Clipper2 (clipper2-ts) Polygon offsetting for sound zone fade rings Angus Johnson (original), Jeremy Tribby (TypeScript port) BSL-1.0