{"id":49776708,"url":"https://github.com/rollberrystudios/bardberry","last_synced_at":"2026-06-02T09:01:05.487Z","repository":{"id":355858509,"uuid":"1229671139","full_name":"RollBerryStudios/BardBerry","owner":"RollBerryStudios","description":"Local-first music, ambience, and SFX cockpit for tabletop RPG sessions.","archived":false,"fork":false,"pushed_at":"2026-05-26T07:36:58.000Z","size":8141,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-26T09:30:00.609Z","etag":null,"topics":["ambience","electron","react","soundboard","tabletop-rpg","typescript","vtt"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RollBerryStudios.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-05T09:20:30.000Z","updated_at":"2026-05-26T07:37:02.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/RollBerryStudios/BardBerry","commit_stats":null,"previous_names":["rollberrystudios/bardberry"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/RollBerryStudios/BardBerry","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RollBerryStudios%2FBardBerry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RollBerryStudios%2FBardBerry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RollBerryStudios%2FBardBerry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RollBerryStudios%2FBardBerry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RollBerryStudios","download_url":"https://codeload.github.com/RollBerryStudios/BardBerry/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RollBerryStudios%2FBardBerry/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33814312,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-02T02:00:07.132Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ambience","electron","react","soundboard","tabletop-rpg","typescript","vtt"],"created_at":"2026-05-11T15:30:30.045Z","updated_at":"2026-06-02T09:01:05.477Z","avatar_url":"https://github.com/RollBerryStudios.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"resources/logo.png\" alt=\"BardBerry Logo\" width=\"220\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eBardBerry\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eLokales Audio-Cockpit für Pen-\u0026amp;-Paper-Runden\u003c/strong\u003e\u003cbr\u003e\n  \u003cem\u003eLocal-first music, ambience, and SFX cockpit for tabletop RPG sessions\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"License: MIT\" src=\"https://img.shields.io/badge/license-MIT-yellow.svg\"\u003e\n  \u003cimg alt=\"Version\" src=\"https://img.shields.io/badge/version-0.1.15-blue.svg\"\u003e\n  \u003cimg alt=\"Electron\" src=\"https://img.shields.io/badge/Electron-41-47848F?logo=electron\u0026logoColor=white\"\u003e\n  \u003cimg alt=\"TypeScript\" src=\"https://img.shields.io/badge/TypeScript-5.9-3178C6?logo=typescript\u0026logoColor=white\"\u003e\n  \u003cimg alt=\"React\" src=\"https://img.shields.io/badge/React-18-61DAFB?logo=react\u0026logoColor=white\"\u003e\n  \u003cimg alt=\"Local First\" src=\"https://img.shields.io/badge/local--first-offline-brightgreen.svg\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#deutsch\"\u003eDeutsch\u003c/a\u003e \u0026nbsp;|\u0026nbsp; \u003ca href=\"#english\"\u003eEnglish\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## Deutsch\n\nBardBerry ist eine **kostenlose, quelloffene Desktop-App für lokale Musik,\nAmbience und Soundeffekte am Spieltisch**. Sie ist für Game Master gebaut,\ndie ihre virtuelle oder hybride Runde atmosphärisch steuern wollen, ohne\nCloud-Konto, Browser-Tab, Abo oder Streaming-Abhängigkeit.\n\nDie App ist aus dem Audio-Workflow von BoltBerry herausgelöst und als\neigenständiges Electron-Projekt neu verpackt: ein fokussiertes Live-Cockpit\nfür Musik, Ambiente, Kampfmusik und schnelle SFX-Boards.\n\n- **Lokal-first** - deine Audio-Dateien und Soundboards bleiben auf deinem Rechner\n- **Live-Mixer** - drei Kanäle für Music, Ambience und Combat\n- **Combat Mode** - friert Musik/Ambience ein, blendet sie aus und stellt Zeitstempel danach wieder her\n- **Scene Deck** - komplette Soundscapes aus Music, Ambience, Combat und aktivem SFX-Board speichern\n- **SFX-Boards** - zehn Slots pro Board, Hotkeys `1` bis `0`, eigene Icons und Loop-Optionen\n- **Bibliothek** - Dateien oder ganze Ordner importieren, suchen, filtern und Kanälen zuweisen\n- **Portable Presets** - JSON-Import/-Export für Bibliotheken und Soundboards\n- **Einheitliche Navigation** - kompakte BoltBerry-App-Chrome mit Wordmark, Kontext-Breadcrumb und separater Aktionsleiste\n\nGebaut mit Electron, React, TypeScript, Vite und Zustand. Läuft auf macOS,\nWindows und Linux.\n\n### Aktueller Release\n\nAktuelle Version: **0.1.15**\n\n- [Neueste Release herunterladen](https://github.com/RollBerryStudios/BardBerry/releases/latest)\n- [Alle Releases anzeigen](https://github.com/RollBerryStudios/BardBerry/releases)\n- Direkter Tag: [v0.1.15](https://github.com/RollBerryStudios/BardBerry/releases/tag/v0.1.15)\n\n| Plattform | Artefakt in der Release |\n|---|---|\n| Windows x64 | `BardBerry.Setup.0.1.15.exe` |\n| Linux x64 | `BardBerry-0.1.15.AppImage`, `bardberry_0.1.15_amd64.deb` |\n| macOS x64 | `BardBerry-0.1.15.dmg`, `BardBerry-0.1.15-mac.zip` |\n| macOS Apple Silicon | `BardBerry-0.1.15-arm64.dmg`, `BardBerry-0.1.15-arm64-mac.zip` |\n\n### Features\n\n| Kategorie | Funktion |\n|---|---|\n| **Live Mixer** | Drei Kanäle: Music, Ambience und Combat mit Play/Pause, Stop, Loop, Seek und separater Lautstärke |\n| **Master Control** | Globale Master-Lautstärke plus separate SFX-Lautstärke |\n| **Combat Mode** | Music und Ambience werden pausiert bzw. heruntergeblendet; beim Beenden werden Positionen und Lautstärken wiederhergestellt |\n| **Scene Deck** | Aktuelle Music-, Ambience-, Combat- und Board-Auswahl als wiederverwendbare Szene speichern, benennen, beschreiben und wieder anwenden |\n| **Themen \u0026 Tracks** | Import einzelner Audiodateien oder rekursiver Ordner-Import |\n| **Themen** | Tracks nach Spielsituationen wie Stadt, Taverne, Dungeon oder Mystisch sortieren; Ordnerimporte werden automatisch als Thema uebernommen |\n| **Channel Assignment** | Tracks per Chip Music, Ambience oder Combat zuweisen; Rechtsklick spielt direkt auf dem jeweiligen Kanal |\n| **SFX Boards** | Mehrere Boards mit jeweils zehn Slots für schnelle Sounds und Loops |\n| **Hotkeys** | SFX-Slots direkt über `1` bis `9` und `0` triggern |\n| **Slot Editor** | Titel, Emoji, eigenes Icon, Sound-Datei, Lautstärke und Loop pro Slot |\n| **Local Assets** | Importierte Audios und Icons werden in den lokalen BardBerry-App-Daten abgelegt |\n| **Import/Export** | Bibliothek inklusive Boards als JSON exportieren und wieder importieren |\n| **Offline Betrieb** | Keine Server, keine Accounts, keine Telemetrie, keine Internetverbindung erforderlich |\n| **App-Chrome** | Kompakte BoltBerry-inspirierte Titelleiste mit einheitlicher Navigation und DPI-sicherem Fensterkontroll-Abstand |\n\n### Bedienung\n\n1. **Audio importieren** - lade einzelne Dateien oder ganze Ordner in die Bibliothek und filtere sie nach Thema.\n2. **Themen pflegen** - erstelle eigene Spielsituationen wie Stadt, Taverne oder Dungeon und weise Tracks direkt in der Liste zu.\n3. **Kanäle füllen** - weise Tracks Music, Ambience oder Combat zu und steuere Lautstärke, Loop, Play/Pause und Seek pro Kanal.\n4. **Szenen speichern** - sichere komplette Soundscapes aus Kanälen und aktivem SFX-Board im Scene Deck.\n5. **SFX nutzen** - belege Board-Slots mit Sounds, Icons und Loop-Optionen; Slots lassen sich per Mausklick oder `1` bis `0` auslösen.\n6. **Shortcuts nachschlagen** - öffne die Hilfe über den Info-Button, `?` oder `F1`; `Escape` schließt Hilfe, Einstellungen und Editoren.\n\n### Unterstützte Dateien\n\n| Typ | Formate |\n|---|---|\n| Audio | `.mp3`, `.ogg`, `.wav`, `.m4a` |\n| Slot-Icons | `.png`, `.jpg`, `.jpeg`, `.webp` |\n| Bibliothek | `.json` |\n\n### Schnellstart\n\n**Voraussetzungen:** Node.js 20+ und npm 10+\n\n```bash\ngit clone https://github.com/RollBerryStudios/BardBerry.git\ncd BardBerry\nnpm install\nnpm run dev\n```\n\n### Builds erstellen\n\n```bash\nnpm run build      # TypeScript + Preload + Renderer kompilieren\nnpm run pack       # Entpacktes App-Verzeichnis für die aktuelle Plattform\nnpm run dist       # Installer/Distributionspakete für die aktuelle Plattform\n```\n\nDie Build-Konfiguration liegt in `electron-builder.yml`.\n\n| Plattform | Ziel |\n|---|---|\n| macOS | `.dmg` und `.zip` für x64/arm64 |\n| Windows | NSIS Installer für x64 |\n| Linux | `.AppImage` und `.deb` für x64 |\n\n\u003e Hinweis: Das Repository ist für lokale, unsigned Builds vorbereitet.\n\u003e Für notarized macOS-Releases oder signierte Windows-Installer müssen\n\u003e eigene Zertifikate und CI-Secrets konfiguriert werden.\n\nFertige Builds liegen als [GitHub Releases](https://github.com/RollBerryStudios/BardBerry/releases)\nbereit. Die Release-Seite enthält Windows-, Linux- und macOS-Artefakte.\n\n### Qualitätssicherung\n\n```bash\nnpm run test:e2e          # Build + Playwright/Electron E2E-Suite\nnpm run test:e2e:headed   # Gleiche Suite mit sichtbarem Fenster\nnpm run test:e2e:update   # Screenshot-Baselines nach absichtlichen UI-Änderungen aktualisieren\n```\n\nDie E2E-Suite startet BardBerry mit isolierten Testdaten, erzeugt lokale\nWAV-/PNG-Fixtures, prüft Mixer-, Scene-Deck-, Bibliotheks-, Combat-, SFX-,\nHotkey- und Persistenz-Flows und validiert Desktop- sowie responsive\nScreenshots.\n\n### Lokale Daten\n\nBardBerry speichert seine Daten im Betriebssystem-AppData-Verzeichnis der\nElectron-App. Dort liegen:\n\n- `data/bardberry-library.json` - Bibliothek, Themen, Szenen, Boards, Lautstärken und Zuweisungen\n- `assets/audio/` - importierte Audiodateien\n- `assets/icons/` - importierte Slot-Icons\n\nDie App validiert Dateitypen anhand von Erweiterung und Magic Bytes und\nbeschränkt einzelne Assets auf 300 MB.\n\n### Projektstruktur\n\n```text\nsrc/\n  main/          Electron Main-Prozess, IPC, Dateidialoge, Asset-Import\n  preload/       Sichere Context Bridge für die Renderer-API\n  renderer/      React-App, Mixer UI, Track Library, SFX Boards\nresources/\n  logo.png       BardBerry Logo\n  icon.png       PNG-App-Icon\n  icon.icns      macOS-App-Icon\nscripts/\n  build-preload.mjs\n```\n\n### Tech-Stack\n\n| Technologie | Verwendung |\n|---|---|\n| Electron 41 | Desktop-Shell und native Dialoge |\n| React 18 | Benutzeroberfläche |\n| TypeScript 5.9 | Typisierte App-Logik |\n| Vite 6 | Renderer-Bundling |\n| Zustand 5 | Audio- und UI-State |\n| HTMLAudioElement | Lokale Wiedergabe von Tracks und SFX |\n| electron-builder | Packaging für macOS, Windows und Linux |\n\n### Mitwirken\n\nIssues, Feature-Ideen und Pull Requests sind willkommen. Bitte halte Änderungen\nfokussiert, teste lokale Builds vor dem PR und beschreibe kurz, welche\nAudio-/UI-Flows betroffen sind.\n\n### Lizenz\n\nApp-Code: [MIT](LICENSE) (c) 2026 RollBerry Studios.\n\n---\n\n## English\n\nBardBerry is a **free, open-source desktop app for local tabletop music,\nambience, and sound effects**. It is built for game masters who want a focused\naudio cockpit for virtual or hybrid sessions without cloud accounts, browser\ntabs, subscriptions, or streaming dependencies.\n\nThe app takes the audio workflow from BoltBerry and turns it into a standalone\nElectron project: a dedicated live mixer for music, ambience, combat music, and\nfast SFX boards.\n\n- **Local-first** - your audio files and boards stay on your machine\n- **Live mixer** - three channels for Music, Ambience, and Combat\n- **Combat mode** - freezes Music/Ambience, fades them down, then restores timestamps afterwards\n- **Scene Deck** - save complete soundscapes from Music, Ambience, Combat, and the active SFX board\n- **SFX boards** - ten slots per board, hotkeys `1` to `0`, custom icons, and loop options\n- **Library workflow** - import files or folders, search, filter, and assign tracks to channels\n- **Portable presets** - JSON import/export for libraries and soundboards\n- **Unified navigation** - compact BoltBerry-style app chrome with wordmark, context breadcrumb, and separate action bar\n\nBuilt with Electron, React, TypeScript, Vite, and Zustand. Runs on macOS,\nWindows, and Linux.\n\n### Current Release\n\nCurrent version: **0.1.15**\n\n- [Download the latest release](https://github.com/RollBerryStudios/BardBerry/releases/latest)\n- [View all releases](https://github.com/RollBerryStudios/BardBerry/releases)\n- Direct tag: [v0.1.15](https://github.com/RollBerryStudios/BardBerry/releases/tag/v0.1.15)\n\n| Platform | Release artifact |\n|---|---|\n| Windows x64 | `BardBerry.Setup.0.1.15.exe` |\n| Linux x64 | `BardBerry-0.1.15.AppImage`, `bardberry_0.1.15_amd64.deb` |\n| macOS x64 | `BardBerry-0.1.15.dmg`, `BardBerry-0.1.15-mac.zip` |\n| macOS Apple Silicon | `BardBerry-0.1.15-arm64.dmg`, `BardBerry-0.1.15-arm64-mac.zip` |\n\n### Features\n\n| Category | What you get |\n|---|---|\n| **Live Mixer** | Three channels: Music, Ambience, and Combat with Play/Pause, Stop, Loop, Seek, and per-channel volume |\n| **Master Control** | Global master volume plus separate SFX volume |\n| **Combat Mode** | Music and Ambience are paused/faded down; when combat ends, positions and volumes are restored |\n| **Scene Deck** | Save, name, describe, and re-apply the current Music, Ambience, Combat, and board selection as reusable scenes |\n| **Themes \u0026 Tracks** | Import individual audio files or recursively import whole folders |\n| **Themes** | Sort tracks by table situations like city, tavern, dungeon, or mystic; folder imports are automatically kept as themes |\n| **Channel Assignment** | Assign tracks to Music, Ambience, or Combat; right-click a chip to play directly on that channel |\n| **SFX Boards** | Multiple boards with ten slots each for quick sounds and loops |\n| **Hotkeys** | Trigger SFX slots from the keyboard with `1` to `9` and `0` |\n| **Slot Editor** | Configure title, emoji, custom icon, sound file, volume, and loop per slot |\n| **Local Assets** | Imported audio and icons are copied into BardBerry's local app data folder |\n| **Import/Export** | Export and import your complete library and boards as JSON |\n| **Offline Use** | No servers, no accounts, no telemetry, no internet connection required |\n| **App Chrome** | Compact BoltBerry-inspired title bar with unified navigation and DPI-safe native-control spacing |\n\n### Usage\n\n1. **Import audio** - add individual files or whole folders to the library and filter by theme.\n2. **Shape themes** - create table situations like city, tavern, or dungeon and assign tracks directly in the list.\n3. **Fill channels** - assign tracks to Music, Ambience, or Combat, then control volume, loop, play/pause, and seek per channel.\n4. **Save scenes** - store complete soundscapes from channels and the active SFX board in the Scene Deck.\n5. **Use SFX** - configure board slots with sounds, icons, and loop options; trigger slots by click or with `1` to `0`.\n6. **Check shortcuts** - open help with the info button, `?`, or `F1`; `Escape` closes help, settings, and editors.\n\n### Supported Files\n\n| Type | Formats |\n|---|---|\n| Audio | `.mp3`, `.ogg`, `.wav`, `.m4a` |\n| Slot icons | `.png`, `.jpg`, `.jpeg`, `.webp` |\n| Library | `.json` |\n\n### Getting Started\n\n**Prerequisites:** Node.js 20+ and npm 10+\n\n```bash\ngit clone https://github.com/RollBerryStudios/BardBerry.git\ncd BardBerry\nnpm install\nnpm run dev\n```\n\n### Building\n\n```bash\nnpm run build      # Compile TypeScript, preload, and renderer\nnpm run pack       # Build an unpacked app directory for the current platform\nnpm run dist       # Build distributable packages for the current platform\n```\n\nPackaging is configured in `electron-builder.yml`.\n\n| Platform | Target |\n|---|---|\n| macOS | `.dmg` and `.zip` for x64/arm64 |\n| Windows | NSIS installer for x64 |\n| Linux | `.AppImage` and `.deb` for x64 |\n\n\u003e Note: The repository is configured for local unsigned builds. Notarized macOS\n\u003e releases or signed Windows installers require your own certificates and CI\n\u003e secrets.\n\nReady-to-use builds are published as [GitHub Releases](https://github.com/RollBerryStudios/BardBerry/releases).\nThe release page contains Windows, Linux, and macOS artifacts.\n\n### Quality Assurance\n\n```bash\nnpm run test:e2e          # Build + Playwright/Electron E2E suite\nnpm run test:e2e:headed   # Same suite with a visible window\nnpm run test:e2e:update   # Refresh screenshot baselines after intentional UI changes\n```\n\nThe E2E suite launches BardBerry with isolated test data, generates local\nWAV/PNG fixtures, covers mixer, Scene Deck, library, combat, SFX, hotkey, and\npersistence flows, and validates desktop plus responsive screenshots.\n\n### Local Data\n\nBardBerry stores its data in the operating system's Electron app data folder:\n\n- `data/bardberry-library.json` - library, themes, scenes, boards, volumes, and assignments\n- `assets/audio/` - imported audio files\n- `assets/icons/` - imported slot icons\n\nThe app validates imported files by extension and magic bytes and limits single\nassets to 300 MB.\n\n### Project Structure\n\n```text\nsrc/\n  main/          Electron main process, IPC, file dialogs, asset import\n  preload/       Safe context bridge for the renderer API\n  renderer/      React app, mixer UI, track library, SFX boards\nresources/\n  logo.png       BardBerry logo\n  icon.png       PNG app icon\n  icon.icns      macOS app icon\nscripts/\n  build-preload.mjs\n```\n\n### Tech Stack\n\n| Technology | Usage |\n|---|---|\n| Electron 41 | Desktop shell and native dialogs |\n| React 18 | User interface |\n| TypeScript 5.9 | Typed app logic |\n| Vite 6 | Renderer bundling |\n| Zustand 5 | Audio and UI state |\n| HTMLAudioElement | Local track and SFX playback |\n| electron-builder | Packaging for macOS, Windows, and Linux |\n\n### Contributing\n\nIssues, feature ideas, and pull requests are welcome. Please keep changes\nfocused, test local builds before opening a PR, and describe which audio or UI\nflows are affected.\n\n### License\n\nApp code: [MIT](LICENSE) (c) 2026 RollBerry Studios.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frollberrystudios%2Fbardberry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frollberrystudios%2Fbardberry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frollberrystudios%2Fbardberry/lists"}