Core MVP (Phases 1-5) - COMPLETE:
- ✅ Full text editor with file operations, undo/redo, recent files
- ✅ Font selection and size adjustment (Ctrl+Wheel, Ctrl+Plus/Minus/0)
- ✅ Line-based chord detection with PyChord validation
- ✅ American and European notation support with conversion
- ✅ FluidSynth audio playback with GeneralUser-GS soundfont
- ✅ Clickable chords (left-click to play)
- ✅ Auto-play with BPM control (60-240 BPM)
- ✅ Play/Pause/Stop controls with threading
- ✅ Current chord highlighting during playback
- ✅ Settings persistence (font, BPM, notation, window geometry, recent files)
- ✅ Makefile and PyInstaller spec for packaging
Additional Features (Phases 7-13) - COMPLETE:
- ✅ Loop/repeat mode for playback
- ✅ Instrument/voicing selection (Piano, Guitar Standard, Drop D, DADGAD, etc.)
- ✅ Key signature selector in toolbar
- ✅ Time signature control (beats per measure and beat unit)
- ✅ Roman numeral chord notation support
- ✅ ChordPro directive support:
- ✅ BPM changes (
{tempo: 120}) - ✅ Time signature changes (
{time: 4/4}) - ✅ Key changes (
{key: C}) - ✅ Labels (
{label: intro}) - ✅ Loops (
{loop: intro 3})
- ✅ BPM changes (
- ✅ Beat count annotations (e.g.,
C*2for 2 beats) - ✅ About dialog
- ✅
//line comments - ✅ Support NC for rests/pauses
Remaining Tasks:
- Test on target platforms
- Windows 10/11 testing
- Ubuntu 22.04/Fedora 39 testing
- Verify audio playback works
- Check file operations
Tasks:
- Create preferences dialog window
- Custom soundfont path selection (file picker)
- MIDI velocity (volume) slider
- Default chord duration preference
- Auto-save preferences to JSON file
Tasks:
- Keyboard shortcuts reference dialog
- Help → Keyboard Shortcuts (show reference dialog)
- List all shortcuts in organized table
- File operations, editing, playback, etc.
- Copy reference to clipboard option
Keyboard Shortcuts to Document:
File Operations:
Ctrl+N New File
Ctrl+O Open File
Ctrl+S Save
Ctrl+Shift+S Save As
Ctrl+Q Quit
Editing:
Ctrl+Z Undo
Ctrl+Y Redo
Ctrl+C Copy
Ctrl+V Paste
Ctrl+X Cut
Ctrl+A Select All
View:
Ctrl+Plus Increase Font Size
Ctrl+Minus Decrease Font Size
Ctrl+0 Reset Font Size
Ctrl+Wheel Zoom In/Out
Playback:
Click Chord Play Single Chord
Tasks:
- Create transpose dialog UI
- Numeric spinner: -12 to +12 semitones
- Preview button (show what chords will become)
- Apply button (transpose all chords in document)
- Tools → Transpose menu item
Tasks:
-
Metronome click track
- Toggle button in toolbar
- Play click sound on each beat during auto-play
- Sync with BPM and time signature
- Independent volume control
- Auto count-in (1 bar) when metronome enabled
-
Capo support (global, affects playback only)
- Toolbar spinner: "Capo: [-12 to +12]" (or -24 to +24)
- Transposes playback pitch, NOT display
- Text shows: C, Am, F, G (unchanged)
- Positive values (like capo): Capo +2 plays D, Bm, G, A
- Negative values (like downtuning): Capo -2 plays Bb, Gm, Eb, F
- Use cases:
- Match vocalist's range without rewriting chart
- Play along with recording in different key
- Simulate guitar downtuning
- No
{capo:}directive - global UI control only
-
Global tempo/speed percentage slider
- Slider range: 50% to 150% (or 25% to 200%)
- Default: 100%
- Label: "Speed: 75%" or "Tempo Scale: 75%"
- Multiplies ALL tempos proportionally:
- Initial BPM slider value
- All
{tempo: N}directives in the song
- Preserves tempo structure and changes
- Perfect for practice: slow down entire song while keeping tempo variations
- Optional keyboard shortcuts:
[decrease 5%,]increase 5%
Tasks:
- Export song to MIDI file
- File → Export to MIDI menu item
- Convert detected chords to MIDI notes
- Respect tempo, time signature, beat counts
- Respect loops and labels
- Use selected voicing/instrument
Tasks:
-
Add arpeggiation patterns for chords
- Different arpeggio styles: up, down, up-down, pattern-based
- Rhythm patterns: whole notes, quarter notes, eighth notes, etc.
- Pattern selector in toolbar or preferences
- Elevates from simple chord playback to full backing track
-
Strumming patterns (for guitar voicings)
- Up/down strum patterns
- Timing variations
- Accent patterns
Tasks:
- Display chord diagrams
- Show guitar/piano fingering diagrams for detected chords
- Popup on hover or click
- Support for different voicings/positions
- Visual representation of fretboard or keyboard
Tasks:
- Generate guitar tablature from chord progression
- Use existing guitar voicing data (fingering patterns already known)
- Combine with timing information (beat counts, tempo)
- Export to text-based tab format or ASCII art
- Support for different tunings (standard, drop D, DADGAD, etc.)
- File → Export to Tab menu item
- Could also display tabs inline in the editor
Tasks:
- Render backing track to audio file
- File → Export to WAV/MP3 menu item
- Use FluidSynth's audio rendering capability
- Respect all playback settings (tempo, loops, patterns, etc.)
- Progress bar during rendering
- Audio format options: WAV (lossless), MP3 (compressed)
Tasks:
- Volume control via directives
{v: 80}or{volume: 80}directive (MIDI velocity 0-127)- Apply to subsequent chords until changed
- Default velocity configurable in preferences
- Useful for creating dynamic backing tracks
Tasks:
- Per-section rhythm/arpeggio patterns
{pattern: arpeggio-up}- ascending arpeggio{pattern: arpeggio-down}- descending arpeggio{pattern: strum-down}- downstroke strum{pattern: strum-alternate}- up-down strumming{pattern: whole}- whole note (default)- Pattern library extensible
- Different patterns for intro/verse/chorus
Features that may be considered for future versions but are not currently planned:
- Audio device selection - Allow user to choose output device under Playback menu (requires
sounddevicelibrary for enumeration) - Export to PDF/image - Print/export chord sheets as PDF or image files
- Dark mode - UI theme
- Multiple tabs - Work on multiple songs simultaneously
- Multi-track support - Separate tracks for melody, chords, bass (complex, requires style programming)
- Playback through MIDI device - Send MIDI output to external devices instead of just FluidSynth
Core Features:
- Application runs on Windows and Linux as standalone executable
- Detects chords in American, European, and Roman numeral notation
- Plays chords with acceptable audio quality
- UI is responsive (no freezing during playback)
- File operations work correctly (load/save)
- Auto-play feature works with adjustable BPM
- Stop button immediately stops all audio
- Loop mode works
- Instrument/voicing selection works
- ChordPro directives work (tempo, time signature, key, labels, loops)
- Beat count annotations work
Remaining - Near Term:
- Comment syntax (
//) - NC (No Chord) notation for rests
- Transpose dialog
- Keyboard shortcuts help
- Preferences dialog
- Metronome (with auto count-in)
- Capo support (playback pitch shift)
- Global tempo/speed percentage slider
- Executable tested on Windows and Linux
- Application starts in <3 seconds
- Executable size is reasonable
Remaining - Longer Term:
- Export to MIDI
- Export to audio (WAV/MP3)
- Arpeggiation/backing track patterns
- Custom rhythm patterns per section
- Volume/dynamics control (
{v: 80}) - Chord diagrams
- Guitar tab generation
- PyInstaller Documentation: https://pyinstaller.org/
- PyChord Repository: https://github.com/yuma-m/pychord
- Tkinter Reference: https://docs.python.org/3/library/tkinter.html
- FluidSynth Documentation: https://www.fluidsynth.org/