This is a keyboard controlled soundboard for kids to play with that I made when my daughter had a runny nose and had to stay home from school. It can run on your Mac or a Raspberry PI (if you can find one! Any SBC with a 3.5mm output will do) with a speaker and external keyboard attached. It's surprisingly difficult to find a portable speaker that accepts an AUX input nowadays, but here is the one that I'm using - I had to abandon the Amazon Echo in the video because it only starts playing AUX after it detects several seconds of input. If you think your kid will destroy your laptop or keyboard and you're not OK with that, a Blipblox might be a good commercial alternative.
Almost every key on the keyboard corresponds to a different sound effect that my daughter and I curated. The SPACEBAR and ENTER keys map to different fart sounds. F1-F12 are loops, 1-9 and 0 are various synth hits. There's a wide range of sound effects, including the AOL "You've got mail!" sound and the ICQ "uh-oh" sound. For better or for worse, one of the effects is the iOS notification sound.
Sound effects were acquired from all over the Internet, but some sources were:
Expert Software's 5000 Sound Effects CD
wavparty - Tron F. Kennedy "Me & Julio" sample pack
and recordings that I recorded using the Voice Memos iOS app of my daughter and edited and exported as WAV files with Audacity.
Clone the repo somewhere:
git clone git@github.com:bertrandom/totalpartysolutions.git
cd totalpartysolutions
Install the dependencies:
npm install
Run:
node app
and hit keys on your keyboard to trigger the soundboard.
If you'd like to quit, hit Ctrl-C.
If your kid is mashing on the keyboard, they may accidentally hit Ctrl-C. To counteract this, run ./loop.sh instead, which will automatically restart the soundboard when it exits. Then you'll have to hit Ctrl-C twice in quick succession to quit, instead.
Modifier keys (e.g. shift, ctrl, meta) don't trigger sound effects.
If you're using a Mac, by default the F1-F12 keys won't work without holding down the Fn key. You can make them work by going to System Preferences, Keyboard, and checking "Use F1, F2, etc. keys as function keys", or if you use Karabiner-Elements, you can follow these instructions to have them always work in your terminal.
The soundboard only works with .wav files, that are put in the data directory (and it's subdirectories).
If you need to convert an mp3 to wav, you can run:
ffmpeg -i sound_name.mp3 sound_name.wav
In the config directory, you'll find a file called default.json5. Copy this to local.json5 and change it to point to the sound files you want in your data directory. You can just specify the overrides in this file, and they'll layer on top of the default sounds. The .wav extension is automatically appended, so you don't need to add it.
Use the Raspberry Pi Imager to put Raspberry Pi OS Lite on your PI. Before clicking Write, click the Settings icon and enable SSH, set your wifi password, and set your locale settings and keyboard layout.
Boot up your PI and SSH into it.
Update the OS:
sudo apt update
sudo apt upgrade
Install node:
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install nodejs
Install git:
sudo apt install git
Install totalpartysolutions:
git clone https://github.com/bertrandom/totalpartysolutions.git
cd totalpartysolutions
npm install
Always start totalpartysolutions on startup:
cat bashrc_append.txt >> ~/.bashrc
sudo raspi-config
Select: 1 System Options -> S5 Boot / Auto Login -> B2 Console Autologin - Text console, automatically logged in as 'pi' user
and then choose "Finish"
When prompted if you'd like to reboot, choose Yes.
