From 3b5a07dfce2ef601b114432f042569e2edc960a6 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Wed, 25 Mar 2026 04:20:50 -0400 Subject: [PATCH] Add changelog with retroactive history, include in docs Co-Authored-By: Claude Opus 4.6 (1M context) --- CHANGELOG.md | 102 +++++++++++++++++++++++++++++++++++++++ docs/changelog.rst | 117 +++++++++++++++++++++++++++++++++++++++++++++ docs/index.rst | 6 +++ 3 files changed, 225 insertions(+) create mode 100644 CHANGELOG.md create mode 100644 docs/changelog.rst diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..a24fa33 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,102 @@ +# Changelog + +All notable changes to PyTheory are documented here. + +## 0.8.3 + +- Add `Chord.symbol` property for standard shorthand notation (Cmaj7, Dm, G7, m7b5, etc.) +- Add `Key.common_progressions()` to realize all named progressions in a key +- Add CLI commands: `modes`, `circle`, `progressions` + +## 0.8.2 + +- Use flat spellings in CHARTS `acceptable_tone_names` (e.g. Bbm now shows Bb/Db/F instead of A#/C#/F) + +## 0.8.1 + +- Use musically correct flat spellings in flat keys (F major gives Bb, not A#) + +## 0.8.0 + +- Add `Fretboard.scale_diagram()` for visual scale layouts on any instrument +- Add `play_progression()` for sequential chord playback with gaps +- Add cookbook documentation page with practical recipes +- Curated guitar fingering overrides for common open chords +- Fingering memoization with bounded cache, barre detection, 4-fret span constraint +- API ergonomics: `Fretboard.chord()`, convenience constructors, slow test markers + +## 0.7.0 + +- Add `Fretboard.chord()` method for named chord lookups +- Improve fingering algorithm with better voicing selection +- Rewrite all documentation in REPL style with verified output + +## 0.6.1 + +- Fix sawtooth and triangle wave generation +- Add WAV export via `save()` +- Add CLI tests and play module tests +- Skip play module tests when PortAudio is not available + +## 0.6.0 + +- Support flat note names (Db, Bb, Eb, etc.) throughout the system +- Add `Fingering` class for labeled chord fingerings +- Add `pytheory play` CLI command for playing notes and chords +- Add 12 example scripts showcasing pytheory features +- Expand documentation with undocumented features and CLI guide + +## 0.4.1 + +- Add `--temperament` flag to CLI tone command +- Add Symbolic Pitch section to tones docs + +## 0.4.0 + +- Add key signatures, scale diagrams, chord building, and progression analysis +- Add CLI tool (`pytheory tone`, `pytheory chord`, `pytheory key`, etc.) +- Add Jupyter notebook tutorial +- Improve test coverage from 93% to 97% (476 tests) +- Add type hints, docstrings, and property caching throughout + +## 0.3.2 + +- Add type hints and docstrings throughout the library + +## 0.3.1 + +- Add capo support, chord merging (`+`), tritone substitution +- Add secondary dominants, Nashville number system +- Add more common progressions (blues, jazz, flamenco, modal) + +## 0.3.0 + +- Add interval naming (`Tone.interval_to()`) +- Add MIDI conversion (`Tone.midi`, `Tone.from_midi()`) +- Add `Tone.from_frequency()`, `Tone.transpose()` +- Add `Chord.root`, `Chord.quality` properties +- Add `Chord.from_name()`, `Chord.from_intervals()`, `Chord.from_midi_message()` +- Add `Interval` constants (MINOR_THIRD, PERFECT_FIFTH, etc.) +- Add `PROGRESSIONS` dict with common named progressions +- Add `Tone.enharmonic` property +- Add inversions, harmonize, and Roman numeral progressions +- Add `Key` class with detection, signatures, relative/parallel keys +- Add `Scale.detect()` and `Chord.from_tones()` convenience constructors +- Add 25 instrument presets (mandolin family, violin family, banjo, harp, world instruments, keyboard) +- Add `Tone.circle_of_fifths()` and `Tone.circle_of_fourths()` +- Add chord identification (17 types), voice leading, tension scoring +- Add beat frequencies, Plomp-Levelt dissonance model, harmony scoring + +## 0.2.0 + +- Add `Fretboard` class for guitar fretboards +- Add `play()` function with sine, sawtooth, and triangle wave synthesis +- Add chord harmony and dissonance calculations +- Modernize project structure (pyproject.toml, sounddevice) + +## 0.1.0 + +- Initial release +- Western 12-tone system with tones, scales, and basic chord support +- Temperament support (equal, Pythagorean, meantone) +- Indian (Hindustani), Arabic, Japanese, Blues, and Gamelan systems diff --git a/docs/changelog.rst b/docs/changelog.rst new file mode 100644 index 0000000..049d453 --- /dev/null +++ b/docs/changelog.rst @@ -0,0 +1,117 @@ +Changelog +========= + +All notable changes to PyTheory are documented here. + +0.8.3 +----- + +- Add ``Chord.symbol`` property for standard shorthand notation (Cmaj7, Dm, G7, m7b5, etc.) +- Add ``Key.common_progressions()`` to realize all named progressions in a key +- Add CLI commands: ``modes``, ``circle``, ``progressions`` + +0.8.2 +----- + +- Use flat spellings in CHARTS ``acceptable_tone_names`` (e.g. Bbm now shows Bb/Db/F instead of A#/C#/F) + +0.8.1 +----- + +- Use musically correct flat spellings in flat keys (F major gives Bb, not A#) + +0.8.0 +----- + +- Add ``Fretboard.scale_diagram()`` for visual scale layouts on any instrument +- Add ``play_progression()`` for sequential chord playback with gaps +- Add cookbook documentation page with practical recipes +- Curated guitar fingering overrides for common open chords +- Fingering memoization with bounded cache, barre detection, 4-fret span constraint +- API ergonomics: ``Fretboard.chord()``, convenience constructors, slow test markers + +0.7.0 +----- + +- Add ``Fretboard.chord()`` method for named chord lookups +- Improve fingering algorithm with better voicing selection +- Rewrite all documentation in REPL style with verified output + +0.6.1 +----- + +- Fix sawtooth and triangle wave generation +- Add WAV export via ``save()`` +- Add CLI tests and play module tests +- Skip play module tests when PortAudio is not available + +0.6.0 +----- + +- Support flat note names (Db, Bb, Eb, etc.) throughout the system +- Add ``Fingering`` class for labeled chord fingerings +- Add ``pytheory play`` CLI command for playing notes and chords +- Add 12 example scripts showcasing pytheory features +- Expand documentation with undocumented features and CLI guide + +0.4.1 +----- + +- Add ``--temperament`` flag to CLI tone command +- Add Symbolic Pitch section to tones docs + +0.4.0 +----- + +- Add key signatures, scale diagrams, chord building, and progression analysis +- Add CLI tool (``pytheory tone``, ``pytheory chord``, ``pytheory key``, etc.) +- Add Jupyter notebook tutorial +- Improve test coverage from 93% to 97% (476 tests) +- Add type hints, docstrings, and property caching throughout + +0.3.2 +----- + +- Add type hints and docstrings throughout the library + +0.3.1 +----- + +- Add capo support, chord merging (``+``), tritone substitution +- Add secondary dominants, Nashville number system +- Add more common progressions (blues, jazz, flamenco, modal) + +0.3.0 +----- + +- Add interval naming (``Tone.interval_to()``) +- Add MIDI conversion (``Tone.midi``, ``Tone.from_midi()``) +- Add ``Tone.from_frequency()``, ``Tone.transpose()`` +- Add ``Chord.root``, ``Chord.quality`` properties +- Add ``Chord.from_name()``, ``Chord.from_intervals()``, ``Chord.from_midi_message()`` +- Add ``Interval`` constants (MINOR_THIRD, PERFECT_FIFTH, etc.) +- Add ``PROGRESSIONS`` dict with common named progressions +- Add ``Tone.enharmonic`` property +- Add inversions, harmonize, and Roman numeral progressions +- Add ``Key`` class with detection, signatures, relative/parallel keys +- Add ``Scale.detect()`` and ``Chord.from_tones()`` convenience constructors +- Add 25 instrument presets (mandolin family, violin family, banjo, harp, world instruments, keyboard) +- Add ``Tone.circle_of_fifths()`` and ``Tone.circle_of_fourths()`` +- Add chord identification (17 types), voice leading, tension scoring +- Add beat frequencies, Plomp-Levelt dissonance model, harmony scoring + +0.2.0 +----- + +- Add ``Fretboard`` class for guitar fretboards +- Add ``play()`` function with sine, sawtooth, and triangle wave synthesis +- Add chord harmony and dissonance calculations +- Modernize project structure (pyproject.toml, sounddevice) + +0.1.0 +----- + +- Initial release +- Western 12-tone system with tones, scales, and basic chord support +- Temperament support (equal, Pythagorean, meantone) +- Indian (Hindustani), Arabic, Japanese, Blues, and Gamelan systems diff --git a/docs/index.rst b/docs/index.rst index 0e798ed..b499301 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -100,3 +100,9 @@ It also works from the command line:: api/charts api/play api/systems + +.. toctree:: + :maxdepth: 1 + :caption: Project + + changelog