acCompaniment is a professional soundboard application built with Electron, designed for live performance, broadcasting, and advanced audio cue management. It offers robust control over audio playback, extensive customization options, and integration capabilities with Bitfocus Companion.
- Cue Management:
- Create, organize, and trigger audio cues.
- Support for single audio files and complex playlists within a single cue.
- Individual cue properties: volume, fade in/out times, looping, retrigger behavior.
- Playlist-specific properties: shuffle, repeat one item, play modes (play through, stop after item).
- Drag-and-drop interface for adding audio files.
- Automatic discovery of audio file durations.
- Audio Playback Engine:
- Powered by Howler.js for reliable and performant audio handling.
- Visual waveform display for trimming audio start/end points.
- Precise control over playback: play, pause, stop, stop all, fade out and stop.
- Configuration:
- Global application settings for default cue behaviors, audio output device selection.
- Workspace management: Save and load entire cue layouts.
- Option to automatically load the last opened workspace.
- Integration & Control:
- Bitfocus Companion: Seamless integration via a dedicated Companion module (https://github.com/mko1989/companion-module-highpass-accompaniment) for remote triggering of cues and receiving feedback (cue status, playback times).
- HTTP Remote Control: Built-in web interface for remote control via any web browser.
- User Interface:
- Clear and intuitive grid-based layout for cue buttons.
- Real-time display of cue status (idle, playing, paused, cued next).
- Display of current playback time, total duration, and remaining time on cue buttons.
- Dedicated sidebars for cue properties and application configuration.
- Dark theme optimized for live performance environments.
- Easter Egg:
- A fun, hidden 16-bit style game, "Happy Pig!" accessible through Ctrl+Alt+P.
- Operating System: Windows 10/11, macOS 10.15+
- Memory: 4GB RAM minimum, 8GB recommended
- Storage: 200MB for application, additional space for audio files
- Audio: Compatible audio output device
- Node.js 18+ and npm (for development builds)
Download the latest release from the Releases page for your operating system.
- Clone the repository:
git clone <repository-url> cd acCompaniment
- Install dependencies:
npm install
- Run the application:
npm start
- Adding Cues: Drag and drop audio files onto the main grid area to create cues
- Show/Edit Mode: Use the show mode button in top right corrner to change show state (lights or pencile icon)
- Playing Cues: Click on any cue button to start playback
- Edit Mode: Hold Shift while clicking to edit cue properties
- Stop All: Use the red "Don't Panic" button to stop all playing cues
- Ducking: One cue is a ducking trigger, meaning when this cue is played, all the cues with ducking enable will be ducked with the set level.
- Crossfade: When enabled only one cue is able to play and clicking a new one will trigger a crossfade between them.
- Waveform editing: In single cue's properties users can set in and out points on the wave form to cut out unnecessary parts.
- Remote Control: Enable HTTP remote control in settings to access the web interface
The application is built using Electron. Key technologies include:
- Electron: For building the cross-platform desktop application.
- HTML, CSS, JavaScript: For the user interface and core logic.
- Howler.js: For audio playback.
- Node.js: For main process logic and system interactions.
- WebSockets: For communication with the Bitfocus Companion module.
The project follows a standard Electron structure:
main.js- Main Electron processsrc/main/- Main process modulessrc/renderer/- Renderer process (UI) modulesassets/- Application icons and resources
npm start- Start the Electron application in development modenpm run pack- Package the application (without creating installers)npm run dist- Build distributables for all platformsnpm run dist:mac- Build macOS distributablenpm run dist:win- Build Windows distributable
To create distributable packages:
# Install dependencies
npm install
# Build for all platforms
npm run dist
# Or build for specific platform
npm run dist:mac # macOS
npm run dist:win # WindowsBuilt packages will be available in the dist/ directory.
To control acCompaniment from Bitfocus Companion:
- Ensure acCompaniment is running. The internal WebSocket server will start automatically.
- Install the
companion-module-highpass-accompanimentmodule into your Bitfocus Companion setup. - Add an instance of the "acCompaniment" module in Companion.
- Configure the IP address and port if necessary (defaults usually work if Companion and acCompaniment are on the same machine).
- Actions, variables, and feedbacks will become available in Companion to control and monitor cues.
If you encounter issues not covered here, please check the Issues page or create a new issue with:
- Your operating system and version
- Steps to reproduce the problem
- Any error messages
Contributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.
If you like it consider buying me a coffee
This project is licensed under the MIT License - see the LICENSE file for details.