Skip to content

fvdijke/Pianoman

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

Pianoman v3 5 by Frank van Dijke

Pianoman v3.6.1

Piano chord progression editor with a dark-mode GUI.

Compose, play, analyse and save chord progressions using a clickable piano keyboard. Supports PC audio (sine wave) and MIDI output. Multilingual: English, Dutch, French, German.

Features

  • Clickable piano keyboard (1–5 octaves)
  • Recognises and names chords automatically (Major, Minor, 7th, 9th, Sus, dim, aug, …)
  • Chord progression editor: add, copy, reorder, remove chords (drag & drop)
  • Key detection with Roman numeral analysis (I – IV – V – I) — multilingual
  • Scale highlighter — marks notes of the detected key on the keyboard
  • Chord inversions — Root position, Inv 1, Inv 2, Inv 3 buttons
  • Best Voicing — picks the inversion with the least voice movement vs. the previous chord
  • Chord suggestions based on current key and last chord
  • Play back progressions (PC audio or MIDI)
  • Save/load progressions as JSON
  • Export to PDF (and import chord names from PDF)
  • MIDI import and export
  • 5 themes: Dark Gold, Midnight Blue, Forest, Classic, Crimson
  • Window position and settings stored in settings.ini

New in v3.6.1

Area Change
Performance _darken() and _font() results cached at module level
Performance scale_notes.index() replaced with O(1) dict lookups
Performance self._all_keys cached in draw_piano(); no more inline list concatenation
Performance canvas.coords() pre-fetched before draw loop in draw_saved_canvas()
Performance Change-detection in _apply_keyboard_visual() and _refresh_scale_highlight()
Performance Widget .get() calls batched in play_chord() and _play_song_thread()
Platform sounddevice import restricted to Windows; simpleaudio used on other platforms

New in v3.6

Feature Description
Multilingual analysis bar Key name and mode now translated (EN/NL/FR/DE)
Scale highlighter Toggle button marks in-scale keys blue, dims out-of-scale keys
Chord inversions Root / Inv 1 / Inv 2 / Inv 3 buttons below the piano
Best Voicing Finds the inversion closest to the previous chord (voice leading)
UI refactor Piano zone with header/footer; two-column action area; status bar

Requirements

pip install sounddevice mido python-rtmidi numpy reportlab

Running from source

python Pianoman.py

Windows executable

A pre-built Windows executable is available on the Releases page. No Python installation required.

Version history

Version Date Notes
3.6.1 2026-06-11 Performance optimisations; sounddevice Windows-only
3.6 2026-06-06 Scale highlighter, chord inversions, best voicing, multilingual analysis, UI refactor
3.5 2026-04-05 Add Chord; octave pulldown; volume slider per output; window state saved; PDF import; drag & drop
Earlier See source file header

Author

Frank van Dijke

About

Create, add, change, remove piano chords the easy way

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages