Skip to main content

Real-time MIDI chord reader GUI for Roland J-6 and other MIDI devices

Project description

J-6 Chords

A lightweight desktop GUI that reads live MIDI notes from a Roland J-6 (or any available MIDI input), detects chord names, and displays both the chord and pressed keys on a piano-style keyboard.

Features

  • Auto-detects a MIDI input port (prefers names containing J-6/J6)
  • Real-time chord detection from held pitch classes
  • Displays:
    • detected chord name (for example: C maj7, D min9, G 13)
    • currently held note names (for example: C4 E4 G4)
    • an on-screen keyboard (range C3 to C5) with pressed-key highlighting
  • Auto-reconnects when the MIDI device is disconnected/reconnected

Requirements

  • Python 3.10+
  • A MIDI input device (Roland J-6 recommended)
  • OS MIDI support (CoreMIDI/ALSA/etc.)
  • uv package manager

Setup (uv)

# install dependencies from pyproject.toml
uv sync

Run

uv run j6-chords-gui

Backward-compatible launcher still works:

uv run python j6_chord_gui.py

Build package

./scripts/build_package.sh

Build artifacts are written to dist/.

Publish

Automatic publish is handled by GitHub Actions on each published GitHub Release:

  • Workflow: .github/workflows/publish-pypi.yml
  • Details and credential checklist: PUBLISHING_TODO.md

Manual publish fallback (token-based):

PYPI_API_TOKEN=... ./scripts/publish_package.sh

File Overview

  • pyproject.toml: project metadata, dependencies, and build configuration
  • src/j6_chords/app.py: main application (MIDI input, chord detection, GUI rendering)
  • j6_chord_gui.py: backward-compatible launcher
  • scripts/build_package.sh: local build and package validation
  • .github/workflows/publish-pypi.yml: CI build/publish workflow
  • PUBLISHING_TODO.md: required credentials and where to configure them

Notes

  • If multiple MIDI devices are connected, the app uses the first matching J-6 port; otherwise it falls back to the first available MIDI input.
  • Chord naming is pattern-based and focuses on common qualities/extensions.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

j6_chords-0.1.0.tar.gz (6.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

j6_chords-0.1.0-py3-none-any.whl (5.9 kB view details)

Uploaded Python 3

File details

Details for the file j6_chords-0.1.0.tar.gz.

File metadata

  • Download URL: j6_chords-0.1.0.tar.gz
  • Upload date:
  • Size: 6.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for j6_chords-0.1.0.tar.gz
Algorithm Hash digest
SHA256 656118a875f31620f22c02e693adfff758314a6ed015f0fcaf2ce4bae6f9a074
MD5 22f0d85f75a7402677878295643d57e0
BLAKE2b-256 2aa2cc7460dd51d2889dcfd1080ad0e0ad3809ee9dada7a9f792a1e3e23a8cb3

See more details on using hashes here.

Provenance

The following attestation bundles were made for j6_chords-0.1.0.tar.gz:

Publisher: publish-pypi.yml on oranginaround/chords_visualiser

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file j6_chords-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: j6_chords-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 5.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for j6_chords-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d88fc4deeba94a604e4b1a48045990cead380a16e6152297dd7f9e54b046f466
MD5 b98aaf5259f019ab15e99ca3a1f6c0bf
BLAKE2b-256 ad7dd7befb2da1c6f5f6bfec763a9f16a0600436cb6fdf15d441492fde4db96c

See more details on using hashes here.

Provenance

The following attestation bundles were made for j6_chords-0.1.0-py3-none-any.whl:

Publisher: publish-pypi.yml on oranginaround/chords_visualiser

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page