TTRPG Soundboard
pendingby Jareika
Soundboard for TTRPG sessions: image tiles (adjustable height), per-title loop/fades, Stop All, root folder + subfolders, plus Playlists (gold tiles with sequential playback).
TTRPG Soundboard (Obsidian Plugin)
A soundboard plugin for Obsidian designed for TTRPG sessions: play sound effects, music and ambience quickly from a folder-based library. Supports multiple simultaneous sounds, per-sound settings, playlists, and note buttons.
Features
Soundboard view
- Grid tiles (thumbnail tiles) or a simple list view (per folder configurable).
- Multiple sounds can play at the same time (optional “Allow overlap” behavior).
- Per sound:
- Play by clicking the tile / row.
- Stop button (highlights while the sound is active).
- Loop toggle (persistent).
- Inline volume slider (persistent).
Long tracks: faster start (MediaElement mode)
Large audio files (for example 1-hour ambience tracks) can be played using an HTMLAudioElement (MediaElement) instead of decoding the entire file into an AudioBuffer.
Notes:
- The threshold is configurable in settings: Threshold for faster large‑file audio playback (mb).
- Files larger than this value will use MediaElement playback.
- Set it to 0 to disable MediaElement playback completely (always decode to
AudioBuffer).
- Preloading skips these large files (preloading large files would defeat the purpose).
Ambience folders (auto loop by default)
Any audio file located inside a folder named Ambience / ambience is treated as ambience:
- Ambience tracks are affected by the global “Ambience volume” slider.
- Ambience tracks default to loop enabled.
- You can still manually disable loop per track (this is stored as an override).
Playlists (subfolders)
Direct subfolders inside a top-level category are treated as playlists (except Ambience):
- Playlists are shown as visually distinct tiles/rows.
- Playback is sequential (track 1 → 2 → 3…).
- Next / Previous controls.
- Stop button (highlights while the playlist is active).
- Playlist settings modal (persistent):
- Fade in/out
- Volume
- Loop playlist
- Shuffle (optional)
Playlist shuffle
- Shuffle can be enabled per playlist (not global).
- If shuffle is enabled:
- The track order is shuffled when the playlist starts.
- When the playlist loops back to the beginning, the order is shuffled again.
Shared thumbnail folder (optional)
Some users prefer separating audio files and images.
If enabled in settings:
- Thumbnails for single tracks are searched only in the shared thumbnail folder, by matching base filename:
- Example:
Dragon Roar.mp3→SharedThumbs/Dragon Roar.png(or.jpg/.jpeg/.webp)
- Example:
- Playlist covers can also be found via the shared thumbnail folder (by playlist folder name).
If disabled:
- Thumbnails are searched next to the audio file (same folder, same base name).
Stop All
A toolbar button stops all currently playing sounds (using the global fade-out time).
Now Playing view
A separate view that lists currently active sounds:
- Stop and Pause/Resume.
- Inline volume slider.
Playlist bugfix:
- If the currently playing track belongs to an active playlist, the Now Playing volume slider controls the playlist volume (so it affects the next/previous tracks as well).
Note buttons (play from Markdown)
You can trigger sounds directly from notes.
Single sound:
- Text button:
[Rain](ttrpg-sound:Soundbar/Dorf/Ambience/Rain.ogg)
- Optional image button:
[Rain](ttrpg-sound:Soundbar/Dorf/Ambience/Rain.ogg "Soundbar/Thumbnails/rain.png")
Playlist:
[BossFight](ttrpg-playlist:Soundbar/Dungeon/BossFight#1-4)#Nplays a single track,#A-Bplays a range.
In Reading View, these links are replaced by clickable buttons.
You can set up buttons directly from every tile.
Folder structure
Recommended structure:
Soundbar/ (Root folder)
Dorf/ (Top-level category)
Ambience/ (Special: ambience tracks, auto-loop default)
Rain.ogg
Crowd.ogg
Tavern Theme.ogg
Tavern Theme.png (Thumbnail next to track if shared folder is disabled)
Dungeon/
Battle/ (Playlist folder)
cover.png (Optional playlist cover)
Track 01.ogg
Track 02.ogg
F.A.Q
- why do I need to set a threshold for large audio files.
- HTMLAudio is not as precise as AudioBuffer/WebAudio. AudioBuffer uses uncompressed PCM, which requires more RAM, but it allows seamless looping and can play multiple sounds simultaneously with high quality. HTMLAudio does not buffer in the same way, and for long tracks it is often better because it starts faster.
- What is then Decoded audio cache?
- The decoded audio cache is that amount of cache you hold up for the AudioBuffer. For thooses ambiences you like to have seamless loop or when you want play multiple sounds at once that aren't played with HTMLAudio. They are stored in RAM and if you would play many sounds in one session they could use quite much of it, so you can decide how much RAM you can spare for faster and better audio access. Only useful for looping and multiple sounds.
License
MIT
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.