{"repo":"2CoderOK/jp-trainer","free":true,"listed":false,"github":"https://github.com/2CoderOK/jp-trainer","clone":"git clone https://github.com/2CoderOK/jp-trainer.git","description":"Interactive MIDI-based Jazz Piano Trainer for Python (with built-in piano sampler).","language":"Python","stars":39,"topics":["jazz","midi","mido","music","musictheory","piano","pygame","python","sampler","trainer"],"license":"MIT","category":"media-processing","readme_excerpt":"Jazz Piano Trainer A desktop application to help you learn jazz piano modes and chords using your MIDI keyboard. Press NEXT to get a question, play the notes on your keyboard, and the app reveals the answer automatically once you hit all the right keys. Watch the walkthrough video: --- Features - Modes & Chords — randomised questions covering all 12 keys, 7 modes, and a curated set of jazz chords - MIDI input — connect one or more MIDI keyboards; correct notes light up green, wrong notes red on the virtual keyboard - Virtual piano keyboard — resizable, scrollable, supports 1–7 octaves - Built-in sampler — plays back audio samples for each note via piano-sampler; can be disabled - Persistent settings — MIDI ports, sampler options, and display preferences saved to jptrainer.json --- Dependencies Package Purpose --- --- piano-sampler Audio sample playback engine (sister project) mido + python-rtmidi MIDI input handling pygame Audio mixing Pillow Image loading and keyboard scaling tkinter (stdlib) GUI framework --- Installation With uv (recommended) With pip --- Usage 1. Launch the app — the virtual keyboard and dark-themed UI open automatically. 2. Open ⚙ Settings (gear icon, top-right of the header) to: - Select which MIDI input port(s) to use - Configure the sampler (enable/disable, velocity, sustain, polyphony, sample path) - Set how many octaves to display (1–7) 3. Choose MODES or CHORDS from the mode selector in the header. 4. Click ▶ NEXT — a question appears (e.g. \"G Dori","default_branch":null,"files":null,"tree":[],"storefront":"/r/2CoderOK","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/2CoderOK/jp-trainer/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}