muse ▸ README.md
updated 2026-06-28
Muse — Phase 1
A personal songwriting companion. Send a feeling to the #muse Discord channel and Muse replies with an interesting chord progression — each chord spelled out, a one-line “why it feels that way”, and a piano audio clip.
Prerequisites
- Node.js 20.6+ (22 recommended)
- FluidSynth + a free piano soundfont:
bash brew install fluidsynth # download a soundfont, e.g. FluidR3_GM.sf2 (MIT) or a Salamander SF2, # and point MUSE_SOUNDFONT_PATH at it - A Discord bot application (Muse’s own), with the MESSAGE CONTENT privileged
intent enabled, invited to your server. Add a
#musechannel and copy its ID.
Setup
cd muse
npm install
cp .env.example .env # fill in DISCORD_TOKEN, DISCORD_CHANNEL_ID, ANTHROPIC_API_KEY, MUSE_SOUNDFONT_PATH
npm test # run the unit tests
npm start # start the bot (keep it running on the always-on Mac)
How it works
handleIntent runs the pipeline: Brain (Claude → Roman numerals + chord symbols +
explanation) → Theory (tonal spells each chord) → Card (text) → MIDI
(midi-writer-js) → Render (FluidSynth → WAV) → Library (SQLite). Every fragment
and progression is saved to muse.db.