{"id":22053349,"url":"https://github.com/bertrandom/totalpartysolutions","last_synced_at":"2026-05-11T03:16:35.704Z","repository":{"id":61618985,"uuid":"552764575","full_name":"bertrandom/totalpartysolutions","owner":"bertrandom","description":"Keyboard controlled soundboard for kids","archived":false,"fork":false,"pushed_at":"2023-01-13T23:00:48.000Z","size":38417,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-28T21:46:10.055Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bertrandom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-10-17T07:36:50.000Z","updated_at":"2022-10-18T01:55:52.000Z","dependencies_parsed_at":"2023-02-09T17:30:31.869Z","dependency_job_id":null,"html_url":"https://github.com/bertrandom/totalpartysolutions","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bertrandom%2Ftotalpartysolutions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bertrandom%2Ftotalpartysolutions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bertrandom%2Ftotalpartysolutions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bertrandom%2Ftotalpartysolutions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bertrandom","download_url":"https://codeload.github.com/bertrandom/totalpartysolutions/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245127939,"owners_count":20565203,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-11-30T15:16:22.765Z","updated_at":"2026-05-11T03:16:35.617Z","avatar_url":"https://github.com/bertrandom.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# totalpartysolutions\n\n[![video of kid playing soundboard](https://i.ytimg.com/vi/LTqFutAWEPM/maxresdefault.jpg)](https://www.youtube.com/watch?v=LTqFutAWEPM)\n\nThis 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](https://smile.amazon.com/dp/B01MTB55WH?psc=1\u0026ref=ppx_yo2ov_dt_b_product_details) 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](https://blipblox.com/) might be a good commercial alternative.\n\nAlmost 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.\n\nSound effects were acquired from all over the Internet, but some sources were:\n\n[Expert Software's 5000 Sound Effects CD](https://archive.org/details/5000-snds)\n\n[My Instants](https://www.myinstants.com/en/best_of_all_time/us/)\n\n[wavparty - Tron F. Kennedy \"Me \u0026 Julio\" sample pack](https://wavparty.com/downloads/tron-f-kennedy-me-and-julio-sample-pack/)\n\n[BigSoundBank.com](https://bigsoundbank.com/)\n\nand recordings that I recorded using the Voice Memos iOS app of my daughter and edited and exported as WAV files with Audacity.\n\n## Basic setup (OS X)\n\nClone the repo somewhere:\n```\ngit clone git@github.com:bertrandom/totalpartysolutions.git\ncd totalpartysolutions\n```\n\nInstall the dependencies:\n```\nnpm install\n```\n\n## Usage\n\nRun:\n```\nnode app\n```\n\nand hit keys on your keyboard to trigger the soundboard.\n\nIf you'd like to quit, hit Ctrl-C.\n\nIf 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.\n\nModifier keys (e.g. shift, ctrl, meta) don't trigger sound effects.\n\nIf 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](https://superuser.com/questions/49209/how-to-use-function-keys-as-standard-key-in-one-app-only/1305567#1305567) to have them always work in your terminal.\n\n## Configuration\n\nThe soundboard only works with .wav files, that are put in the `data` directory (and it's subdirectories).\n\nIf you need to convert an mp3 to wav, you can run:\n```\nffmpeg -i sound_name.mp3 sound_name.wav\n```\n\nIn 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.\n\n## Raspberry Pi Setup\n\nUse the [Raspberry Pi Imager](https://www.raspberrypi.com/software/) 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.\n\nBoot up your PI and SSH into it.\n\nUpdate the OS:\n```\nsudo apt update\nsudo apt upgrade\n```\n\nInstall node:\n```\ncurl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -\nsudo apt install nodejs\n```\n\nInstall git:\n```\nsudo apt install git\n```\n\nInstall totalpartysolutions:\n```\ngit clone https://github.com/bertrandom/totalpartysolutions.git\ncd totalpartysolutions\nnpm install\n```\n\nAlways start totalpartysolutions on startup:\n```\ncat bashrc_append.txt \u003e\u003e ~/.bashrc\nsudo raspi-config\n```\n\nSelect:\n1 System Options -\u003e S5 Boot / Auto Login -\u003e B2 Console Autologin - Text console, automatically logged in as 'pi' user\n\nand then choose \"Finish\"\n\nWhen prompted if you'd like to reboot, choose Yes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbertrandom%2Ftotalpartysolutions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbertrandom%2Ftotalpartysolutions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbertrandom%2Ftotalpartysolutions/lists"}