Skip to main content
Glama

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/

Related MCP server: chord-player-mcp

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides 547 MCP tools for AI agents to programmatically control the openDAW browser-based digital audio workstation, enabling creation and manipulation of music projects including tracks, instruments, effects, MIDI, automation, and rendering.
    Apache 2.0
  • A
    license
    A
    quality
    B
    maintenance
    A game-agnostic MCP toolkit for composing chiptune/retro MIDI and rendering game audio, enabling AI agents to generate multi-track MIDI files and render them to OGG/WAV.
    7
    MIT