Skip to content
Jim Menard edited this page May 2, 2026 · 1 revision

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Repository Overview

This is the GitHub wiki for KeyMaster, a JUCE-based C++ MIDI processing and patching application. The repository contains only Markdown documentation files — there is no source code, build system, or tests here.

Note: The wiki content was originally copied from an older wxWidgets/PortMidi version of KeyMaster. Some pages (particularly the Tutorial) still reference that older version and need to be updated for the JUCE rewrite.

Application Domain

KeyMaster routes and transforms MIDI data in real time. The core object model:

  • Instrument — a named MIDI input or output port
  • Song — a named, ordered list of patches; also holds tempo and clock settings
  • Patch — a named collection of connections; has optional start/stop named messages sent on entry/exit
  • Connection — links one input instrument to one output instrument; applies channel filtering/remapping, zone (key split), transpose, velocity curve, sysex filter, and controller mappings
  • Set List — an ordered list of songs for performance; "All Songs" is a built-in, always-present set list
  • Named Message — a stored list of MIDI bytes that can be sent via triggers or patch start/stop; sent to all outputs unchanged
  • Trigger — watches for a MIDI message or function key and fires an action (next/prev song or patch, panic, send named message)

Project data is stored in SQLite databases (.km files).

Wiki Pages

File Content
Home.md Overview, requirements, installation, running
Components.md Full reference for all objects listed above
Patches.md Detailed connection processing: channels, controller mappings, velocity curves, MIDI data flow
Tutorial.md Step-by-step walkthrough (partially outdated — still uses text-based editing examples)
Tips-and-Tricks.md Creative use patterns
Screenshots.md Annotated main-window screenshot
Changes.md Version history
To-Do.md Known bugs and planned/desired features
_Sidebar.md GitHub wiki navigation sidebar

Editing Guidelines

  • Line length: wrap prose to 76–80 characters.
  • All pages are GitHub-flavored Markdown.
  • Inter-page links use GitHub wiki syntax: [[PageName]] or [[PageName#anchor]].
  • The sidebar (_Sidebar.md) uses standard Markdown links, not wiki syntax.
  • Images live in images/.

Clone this wiki locally