Desktop toolkit for RPG Game Masters. Manage music, sound effects, images, presentation canvas, and (beta) online sessions in one place.
| Area | Description |
|---|---|
| 🎵 Multi-track music | Play multiple tracks with per-track volume, loop, seek, speed, and reverb |
| 💥 Sound effects | Dedicated SFX tab for short cues (weapons, doors, ambience) |
| 🖼️ Image sessions | Organize battle maps and handouts by session; toggle visibility |
| 🎬 Presentation canvas | Zoom/pan, z-order, particles; share via screen share |
| 🌐 Online (beta) | Host/join via WebSocket with session ID + PIN; currently logs events only |
| 💾 Persistence | Sessions and tracks auto-saved; metadata cache for fast startup |
| 🌙 Dark theme | Modern dark UI; multilingual (pt-BR, en-US, es-ES) |
- Python 3.10+
- Windows 10/11 tested (Linux/macOS may work with minor tweaks)
| Package | Min version | Purpose |
|---|---|---|
| pygame | 2.5.0 | Audio engine |
| Pillow | 10.0.0 | Image handling |
| mutagen | 1.47.0 | Audio metadata |
| websockets | 12.0 | Online beta (host/join) |
| pyinstaller | 6.0.0 | Optional: build executable |
Install them with pip install -r requirements.txt.
- Clone the repository
git clone https://github.com/YOUR_USERNAME/DM-DungeonMusic.git cd DM-DungeonMusic - Create a virtual environment (recommended)
python -m venv venv venv\Scripts\activate
- Install dependencies
pip install -r requirements.txt
- Run the app
python main.py
Generate a standalone exe (no Python required):
build.batOutput: dist/DM-DungeonMusic.exe.
DM-DungeonMusic/
├── main.py # Entry point
├── requirements.txt # Dependencies
├── build.bat # PyInstaller build script
├── src/
│ ├── audio_manager.py # Audio engine (tracks, FX, cache)
│ ├── session_manager.py # Image and audio session persistence
│ ├── network_manager.py # WebSocket host/join (beta)
│ └── ui/
│ ├── main_window.py # Main window with tabs
│ ├── audio_panel.py # Music/SFX management
│ ├── image_panel.py # Image sessions
│ ├── network_panel.py# Online tab UI (host/join)
│ ├── canvas_window.py# Presentation canvas
│ └── theme.py # Dark theme
- Audio tab — Add music, play/pause, loop, adjust volume/speed/reverb per track.
- SFX tab — Same controls for short sound effects.
- Images tab — Create sessions, add images, toggle which are visible.
- Presentation tab — Interactive canvas for players (zoom, pan, z-order).
- Online tab (beta) — Host starts a session (session ID + PIN). Players join with host/port/session/PIN; events are logged for now (wire to playback/map actions as next step).
Pro tip: share the Presentation tab via Discord/Zoom/OBS for remote tables.
.mp3 .wav .ogg .flac .opus .webm .m4a
Stored under ~/.dm_dungeon_music/:
tracks_music.json— Music trackstracks_sfx.json— Sound effectscache/metadata.json— Metadata cache (duration, artwork)cache/artwork/— Cached thumbnails
- Fork the repository
- Create a branch (
git checkout -b feature/my-feature) - Commit (
git commit -m "Add feature X") - Push (
git push origin feature/my-feature) - Open a Pull Request
MIT License. See LICENSE for details.