mirror of
https://github.com/kennethreitz/pytheory.git
synced 2026-06-05 06:46:14 +00:00
6c83dbe5aa
Fretboard string lists and Fingering positions/string-names now read low-to-high (lowest-pitched string first), matching how chord diagrams and tablature are conventionally written. Pass high_to_low=True to any fretboard constructor to restore the pre-0.43 high-to-low behavior. Design: each board keeps a private canonical (high-to-low) tone store so the fingering scorer and GUITAR_OVERRIDES table stay untouched; a single _orient() helper re-orients at the user-facing boundary (and, being self-inverse, also canonicalizes custom tuning/position input). Fingering carries its own orientation flag and presents oriented positions/names via properties. The fingering cache key now includes orientation so the two orderings don't collide. to_tab() and Part.strum() now sort by pitch internally, so their output is identical regardless of board orientation. - All 25 instrument presets gain a high_to_low param, routed through a canonical build path. - Tests updated for the new default; added orientation-specific tests. - Docs/examples flipped to low-to-high; chord_charts.py example now uses the built-in Fingering.tab() instead of a hand-rolled renderer. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
51 lines
1.3 KiB
TOML
51 lines
1.3 KiB
TOML
[project]
|
|
name = "pytheory"
|
|
version = "0.43.0"
|
|
description = "Music Theory for Humans"
|
|
readme = "README.md"
|
|
license = "MIT"
|
|
requires-python = ">=3.10"
|
|
authors = [
|
|
{ name = "Kenneth Reitz", email = "me@kennethreitz.org" },
|
|
]
|
|
classifiers = [
|
|
"Development Status :: 3 - Alpha",
|
|
"Intended Audience :: Developers",
|
|
"Intended Audience :: Education",
|
|
"Topic :: Multimedia :: Sound/Audio",
|
|
"Topic :: Multimedia :: Sound/Audio :: Analysis",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Programming Language :: Python :: 3.13",
|
|
]
|
|
dependencies = [
|
|
"sounddevice",
|
|
"scipy",
|
|
"rich>=14.3.3",
|
|
]
|
|
|
|
[project.urls]
|
|
Homepage = "https://github.com/kennethreitz/pytheory"
|
|
Documentation = "https://pytheory.kennethreitz.org"
|
|
Repository = "https://github.com/kennethreitz/pytheory"
|
|
Issues = "https://github.com/kennethreitz/pytheory/issues"
|
|
|
|
[project.scripts]
|
|
pytheory = "pytheory.cli:main"
|
|
|
|
[dependency-groups]
|
|
dev = ["pytest"]
|
|
docs = ["sphinx", "myst-parser"]
|
|
|
|
[build-system]
|
|
requires = ["setuptools"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[tool.pytest.ini_options]
|
|
markers = ["slow: marks tests as slow (deselect with '-m \"not slow\"')"]
|
|
|
|
[tool.setuptools]
|
|
packages = ["pytheory"]
|