soundboard is a live-performance music playground inviting everybody to get creative and to experiment with sounds. It is designed to be straightforward to use and to be understandable without knowing all the muso slang. Behind the scenes, it is a React-based Electron app backed by a C++ native module built around the JUCE framework. It started out as a personal project to learn audio programming, but everyone is invited to contribute :).
soundboard is known to work under macOS Big Sur on Intel and M1 macs. If someone wants to get their hands dirty and add Linux or Windows support, that'll make a great first contribution :).
- Prerequisites
- Install Node.js
- Setup SSH key authentication for your GitHub account (technically not required, but you have to adjust the submodule urls otherwise)
- Clone the repo
git clone --recurse-submodules git@github.com:deermichel/soundboard.git
- Install npm dependencies
cd soundboard npm install
- Build and start the app
npm start # or compile on multiple threads to speed up the build JOBS=max npm start
- Optional: After changing native code, you have to remove the built addon to force a rebuild
rm -rf build && npm start
TODO: write some history starting from Pedalboard and the four attempts before this one.
- One super-boring instrument: Sine-wave oscillator - BUT with MIDI support
- Channel mixer with panning and gain controls
- Here's some music while you wait for new features...
- [backend&frontend] audio input mono & stereo
- [backend&frontend] configure audio & midi inputs, outputs
- [backend&frontend] piano sampler unit
- [backend&frontend] session handling
- [backend&frontend] volume meter
- [backend] fix compile warnings
- [backend] review TODOs
- [backend] complete code review (const correctness, method ordering, dead imports, private vs public)
- [backend] setup and add unit tests
- [frontend] complete code review
- [frontend] fix missing or wrong key props
- [frontend] i18n: en, muso slang
- [frontend] review eslint ignores
- [frontend] setup and add unit tests
- [org] design a logo (idea: spotlight, knob, fader)
- [org] package app
- [org] write architecture section in readme
- [backend&frontend] quick transpose
- [frontend] first steps builtin tutorial
- [frontend] i18n: church slang
- [org] setup CI/CD pipeline with GitHub Actions
- [org] publish in app store
- [org] use GitHub projects for this roadmap
- [org] write contribution guide
- Electron (MIT): They invest an incredible effort to make cross-platform desktop development a breeze.
- Feather Icons (MIT): Big shout-out to my former co-intern @colebemis for providing these gorgeous icons.
- JUCE (GPL v3): I consider JUCE as being the washing machine of audio programmers.
- And thanks to all the unmentioned thousands of contributers behind the amazing projects that keep this app running.
This project is released under the GNU GPL v3 License. (See LICENSE for more information.)
soundboard - live-performance music playground
Copyright (c) 2021 Micha Hanselmann
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.