Skip to content

Misfits-Rebels-Outcasts/chord-synth

Repository files navigation

chord-synth

Generate chord progression WAV files. Zero dependencies. Node.js only.

28 named presets, 22 arpeggio patterns, 7 instruments, slash chords (Am/E), transposition, pad/bass/drum tracks, reverb.

Quick Start

# Install globally
npm install -g chord-synth

# Generate a WAV file
chord-synth --preset "C G Am F" --bpm 120 --output pop.wav

# Custom jazz with slash chords
chord-synth --preset "Dm9 | G7/B | Cmaj7 | Am7/E" --instrument piano --drums bossanova --output jazz.wav

# Named preset transposed to key of G
chord-synth --preset "I-V-vi-IV (Pop)" --transpose 7 --output pop_in_G.wav

# Batch render from JSON file
chord-synth --batch render_jobs.json --output ./wavs/

Use as MCP Server

Exposes generate_wav and list_options tools to any MCP-compatible agent (Claude Desktop, Claude Code, Cursor, Windsurf, etc).

Claude Desktop — add to claude_desktop_config.json:

{
  "mcpServers": {
    "chord-synth": {
      "command": "npx",
      "args": ["-y", "chord-synth", "mcp"]
    }
  }
}

Claude Code:

# Add to Claude Code (point to the installed mcp-server.js)
claude mcp add chord-synth -- npx chord-synth --mcp

Then ask Claude: "Generate a sad violin arpeggio over Am F C G at 80 BPM" — it will call generate_wav directly.

ChatGPT Codex:

Prompt:
I have a mcp tool to generate chord wav files at https://github.com/Misfits-Rebels-Outcasts/chord-synth,
use it generate a chord progression for violin "Am Dm G C" at 128 bpm 

Use as Node.js Module

const { renderJob, PRESETS, SCHEMA } = require('chord-synth');
const fs = require('fs');

// Render a WAV buffer
const wav = renderJob({
  preset: "C G Am/E F",
  bpm: 120,
  instrument: "piano",
  pattern: 1,        // Up
  enablePad: true,
  drumPattern: "poprock"
});

fs.writeFileSync('output.wav', wav);

Agent Interface

Agents should call chord-synth --schema to get the full JSON tool specification:

chord-synth --schema

Returns:

{
  "tool": "chord-synth",
  "description": "Generate chord progression WAV files...",
  "input_schema": {
    "type": "object",
    "required": ["preset"],
    "properties": {
      "preset": { "type": "string", "description": "Named preset or custom chords..." },
      "bpm": { "type": "integer", "default": 120 },
      "instrument": { "type": "string", "enum": ["piano","guitar","violin",...] },
      ...
    }
  },
  "examples": [...]
}

List all available options:

chord-synth --list

Parameters

Parameter Type Default Description
preset string required Named preset ("I-V-vi-IV (Pop)") or custom chords ("C G Am/E F")
bpm int 120 Tempo
transpose int 0 Semitones (-11 to +11)
pattern int 1 Arp pattern index (see below)
rate string "1/8" Note rate: 1/1 1/2 1/4 1/8 1/16 1/32 (add T for triplet)
instrument string "piano" piano guitar violin flute clarinet cello bass
octaveRange int 1 1-4 octave span
baseOctave int 3 Starting MIDI octave
velocity int 90 MIDI velocity 1-127
swing float 0.5 0.5=straight, 0.66=medium, 0.75=heavy
loops int 2 Progression repetitions
enablePad bool true Sustained pad chord track
padOctave int 4 Pad voicing octave
padVolume float 0.12 Pad volume (0.0-0.3)
enableBass bool true Auto bass (slash chords set bass note)
enableDrums bool true Drum track
drumPattern string "poprock" See drum patterns below
reverbMix float 0.18 Reverb amount (0.0-0.5)

Named Presets

Category Presets
Pop/Rock I-V-vi-IV (Pop), I-vi-IV-V (50s), vi-IV-I-V (Sad), I-IV-V-IV (Rock), I-V-vi-iii-IV (Canon)
Jazz ii-V-I (Jazz), I-vi-ii-V (Jazz Turnaround), iii-vi-ii-V (Coltrane), Autumn Leaves, So What, Steely Dan
Neo-Soul/R&B Neo-Soul I, Neo-Soul II, R&B Smooth
Blues 12-Bar Blues, Minor Blues
Latin Bossa Nova, Girl from Ipanema, Andalusian Cadence, Royal Road (JP)
Modal/Ambient Dorian Vamp, Lydian Float, Ambient Pads
EDM EDM Anthem, Trance, House
Classic Pachelbel Canon, Gospel

Or use any custom chord string: "Fmaj7 Em7 Dm9 Cmaj7", "Am | Dm/F | E7 | Am", etc.

Arp Patterns

Index Name Index Name
0 Chord (Block) 11 Pinky-Thumb
1 Up 12 Thumb-Pinky
2 Down 13 1-3-5-3
3 Up-Down 14 1-5-3-5
4 Down-Up 15 1-5-8-5
5 Up-Down (No Repeat) 16 1-3-5-8-5-3
6 Down-Up (No Repeat) 17 Alberti Bass
7 Random 18 Stride
8 Random Walk 19 Broken 3rds
9 Outside-In 20 Pedal Tone
10 Inside-Out 21 Alternating Bass

Drum Patterns

8beat 16beat poprock acousticpop bossanova swing funk rnb waltz arpeggio none

Chord Notation

Roots: C C# Db D D# Eb E F F# Gb G G# Ab A A# Bb B

Qualities: (major) m 7 maj7 m7 dim aug sus2 sus4 9 m9 maj9 11 m11 13 6 m6 dim7 m7b5 add9 5 power

Slash chords: Am/E (Am chord, E bass note), C/G, Dm7/A

Separator: spaces or | both work. C G Am F = C | G | Am | F

Output

WAV PCM 16-bit mono 44100 Hz. Compatible with all DAWs, audio players, and audio processing tools.

License

MIT

About

Generate chord progression WAV files. 28 presets, 22 arp patterns, 7 instruments, slash chords, transposition. CLI + MCP server + Node.js module. Zero dependencies.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors