Simple soundboard app with MIDI control.
- Supported file formats: aiff, aac, flac, mp3, m4a, wav
- Add samples by drag & drop or via native file dialog
- Automatic waveform generation for samples
- Samples can be marked as oneshots or loops
- Triggering via MIDI note on or with mouse
Planned:
- Windows and Linux binaries
- Keyboard hotkeys
- More than one sample board
- Automatic metadata extraction
- More control over sample playing / triggering
- Exposing a mobile + tablet-friendly server to local network
- Deep integration with Slipmat.io v3 platform
This project is very young but already usable if it happens to fit your needs. There are a ton of features still missing and the development and testing has only been done on macOS so plenty of work to be done.
- The waveform generation is currently very unefficient. It's also designed for short (<60s) samples only. YMMV.
- The MIDI learn feature works but there's no error handling for overlapping messages. Hitting
Command-R
will reload the window and reset the MIDI connection if it goes wonky. - The samples and the user data is currently stored in
~/Application Support/Soundboard/
. In the future the plan is to allow storing samples in Slipmat cloud for easier use on multiple hosts.
yarn
yarn dev
yarn test
The entire source code of the program is divided into three modules (packages) that are bundled each independently:
packages/main
: Electron main script.packages/preload
: Used inBrowserWindow.webPreferences.preload
. See Checklist: Security Recommendations.packages/renderer
: Electron web page.
- Create following environment variables (in
.env
in development and as CI secrets for GH actions):APPLE_ID
: your developer Apple IDAPPLE_APP_SPECIFIC_PASSWORD
: app specific password for signing and notarization (create here)CSC_KEY_PASSWORD
: your password for the CSC key (exported .p12 cert)CSC_LINK
: base64 hash of your .p12 cert (create w/openssl base64 -in my-cert.p12
)
- Add needed App Sandbox Entitlement Keys in
buildResources/entitlements.mac.plist
Contributions are welcome! Please follow the code of conduct when interacting with others.