Skip to content

Repository files navigation

ChordCraft

CI

A multi-platform tool for bidirectional chord-fingering conversion, supporting guitar and other stringed instruments.

Features

  • Chord → Fingering: Input a chord name (e.g., "Abm7") and get multiple fingering options
  • Fingering → Chord: Input tab notation (e.g., "x32010") and identify the chord
  • Multiple voicing types: Core, Full, and Jazzy voicings for different playing contexts
  • Position-aware: Find fingerings near a specific fret position
  • Multi-instrument: Guitar and ukulele fully supported, designed for bass, mandolin, and more

Project Status

Functional - Core features implemented (CLI + Web App)

Installation

This project uses mise-en-place as dependency and task orchestrator.

# Clone the repository
git clone https://codeberg.org/kblcuk/chordcraft.git
cd chordcraft

# Install tools (Rust, Bun, wasm-pack)
mise install

# Build the CLI tool
mise run cli:build-release

# Or install it globally
mise run cli:install

# Run the CLI tool
chordcraft -- find "Cmaj7"

Usage

# Find fingerings for a chord (guitar by default)
chordcraft find "Abm7"
chordcraft find "Abm7" --limit 3
chordcraft find "Abm7" --position 7        # Prefer fingerings near 7th fret
chordcraft find "Abm7" --capo 3            # With capo on 3rd fret
chordcraft find "Abm7" --context band      # For band playing (lighter voicings)

# Ukulele support
chordcraft find "C" --instrument ukulele
chordcraft find "Am7" --instrument ukulele --capo 2

# Identify chord from fingering
chordcraft name "x32010"                   # Guitar (default)
chordcraft name "0003" --instrument ukulele

# Chord progressions (optimize transitions)
chordcraft progression "Cmaj7 Am7 Dm7 G7"
chordcraft progression "C G Am F" --instrument ukulele

Development

See CLAUDE.md for detailed implementation plan and architecture decisions.

# Run all tests
mise run rust:test

# Format code
mise run rust:fmt

# Run lints
mise run rust:clippy

# Run all Rust checks (format, clippy, tests)
mise run rust:checks

# Build web app (builds WASM + SvelteKit app)
mise run build

# Run web dev server
mise run web:dev

# Run all CI checks locally
mise run ci

# Quick checks without tests
mise run ci:quick

Project Structure

  • crates/core - Core music theory library (Rust)
  • crates/cli - Command-line interface tool
  • crates/wasm - WebAssembly bindings for web
  • web/ - SvelteKit web application

Contributing

This project is in early development. Contributions welcome!

Acknowledgements

  • SVG favicon from svgrepo
  • Open graph image by nano banana

About

Cli tool and webapp to find chord names, fingerings and progressions on guitar, bass and other stringed instruments

Topics

Resources

Stars

Watchers

Forks

Used by

Contributors

Languages